热键:
对话框-类向导:初始化函数中,热键需要在最开始的时候就注册进去:
-
注册热键:
在这之前,先去定义一个宏,代表你这个快捷键。
参数:窗口句柄,热键编号(热键消息码),辅助键 #define HOTKEY_USER_MSG 12138 RegisterHotKey(m_hWnd,HOTKEY_USER_MSG,MOD_SHIFT,VK_F1);//
-
相应消息:
类向导-添加消息处理: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);
这样添加之后呢,当我们点击切换页面的时候,不会切换页面,这是因为没有添加切换的机制:文章来源:https://www.toymoban.com/news/detail-624259.html
在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模板网!