当前位置: 首页 > news >正文

【MFC】03.常用复杂控件的使用-笔记

热键:

对话框-类向导:初始化函数中,热键需要在最开始的时候就注册进去:

  1. 注册热键:

    在这之前,先去定义一个宏,代表你这个快捷键。

    参数:窗口句柄,热键编号(热键消息码),辅助键
    #define HOTKEY_USER_MSG 12138
    RegisterHotKey(m_hWnd,HOTKEY_USER_MSG,MOD_SHIFT,VK_F1);//
    
  2. 相应消息:

    类向导-添加消息处理:WM_HOTKY消息

    switch(nHotKeyID){case HOTKEY_USER_MSG:{AfxMessageBox(L"HOTKEY");breake;}
    }
    

全局消息钩子:在所有页面上都可以使用该热键

IP控件(IP Address Control):

给空间添加变量m_IP

  • 设置
    BUYE cIPA,cIPB,cIPC,cIPD;
    //判断是否为空
    if(m_IP。IsBlank()){AfxMessageBox(L"IP地址不能为空");return;
    }else{m_IP.GetAddress(cIPA,cIPB,cIPC,cIPD);CString csIP;csIP.FOrmat(L"%d.%d.%d.%d",cIPA,cIPB,cIPC,cIPD);AfxMessageBox(csIP);
    }
    
  • 清除:
    m_IP.ClearAddress();
    
  • 获取
    char ip[] = "192.168.1.60";
    DWORD dwIP = htonl(inet_addr(ip));
    m_IP.SetAddress(dwIP);
    

树控件(Tree Control):

  • 添加变量 m_Tree
  • OnInitDialog:
    HTREEITEM hRoot = m_Tree.InsertItem(L"ROOT",TVI_ROOT,TVI_LAST);
    HTREEITEM hSubRoot1 = m_Tree.InsertItem(L"SubToot1",hRoot,TVI_LAST);
    HTREEITEM hSubRoot2 = m_Tree.InsertItem(L"SubToot1",hRoot,TVI_LAST);
    HTREEITEM hSubRoot3 = m_Tree.InsertItem(L"SubToot1",hRoot,TVI_LAST);
    
  • 获取当前选中:
    HTREEITEM hCurNode = m_Tree.GetSelectItem();
    CString csTxt = m_Tree.GetItemText(hCurNode);
    AfxMessageBox(csText);
    CString csSetBuffer = L"fdksafd";
    m_tree.SetItemText(hCurNode,csSetBuffer);
    
  • 删除选中
    HTREEITEM hCurNode = m_Tree.GetSelectItem();
    m_Tree.DeleteItem(hCurNode);
    
  • 全部删除
    m_Tree.DeleteAllItems();
    

列表:

  • 添加变量:m_FileList

  • OnInitDialog:

    m_FileList.SetExtendedStyle(LVS_EX_GRIDLINES,LVS_EX_FULLROWSELECT);
    m_FileList.InsertColumn(0,L"Name",NULL,100);
    m_FileList.InsertColumn(1,L"Pach",NULL,100);
    m_FileList.InsertColumn(2,L"Title",NULL,100);
    //只有第一列是Insert
    m_FileList.InsertItem(0,L"WdIg",0);
    m_FIleList.SetItemText(0,1,L"Path");
    m_FIleList.SetItemText(0,2,L"Title");CFileFied finder;
    DWORD nIdnex = 0;
    BOOL bRet = finder.FInderFile(L"路径");
    while(bRet){bRet = finder.FindNextFileW();m_FileList.InsertItem(nIdnex,finder.GetFileName(),0);m_FIleList.SetItemText(nIdnex,finder.GetFilePath());m_FIleList.SetItemText(nIdnex,2,finder.GerFileTitle());
    }
  • 插入右键菜单:

    获取文本,删除一行,删除全部、

    类向导-列表控件消息:NM_RCLICK:

    	POINT pt = { 0 };GetCursorPos(&pt);HMENU hMenu = LoadMenu((HINSTANCE)GetWindowLongPtr(m_hWnd, GWLP_HINSTANCE), MAKEINTRESOURCE(IDR_MENU1));HMENU hSubMenu = GetSubMenu(hMenu, NULL);TrackPopupMenu(hSubMenu, TPM_CENTERALIGN, pt.x, pt.y, 0, m_hWnd, NULL);
    

    删除一行:

    //获取当前行数:int nPos = (int)m_List.GetFirstSelectedItemPosition();nPos -= 1;//删除当前行m_List.DeleteItem(nPos);
    

    删除全部:

    m_FileList.DeleteAllItem();
    

    获取文本

    int nPos = (int)m_List.GetFirstSelectedItemPosition();
    nPos -= 1;
    CString csBuffer = m_List.GetItemText(nPos, 0);
    AfxMessageBox(csBuffer);
    m_FileList.SetItemText(nPos,0,L"WdIg");
    

附加库

Tab页控件(Tab Control):

添加变量:m_Tab

绑定对话框
对话框外观NONe类型,Style:Child,给每一个对话框都添加一个类

OnInitDialog:

m_Tab.InsertItem(0,L"page0");
m_Tab.InsertItem(0,L"page1");
m_Tab.InsertItem(0,L"page2");

主对话框.h包含三个页的头文件,并且在头文件中,初始化三个对象

CPAGE1 page1;
CPAGE2 page2;
CPAGE3 page3;

OnInitDialog:

page1.Create(IDD_DIALOG1,&m_Tab);
page2.Create(IDD_DIALOG2,&m_Tab);
page3.Create(IDD_DIALOG3,&m_Tab);//窗口移动:
CRect rs;
m_Tab.GetClientRect(rs);
rs.top+=20;
page1.MoveWindow(rs);
page2.MoveWindow(rs);
page3.MoveWindow(rs);page1.ShowWidnow(SW_SHOW);

这样添加之后呢,当我们点击切换页面的时候,不会切换页面,这是因为没有添加切换的机制:

在Tab控件上,添加事件处理程序,消息类型:TCN_SELECHANGE

int nCurSel = m_Tab.GetCurSel();switch (nCurSel) {case 0: {D1.ShowWindow(SW_SHOW);D2.ShowWindow(SW_HIDE);D3.ShowWindow(SW_HIDE);break;}case 1: {D2.ShowWindow(SW_SHOW);D1.ShowWindow(SW_HIDE);D3.ShowWindow(SW_HIDE);break;}case 2: {D3.ShowWindow(SW_SHOW);D2.ShowWindow(SW_HIDE);D1.ShowWindow(SW_HIDE);break;}}

相关文章:

【MFC】03.常用复杂控件的使用-笔记

热键: 对话框-类向导:初始化函数中,热键需要在最开始的时候就注册进去: 注册热键: 在这之前,先去定义一个宏,代表你这个快捷键。 参数:窗口句柄,热键编号(热…...

Autosar诊断实战系列14-NRC优先级解析

本文框架 前言1. NRC分类2. NRC优先级判断2.1. NRC优先级判断逻辑介绍2.2 NRC测试注意事项前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应…...

《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提…...

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

先阐述一下我的业务场景,我有一个iOS的app sdk项目,下面简称 A ,以及运行 A 的 app 项目,简称 A demo 。 引用关系为 A demo 引用了 A ,而 A 引用了 ffmpeg 的静态库(.a文件)。此时业务出现了 b…...

机器学习06 数据准备-(利用 scikit-learn基于Pima Indian数据集作 数据特征选定)

什么是数据特征选定? 数据特征选定(Feature Selection)是指从原始数据中选择最相关、最有用的特征,用于构建机器学习模型。特征选定是机器学习流程中非常重要的一步,它直接影响模型的性能和泛化能力。通过选择最重要的特征&#…...

机器学习-特征选择:如何使用Lassco回归精确选择最佳特征?

一、引言 特征选择在机器学习领域中扮演着至关重要的角色,它能够从原始数据中选择最具信息量的特征,提高模型性能、减少过拟合,并加快模型训练和预测的速度。在大规模数据集和高维数据中,特征选择尤为重要,因为不必要的…...

SpringBoot之Actuator基本使用

SpringBoot之Actuator基本使用 引入分类常用接口含义healthbeansconditionsheapdumpmappingsthreaddumploggersmetrics 引入 <!-- actuator start--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…...

排序算法(一)

1.冒泡排序-Bubble Sort 1.算法原理 依次比较相邻的两个元素&#xff0c;若按照从小到大的顺序&#xff0c;则将相邻元素中较大的一个放在后面&#xff1b;然后对每一对相邻元素都做这种比较&#xff0c;序列的最后一个元素就是最大的数&#xff1b; 2.算法复杂度 时间复杂度…...

Centos虚拟机忘记密码-修改密码

1.重启系统 2.在这个选择界面&#xff0c;按e建 3.找到如下位置&#xff0c;插入init/bin/sh 4.填写完成后按Ctrlx引导启动 5.输入mount -o remount, rw / (注意空格) 6.重置密码 出现以下为重置成功 7.执行touch /.autorelabel 8.退出exec /sbin/init 9.输入你的新密…...

Shell 分析服务器日志常用命令

1、查看有多少个IP访问&#xff1a; 日志文件的第一列是IP地址 awk {print $1} log_file|sort|uniq|wc -l2、查看某一个页面被访问的次数&#xff1a; grep "/index.php" log_file | wc -l3、查看每一个IP访问了多少个页面&#xff1a; awk {S[$1]} END {for (a i…...

mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件

1.概要说明 binlog 就是binary log&#xff0c;二进制日志文件&#xff0c;这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复&#xff0c;增量备份&#xff0c;主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注&#xff0c;但是对于运维或者架…...

机器学习:训练集与测试集分割train_test_split

1 引言 在使用机器学习训练模型算法的过程中&#xff0c;为提高模型的泛化能力、防止过拟合等目的&#xff0c;需要将整体数据划分为训练集和测试集两部分&#xff0c;训练集用于模型训练&#xff0c;测试集用于模型的验证。此时&#xff0c;使用train_test_split函数可便捷高…...

淘宝API开发(一)简单介绍淘宝API功能接口作用

前一阵子按照上级指示&#xff0c;根据淘宝API开发符合自已应用的系统&#xff0c;比如批量上传&#xff0c;批量修改名称&#xff0c;价格等功能什么的&#xff0c;在此就将我的开发历程写一写&#xff0c;为自己前段时间的工作做个总结。 淘宝开发平台(淘宝网 - 淘&#xff…...

Redis相关面试题

Redis的使用场景 根据自己简历上的业务进行回答 缓存 穿透、击穿、雪崩、双写一致、持久化、数据过期、淘汰策略 分布式锁 setnx redisson 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;数据库查不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查询数据库…...

数据库简介

1、数据库安装: rpm (redhat package manager) 也是个包管理工具: rpm -ivh 安装 rpm -e 表示卸载,卸载的时候有可能出现依赖的问题,可以用 --nodeps 忽略依赖卸载。 rpm -qa 搜索系统中安装的rpm的应用。 如果使用离线包,安装顺序不要乱。 m…...

腾讯云国际轻量应用服务器怎么使用呢?

腾讯云国际轻量应用服务器怎么使用呢&#xff1f;下面一起来了解一下&#xff1a; 1. 熟悉轻量应用服务器基础知识 ①什么是轻量应用服务器 TencentCloud Lighthouse&#xff1f; ②轻量应用服务器与云服务器 CVM 的区别是什么&#xff1f; ③为什么选择轻量应用服务器&#xf…...

arm环境cloudstack在vpc下创建虚拟机失败

一、环境说明 操作系统&#xff1a;openEuler 22.03CPU&#xff1a;Kunpeng-920&#xff0c;arm v8cloudstack&#xff1a;4.18libvirtd&#xff1a;6.2.0 二、问题描述 在UI上创建VPC后&#xff0c;平台会同时创建一个virtual router&#xff0c;此时virtual router有两个网…...

Linux上安装Keepalived,多台Nginx配置Keepalived(保姆级教程)

目录 一、yum安装 第一步&#xff1a;下载 第二步&#xff1a;编辑Keepalived配置文件&#xff08;第一台&#xff09; 第三步&#xff1a;编辑Keepalived配置文件&#xff08;第二台&#xff09; 第四步&#xff1a;我们在本机利用cmd ping一下 一、yum安装 第一步&…...

centos7 ‘xxx‘ is not in the sudoers file...

如题 执行命令输入密码后时报错&#xff1a; [sudo] password for admin &#xff08;我的账户&#xff09;原因&#xff0c;当前用户还没有加入到root的配置文件中。 解决 vim打开配置文件&#xff0c;如下&#xff1a; #切换到root用户 su #编辑配置文件 vim /etc/sudoe…...

Zebec Payroll :计划推出 WageLink On-Demand Pay,进军薪酬发放领域

“Zebec Protocol 生态旨以 Web3 的方式建立全新的公平秩序&#xff0c;基于其流支付体系构建的薪酬支付板块&#xff0c;就是解决问题的一把利刃”...

从拍照到HDR:用OpenCV玩转多曝光融合,让你的摄像头拍出大片感(C++实战)

从拍照到HDR&#xff1a;用OpenCV玩转多曝光融合&#xff0c;让你的摄像头拍出大片感&#xff08;C实战&#xff09; 当你在逆光环境下拍摄时&#xff0c;是否经常遇到这样的困境——要么天空过曝变成一片惨白&#xff0c;要么前景欠曝沦为剪影&#xff1f;传统相机的动态范围有…...

W5500 TCP客户端开发避坑指南:从寄存器配置到稳定通信的5个关键步骤

W5500 TCP客户端开发避坑指南&#xff1a;从寄存器配置到稳定通信的5个关键步骤 在嵌入式网络通信领域&#xff0c;W5500作为一款硬件集成TCP/IP协议栈的以太网控制器&#xff0c;因其易用性和稳定性备受开发者青睐。然而&#xff0c;当项目从实验室demo转向实际部署时&#xf…...

Hi3861驱动MPU6050与OLED:嵌入式I2C传感器数据采集与显示实战

1. 项目概述与核心价值最近在捣鼓小熊派的Hi3861开发板&#xff0c;想用它来做个姿态传感器的小玩意儿。核心想法很简单&#xff1a;通过I2C总线读取MPU6050六轴传感器的数据&#xff0c;然后把姿态角&#xff08;比如俯仰角、横滚角&#xff09;实时显示在一块小小的OLED屏幕上…...

影刀RPA跨境店群自动化实战:Python协同Chromium底层调度与容器化环境隔离系统架构

定了。在这场旷日持久的跨境电商反爬风控拉锯战中&#xff0c;我们终于用一套基于 Python 深度协同的分布式微服务调度架构&#xff0c;重塑了跨境千店矩阵的自动化底座。 这几天&#xff0c;科技圈被“DeepSeek V4 首发华为昇腾芯片&#xff0c;国产 AI 开始打破英伟达 CUDA …...

如何轻松配置Windows和Office:面向新手的终极解决方案指南

如何轻松配置Windows和Office&#xff1a;面向新手的终极解决方案指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出配置提示而烦恼吗&#xff1f;Office突然变成只…...

ARM P-Channel接口设计与低功耗SoC电源管理实践

1. ARM P-Channel接口深度解析在低功耗SoC设计中&#xff0c;电源管理接口的可靠性和时序一致性直接决定了系统的能效表现。ARM P-Channel作为专为电源管理设计的标准化接口协议&#xff0c;通过独特的四阶段握手机制&#xff0c;为设备与电源控制器之间建立了高效的状态协商通…...

CodeGPT高级代理系统:10个实用工具助你高效编程的完整指南

CodeGPT高级代理系统&#xff1a;10个实用工具助你高效编程的完整指南 【免费下载链接】CodeGPT The leading open-source AI copilot for JetBrains. Connect to any model in any environment, and customize your coding experience in any way you like. 项目地址: https…...

告别.osa!用PCL玩转ORB-SLAM3点云地图:保存、加载与二次开发实战

告别.osa&#xff01;用PCL玩转ORB-SLAM3点云地图&#xff1a;保存、加载与二次开发实战 当ORB-SLAM3完成环境建图后&#xff0c;.osa格式的地图文件就像被锁在保险箱里的宝藏——虽然安全&#xff0c;却难以直接利用。本文将带你突破这一限制&#xff0c;通过PCL&#xff08;P…...

AI为笔,书写更高效的校招流程

数字化工具如何把HR从简历海中拯救出来&#xff1f;当春招的巨浪袭来&#xff0c;HR们往往陷入了简历的“深水区”。数以千计的简历涌入后台&#xff0c;不仅有校招实习的投递&#xff0c;还有各种零散的咨询。如果依然依靠纯人工、传统的方式进行处理&#xff0c;不仅效率低&a…...

全志D1s开发板RT-Smart环境搭建:从工具链到烧录的完整实践指南

1. 项目概述与核心价值最近在折腾一块搭载了全志D1s芯片的开发板&#xff0c;目标是在上面跑RT-Smart实时操作系统。这听起来像是一个标准的嵌入式开发流程&#xff0c;但实际操作下来&#xff0c;从环境搭建到第一个程序跑起来&#xff0c;中间踩的坑一个接一个&#xff0c;远…...