当前位置: 首页 > 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;}}
http://www.lryc.cn/news/110561.html

相关文章:

  • Autosar诊断实战系列14-NRC优先级解析
  • 《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景
  • xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。
  • 机器学习06 数据准备-(利用 scikit-learn基于Pima Indian数据集作 数据特征选定)
  • 机器学习-特征选择:如何使用Lassco回归精确选择最佳特征?
  • SpringBoot之Actuator基本使用
  • 排序算法(一)
  • Centos虚拟机忘记密码-修改密码
  • Shell 分析服务器日志常用命令
  • mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件
  • 机器学习:训练集与测试集分割train_test_split
  • 淘宝API开发(一)简单介绍淘宝API功能接口作用
  • Redis相关面试题
  • 数据库简介
  • 腾讯云国际轻量应用服务器怎么使用呢?
  • arm环境cloudstack在vpc下创建虚拟机失败
  • Linux上安装Keepalived,多台Nginx配置Keepalived(保姆级教程)
  • centos7 ‘xxx‘ is not in the sudoers file...
  • Zebec Payroll :计划推出 WageLink On-Demand Pay,进军薪酬发放领域
  • 【2023】字节跳动 10 日心动计划——第三关
  • 【无网络】win10更新后无法联网,有线无线都无法连接,且打开网络与Internet闪退
  • HTML <script> 标签
  • FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法
  • Unity小游戏——迷你拼图
  • 三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集
  • Stable Diffusion 使用教程
  • 在线考试系统springboot学生试卷问答管理java jsp源代码mysql
  • 创建vue-cli(脚手架搭建)
  • 【单调栈part02】| 503.下一个更大元素||、42.接雨水
  • Java——如何使用Stream替换掉List<Student>中符合要求的元素