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

这篇具有很好参考价值的文章主要介绍了【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文章来源地址https://www.toymoban.com/news/detail-624259.html

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.常用复杂控件的使用-笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MFC创建和使用OCX控件

    2024年02月13日
    浏览(39)
  • MFC 对话框与控件的使用

    1、 熟悉 Windows 对话框应用程序开发的基本过程; 2、 学习标准控件的使用; 3、 学些 CommonDialog ActiveX 控件的使用; 4、 练习较复杂的交互式操作的控制流程; 5、 练习文件输入/输出流的使用。 实现一个具有一定实用价值的通讯录程序设计。界面如图所示 ①界面的基本设计

    2024年02月05日
    浏览(38)
  • vs2017 MFC使用TEECHART 控件遇到的问题

    teechart 安装 《TeeChart安装、注册和使用》_GodLei1995-CSDN博客_teechart控件下载 MFC绘制图表《TeeChart安装、注册和使用》_qq_39851127的博客-CSDN博客

    2024年02月07日
    浏览(57)
  • VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

    Teechart控件安装注册:          1. 将TeeChart5.ocx 复制到C:WindowsSysWOW64。         2. 找到同目录下的cmd.exe。         3. 右键 管理员身份 打开 ,此刻进入的是system32 (不是管理员打开cmd的话,用win + R的话,会提示模块已加载,但对DllRegisterServer的调用失败)。    

    2024年02月05日
    浏览(72)
  • MFC自定义控件ID操作————MFC+Halcon学习中的那些坑

    趁着大三寒假抓紧学习halcon与mfc,为未来职业发展做准备,今天和大家分享一个我在学习mfc与halcon过程中踩到的坑,足足困扰了我半天.... 程序很简单..就是在halcon中读取摄像头,并且用mfc开发一个简单的界面,将视频显示出来,完成体内容如下 发现这个图片控件的ID有些奇怪

    2024年02月05日
    浏览(34)
  • 【MFC】Button控件美化(自绘)

    在MFC中Button控件不能通过OnCtlColor()函数对外观做太多的改变。 欲设置按钮的背景为紫色,文字为红色,但是通过OnCtlColor()函数并不能实现预期的结果 为了能够修改Button控件字体、字体大小、背景色、背景图片,需要对Button控件进行自绘。 方法一:在资源视图中将所有

    2024年02月09日
    浏览(39)
  • MFC第二十四天 使用GDI对象画笔和画刷来开发控件(分页控件选择态的算法分析、使用CToolTipCtrl开发动静态提示)

    CMainDlg.h CMainDlg.cpp CLadderCtrl.h CLadderCtrl.cpp CMainDlg.h CMainDlg.cpp CLadderCtrl.h CLadderCtrl.cpp: 实现文件 本次只添加了与静态提示不同之处的代码 CMainDlg.h CMainDlg.cpp 设置动态文字的函数 CLadderCtrl.h CLadderCtrl.cpp MouseMove 进入任意控件都不会理你 除非回到主窗口范围内 OnSetCursor 不论在什么控

    2024年02月15日
    浏览(42)
  • MFC 更改控件的大小和位置

    获取当前主窗体的位置rect 获取某一个控件当前的位置 修改位置 移动位置

    2024年02月09日
    浏览(33)
  • MFC删除Button控件具体操作

    删除Button按键; 删除xxxDlg.h中消息映射函数定义 删除xxxDlg.cpp中“DoDataExchange”和“BEGIN_MESSAGE_MAP”中的相关代码 删除xxxDlg.cpp中按键响应函数

    2024年02月09日
    浏览(36)
  • MFC为控件添加背景图片

    1、 添加选择Bitmap导入图片,图片文件最好放在项目res目录中,同时是BMP格式。上传后的图片在资源视图,命名为IDB_BITMAP_M_BACK。 2、在cpp的C***Dlg::OnPaint()函数下添加如下代码 如果是主程序的cpp文件中已有OnPaint函数,则修改else部分代码: 运行效果:

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包