VxTerm:C++ MFC,在工具栏中增加Edit/ComboBox等组件,打造一个地址栏/搜索栏功能

VxTerm软件可以在本站链接下载:唯一国产化SSH工具下载,单文件纯绿色不需要安装,替代SecureCRT
在软件的主界面中,增加了一个地址栏功能。
本人的文章内容都是经本人亲自实现并验证成功的干货,关注我,互相交流学习,共同进步!
1、首先,得先假设您已实现了一个工具栏。
如果您还没有实现这个,那么就关注我吧,以后我应该会增加文章介绍如何实现这么一个工具栏的。
2、工具栏实现后,希望在工具栏中增加Edit/Combo等组件,实现类似于地址栏、搜索栏的功能。
实现步骤:
1、先在资源管理器中添加一个toolbar IDR_TOOLBAR_QuickConnect,在里面增加相应的占位图标

像我这样,中间那两个图标,一个是用于连接协议ID为ID_PROTOCOL,一个是用于地址栏ID为ID_ADDRESS。
2、在头文件中定义一个新的工具栏:
CMFCToolBar m_wndQuickConnectBar;
同时定义两个变量,用于之后的组件管理:
CMFCToolBarComboBoxButton * m_QuickConnectComboProtocol = 0;CMFCToolBarComboBoxButton * m_QuickConnectComboAddress = 0;
3、初始化
if (!m_wndQuickConnectBar.Create(this) || !m_wndQuickConnectBar.LoadToolBar(IDR_TOOLBAR_QuickConnect)){TRACE0("未能创建快速连接工具栏\n");return -1; }m_wndQuickConnectBar.ReplaceButton(ID_PROTOCOL, CMFCToolBarComboBoxButton(ID_PROTOCOL, 0, CBS_DROPDOWNLIST, 80));m_QuickConnectComboProtocol =(CMFCToolBarComboBoxButton*) m_wndQuickConnectBar.GetButton(1); //第1个图标为Protocolm_QuickConnectComboProtocol->AddItem(L"TELNET");m_QuickConnectComboProtocol->AddItem(L"SSH");m_QuickConnectComboProtocol->SelectItem(L"SSH");m_wndQuickConnectBar.ReplaceButton(ID_ADDRESS, CMFCToolBarComboBoxButton(ID_ADDRESS, 0, CBS_DROPDOWN, 150));m_QuickConnectComboAddress = (CMFCToolBarComboBoxButton*)m_wndQuickConnectBar.GetButton(2); //第2个图标为Addressm_wndQuickConnectBar.SetWindowText(L"快速连接");
在代码里,由于在toolbar中增加了2个占位图标,所以可以使用ReplaceButton对它们一一进行替换。如果不使用占位图标方式,可以用InsertButton来添加,需自行从帮助中找到关于它的调用方法。
ReplaceButton的原型定义:
int ReplaceButton(UINT uiCmd,const CMFCToolBarButton& button,BOOL bAll=FALSE);
参数
uiCmd
[in] 要替换的按钮的命令 ID。
button
[in] 对要插入的 CMFCToolBarButton 的引用。
bAll
[in] 一个布尔值,该值指定是否替换具有 uiCmd 指定的命令 ID 的所有按钮。 如果此参数为 TRUE,则替换具有指定命令 ID 的所有按钮。 否则,将替换第一个按钮。
返回值
已替换的按钮数。 如果工具栏上不存在具有指定命令 ID 的按钮,此方法将返回 0。
注解
如果要添加无法从资源加载的工具栏按钮,请调用此方法。 可以在设计时创建占位符按钮,并在初始化工具栏时将该按钮替换为自定义按钮。 有关使用此方法的示例,请参阅 VisualStudioDemo 示例。
4、在地址栏中增加消息响应,实现输入内容后按回车执行功能模块
在主程序的主消息循环模块中,增加特定按钮的点击响应:在toolbar中前后两个图标分别为ID_QuickConnect_Open和ID_DoQuickConnectFromBar
BEGIN_MESSAGE_MAP(CVxTermApp, CWinAppEx)
。。。ON_COMMAND(ID_QuickConnect_Open, &CVxTermApp::OnQuickconnect)ON_COMMAND(ID_DoQuickConnectFromBar, &CVxTermApp::OnDoQuickconnectFromBar)
。。。
END_MESSAGE_MAP()
这两个消息响应正确执行后,咱们能确定可以在此模块中对中间的两个ID_PROTOCOL和ID_ADDRESS也能响应相应的消息,比如按回车键。
在此模块下面增加
BOOL CVxTermApp::PreTranslateMessage(MSG* pMsg)
{switch (pMsg->message){case WM_KEYDOWN:{if (pMsg->wParam == VK_RETURN){HWND p = GetFocus(); //获取当前的输入焦点CMainFrame* pM = (CMainFrame*)theApp.m_pMainWnd;CMFCToolBarComboBoxButton * p2 = pM->m_QuickConnectComboAddress;CEdit* p22 = p2->GetEditCtrl(); //获取地址栏中的Edit组件的对象if (p == p22->GetSafeHwnd()) //判断当前焦点是否在此Edit组件对象中{OnDoQuickconnectFromBar(); //执行return 1;}}}break;
}return CWinAppEx::PreTranslateMessage(pMsg);
}
至此,我们实现了:
在工具栏中增加4个功能组件和相应的操作响应:
(1)打开快速连接的界面
(2)直接在工具栏中选择连接协议
(3)直接在工具栏中输入IP和端口等信息
(4)在地址输入框中按回车,或者是点击第4个图标开始执行
相关文章:
VxTerm:C++ MFC,在工具栏中增加Edit/ComboBox等组件,打造一个地址栏/搜索栏功能
VxTerm软件可以在本站链接下载:唯一国产化SSH工具下载,单文件纯绿色不需要安装,替代SecureCRT 在软件的主界面中,增加了一个地址栏功能。 本人的文章内容都是经本人亲自实现并验证成功的干货,关注我,互相交…...
【Android】屏幕锁
屏幕锁,就是锁住屏幕不让用户误触摸,从开发者的角度看就是不响应用户的点击事件。 屏幕锁界面 可以自己创建一个布局文件,或者直接创建一个View(例如ImageView)。 参数LayoutParams mLayoutParams new LayoutParam…...
springCloud gateway 防止XSS漏洞
springCloud gateway 防止XSS漏洞 一.XSS(跨站脚本)漏洞详解1.XSS的原理和分类2.XSS漏洞的危害3.XSS的防御 二.Java开发中防范XSS跨站脚本攻击的思路三.相关代码(适用于spring cloud gateway)1.CacheBodyGlobalFilter.java2.XssRequestGlobalFilter.java…...
美赛摘要写作重点
摘要是论文最重要的部分。竞赛要求每篇论文的首页为摘要页,如果摘要写得不好,即使有好的模型和解答,论文也将难以通过鉴别阶段的初审而进入下一阶段。 根据MCM的竞赛规则,摘要应该包含以下内容: 赛题重述与阐明&#…...
RUST笔记: 动态链接库的创建和使用
生成动态链接库 // https://github.com/vvvm23/funny-shapes # 项目元信息 [package] name "funnyshapes" # 项目名称 version "0.1.0" # 版本号 edition "2021" # Rust语言版本# 更多配置信息可查阅࿱…...
「阿里云」幻兽帕鲁个人服务器已上线,3分钟快速搭建
基于阿里云搭建幻兽帕鲁服务器方法,1到2分钟部署完成,稳定运行无卡顿,阿里云服务器网aliyunfuwuqi.com分享保姆级手把手教程,基于阿里云计算巢、云服务器或无影云桌面都可以: 基于阿里云幻兽帕鲁服务器创建教程 基于…...
@ 代码随想录算法训练营第6周(C语言)|Day36(贪心)
代码随想录算法训练营第6周(C语言)|Day36(贪心) Day36、贪心(包含题目 ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间 ) 435. 无重叠区间 题目描述 给定一个区间的集合,找到需要…...
数组打印杨辉三角
签名:但行好事,莫问前程。 文章目录 前言一、杨辉三角的概念二、二维数组打印杨辉三角1、创建二维数组2、使用for循环,初始化外层元素3、给数组赋值3.1给数组每行首末元素赋值为13.1给数组每行非首末元素赋值 三、杨辉三角全代码总结 前言 记…...
【操作系统·考研】文件系统
1.概述 文件系统(File System)提供高效和便捷的磁盘访问,以便允许存储、定位、提取数据。 严格来说,VFS并不是一种实际的FS,它只存在于内存中,不存在与任何外存空间中。 VFS在系统启动时建立,在系统关闭时消亡。 2.结…...
中国传媒网CEO徐晓艺荣膺第九届金鸥奖“2023年度最佳创新人物”殊荣
2023年是不平凡的一年,风云变幻。大国经济有韧性,离不开顶层设计、宏观政策的指挥,也离不开千百万求新求变的企业和企业家们的辛勤耕耘。在经历了三年疫情严峻考验的当下,中国号巨轮迎风搏浪心如磐石,无惧险阻屹立潮头,这不仅是中国红的底色,也是中国企业家的坚守和倔强。2023年…...
ElementUI Form:Switch 开关
ElementUI安装与使用指南 Switch 开关 点击下载learnelementuispringboot项目源码 效果图 el-switch.vue (Switch 开关)页面效果图 项目里el-switch.vue代码 <script> export default {name: el_switch,data() {return {value: true,value1: …...
通俗易懂理解注意力机制(Attention Mechanism)
重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 一、参考资料 大话注意力机制(Attention Mechanism) 注意力机制(Attention Mechanism) 深度学习中的注意力机制 注意力机制 二、注意力…...
git的分支的使用,创建分支,合并分支,删除分支,合并冲突,分支管理策略,bug分支,强制删除分支
GIT | 分支 文章目录 GIT | 分支创建分支合并分支删除分支合并冲突分支管理策略bug分支强制删除分支 创建分支 查看当前本地仓库中有哪些分支 git branchHEAD所指向的分支就是当前正在工作的分支 cat .git/HEAD创建一个分支 git branch dev创建好了,但是目前还是…...
【leetcode100-081到090】【动态规划】一维五题合集1
【爬楼梯】 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路: 【状态】 dp[i];//爬i级台阶有几种方法 【初始】 dp[0] 1;//爬0级1种(不爬)dp[1] 1;/…...
数据结构-顺序表详解专题
目录 顺序表 1.简单了解顺序表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 2.3typedef命名作用 3.动态顺序表的实现 SeqList.h SeqList.c test.c 顺序表 1.简单了解顺序表 顺序表是线性表的一种,线性表是在逻辑上是线性结构,在物理逻辑上并…...
对商业知识和思维的一些小体会
用途:个人学习笔录,欢迎指正 前言: 小生拙见,我认为商业知识和商业思维的理解对于每一个行业都有潜在的帮助,因为每个人的生活都离不开商业,生意、工作都是交换,用自身提供的价值换取薪酬。因此…...
【笔记】计算文件夹的大小
目标:遍历文件夹,计算文件夹下包含文件和文件夹的大小。将这些结果存入python自带的数据库。 用大模型帮我设计并实现。 Step1 创建一个测试用的目录结构 创建目录结构如下所示: TestDirectory/ │ ├── EmptyFolder/ │ ├── SmallF…...
机器学习_常见算法比较模型效果(LR、KNN、SVM、NB、DT、RF、XGB、LGB、CAT)
文章目录 KNNSVM朴素贝叶斯决策树随机森林 KNN “近朱者赤,近墨者黑”可以说是 KNN 的工作原理。 整个计算过程分为三步: 计算待分类物体与其他物体之间的距离;统计距离最近的 K 个邻居;对于 K 个最近的邻居,它们属于…...
外包干了8个月,技术退步明显...
先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...
opencv#41 轮廓检测
轮廓概念介绍 通常我们使用二值化的图像进行轮廓检测,对轮廓以外到内进行数字命名,如下图,最外面的轮廓命名为0,向内部进行扩展,遇到黑色白色相交区域,就是一个新的轮廓,然后依次对轮廓进行编号…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
