Windows第九章控件的介绍
- 电脑硬件
- 2025-09-09 16:24:02

文章目录 常用控件1. Button 按钮控件2. Edit Ctrl 编辑控件3. Static Text 静态文本控件4. Picture Control 图片控件5. Group Box 分组控件6. Radio Button 单选控件7. Check Box 多选控件8. Combo Box 组合控件9. List Box列表控件10. List Control 列表控件11. Horizontal Scroll Bar 水平滚动条12. Vertial Scroll Bar13. Slider Control 滑动控件14. Spin Control 数值微调控件15. Progress Control 进度条16. Data Time Picker 时间控件17. IP Address Control IP地址控件 高级控件Tree Control 树控件基本操作遍历节点 Tab Control 分页控件实现窗口大小调整, 分页和子窗口也调整大小 Rich Edit2.0 Control 富文本控件 常用控件
点开右边工具箱,就能看到各种控件的使用
1. Button 按钮控件 按钮贴图 CButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1);//获取按钮控件 pButton->SetIcon(LoadIcon(NULL, IDI_ERROR));//设置按钮图标 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP_FLOWER);//加载位图 pButton->SetBitmap(bitmap);//设置按钮位图 手动创建按钮 Dlg.h添加成员 CButton m_btn1;//定义按钮Dlg.cpp 通过类向导,找到WM_Create,确定创建
int C控件Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; //定义按钮ID,不要和资源里的ID重复 #define ID_MY_BUTTON 1024 m_btn1.Create(_T("按钮1"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 200, 100, 230), this, ID_MY_BUTTON);//创建按钮 CFont* font = new CFont; font->CreatePointFont(120, _T("宋体"));//创建字体 m_btn1.SetFont(font);//设置字体 return 0; } 2. Edit Ctrl 编辑控件 设置文字满了自动换行,把下图Auto Scroll 设成false 设置文本 CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);//获取文本框控件 pEdit->SetWindowText(L"你好"); 点击按钮追加文本 void C控件Dlg::OnBnClickedButtonAdd() { CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);//获取文本框控件 //获取文本的长度 int nLength = pEdit->GetWindowTextLength(); //光标移动到当前末尾 pEdit->SetSel(nLength, nLength);//在后面追加 //添加文本 pEdit->ReplaceSel(_T("末尾追加")); //光标移动到开头 pEdit->SetSel(0, 0);//在前面追加 //添加文本 pEdit->ReplaceSel(_T("前面追加")); } 撤销操作,剪切操作 CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);//获取文本框控件 pEdit->Undo();//撤销 pEdit->Cut();//剪切 手动创建Edit int C控件Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; //手动创建Edit控件 CEdit* pEdit = new CEdit; #define IDC_EDIT3 1025 pEdit->Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(10, 10, 200, 200), this, IDC_EDIT3);//创建文本框 return 0; } 判断编辑控件有没有被修改 根据类向导,创建WM_CLOSE void C控件Dlg::OnClose() { CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);//获取文本框控件 if (pEdit->GetModify())//判断文本框内容是否被修改 { if (IDYES == AfxMessageBox(_T("是否保存修改?"), MB_YESNO)) { AfxMessageBox(_T("保存成功!")); } } CDialogEx::OnClose(); } 3. Static Text 静态文本控件要注意它的ID,所有的此类控件ID一般都是IDC_STATIC
没有进行每个的区分,如果要对它进行代码上的改动,就要重设一下ID
4. Picture Control 图片控件可以放bitmap,但是放进去之后好像不能调整大小 frame可以做成辅助线,如上图
5. Group Box 分组控件 6. Radio Button 单选控件单选控件如果要分组,就要点一下第一个单选按钮,设置一下组 这样其他组的单选按钮不受影响,如果不分组,那其他地方的单选和这里的所有只能选一个
7. Check Box 多选控件手动创建多选单选
int C控件Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; CButton* m_radio = new CButton; m_radio->Create(_T("单选按钮"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, CRect(10, 200, 100, 230), this, 0); CButton* m_check = new CButton; m_check->Create(_T("复选按钮"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, CRect(10, 240, 100, 260), this, 0); return 0; } 8. Combo Box 组合控件在数据里添加项的显示,每个项用分号分开
获取内容 CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO1);//获取下拉框控件 pComboBox->AddString(L"选项1");//添加选项 pComboBox->AddString(L"选项2");//添加选项 pComboBox->AddString(L"选项3");//添加选项 pComboBox->InsertString(0, L"早上");//插入选项 pComboBox->SetCurSel(0);//设置当前选项 wchar_t m_str[20]; pComboBox->GetLBText(0, m_str);//获取当前选项 AfxMessageBox(m_str); pComboBox->DeleteString(1);//删除选项 9. List Box列表控件相当于combobox点下拉按钮后下面的那部分,显示一条一条的项
添加修改和combobox差不多
10. List Control 列表控件视图调成report,可以显示所有分支的内容
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST3);//获取列表控件 pList->InsertColumn(0, L"姓名", LVCFMT_LEFT, 100);//插入列 pList->InsertColumn(1, L"年龄", LVCFMT_LEFT, 100);//插入列 pList->InsertColumn(2, L"性别", LVCFMT_LEFT, 100);//插入列 pList->InsertItem(0, L"张三");//插入行 pList->SetItemText(0, 1, L"18");//设置单元格内容 pList->SetItemText(0, 2, L"男");//设置单元格内容 pList->InsertItem(1, L"李四");//插入行 pList->SetItemText(1, 1, L"20");//设置单元格内容 pList->SetItemText(1, 2, L"女");//设置单元格内容 11. Horizontal Scroll Bar 水平滚动条 12. Vertial Scroll Bar 13. Slider Control 滑动控件 14. Spin Control 数值微调控件微调框一般和文本编辑框组合使用
上述对齐,效果就是微调框靠在文本右侧如果不设置合作者整数,点击微调框按钮,就没法改变文本框里的值 15. Progress Control 进度条 16. Data Time Picker 时间控件可以设置显示格式
17. IP Address Control IP地址控件 高级控件这里我直接使用关联变量,关联变量的知识在第十章有介绍
Tree Control 树控件跟踪选择,就是鼠标移动到节点上会有个手的形状
基本操作 HTREEITEM hRoot = m_tree.InsertItem(_T("我的电脑"));//插入根节点 m_tree.InsertItem(_T("本地磁盘(C:)"), hRoot);//插入子节点 m_tree.InsertItem(_T("本地磁盘(D:)"), hRoot); m_tree.InsertItem(_T("本地磁盘(E:)"), hRoot); m_tree.InsertItem(_T("本地磁盘(F:)"), hRoot); HTREEITEM hRoot1 = m_tree.InsertItem(_T("本地磁盘(G:)"), hRoot); m_tree.InsertItem(_T("Administrator"), hRoot1); m_tree.InsertItem(_T("Program Files"), hRoot1); m_tree.InsertItem(_T("Program Files (x86)"), hRoot1); m_tree.InsertItem(_T("Users"), hRoot1); m_tree.InsertItem(_T("Windows"), hRoot1); HTREEITEM hRoot2 = m_tree.InsertItem(_T("本地磁盘(H:)"), hRoot); m_tree.InsertItem(_T("Program Files"), hRoot2); m_tree.InsertItem(_T("Program Files (x86)"), hRoot2); HTREEITEM hRoot3 = m_tree.InsertItem(_T("Users"), hRoot2); //m_tree.Expand(hRoot, TVE_EXPAND);//展开根节点,只能展开当前一级的节点 m_tree.EnsureVisible(hRoot3);//展开指定节点,可以展开多级节点,到指定节点的路径都展开,包括父节点 遍历节点 void C高级控件Dlg::TraverseTree(HTREEITEM hItem) { CString strText = m_tree.GetItemText(hItem);//获取节点文本 MessageBox(strText); HTREEITEM hChild = m_tree.GetChildItem(hItem);//获取子节点 while (hChild != NULL) { TraverseTree(hChild); hChild = m_tree.GetNextItem(hChild, TVGN_NEXT);//获取下一个节点 } } void C高级控件Dlg::OnBnClickedButton1() { //获取根节点 HTREEITEM hRoot = m_tree.GetRootItem(); //遍历 if (hRoot) TraverseTree(hRoot); } Tab Control 分页控件首先在主窗口放上tab Control
想要在tab的分页上显示对话框,需要先创建对话框资源
这里创建了2个,然后给每个对话框右键添加类
主窗口cpp头文件包含并定义2个成员函数
然后在Dlg.cpp里写代码 OnInitDialog()函数添加
m_tab1.InsertItem(0, _T("窗口"));//插入选项卡 m_tab1.InsertItem(1, _T("进程")); m_page1.Create(IDD_DIALOG1, &m_tab1);//创建模态对话框,父窗口为m_tab1 m_page2.Create(IDD_DIALOG2, &m_tab1); m_page1.ShowWindow(SW_SHOW);//显示第一个选项卡 m_page2.ShowWindow(SW_HIDE);//隐藏第二个选项卡 CRect rect; m_tab1.GetClientRect(&rect);//获取选项卡大小 //调整子窗口大小 m_page1.MoveWindow(rect.left + 1, rect.top + 20, rect.Width() - 2, rect.Height() - 21);//假设标签按钮宽度20 m_page2.MoveWindow(rect.left + 1, rect.top + 20, rect.Width() - 2, rect.Height() - 21); 右键类向导,选择对象IDC_TAB1,选择命令如下图 void C高级控件Dlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) { int curSel = m_tab1.GetCurSel();//获取当前选项卡 if (curSel == 0) { m_page1.ShowWindow(SW_SHOW); m_page2.ShowWindow(SW_HIDE); } else if (curSel == 1) { m_page1.ShowWindow(SW_HIDE); m_page2.ShowWindow(SW_SHOW); } *pResult = 0; }这样就实现了选项卡的切换
如果需要在分页上添加其他控件,只要在分页对话框上添加即可
实现窗口大小调整, 分页和子窗口也调整大小类向导添加onsize消息,然后代码如下
void C高级控件Dlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); if (m_tab1.GetSafeHwnd())//如果选项卡存在 { //调整选项卡大小 m_tab1.MoveWindow(0, 0, cx, cy); //调整子窗口大小 m_page1.MoveWindow(0, 20, cx, cy - 20); m_page2.MoveWindow(0, 20, cx, cy - 20); } } Rich Edit2.0 Control 富文本控件Windows第九章控件的介绍由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Windows第九章控件的介绍”