基于对话框配置工具框架简单分析(二)
2018-02-08 20:58
465 查看
对话框类头文件基本结构(Integrity Mobile ConfiguratorDlg.h)
// (1)#pragma once + 各种包含(afxwin.h + 后续的各种类的头文件);//(2)XXXXDlg类定义(关联的对话框ID + HICON m_hIcon +构造+ DoDataExchange +声明消息映射函数(OnInitDialog+OnSysCommand+OnPaint+OnQueryDragIcon)+ 声明消息映射表);
对话框类的定义中主要内容:类中各种函数的声明(包括消息映射函数),各种变量的声明,还有各种类的对象(包括Tab控件类,菜单栏类,工具栏类,组合框类)
对话框类实现文件的基本结构,并对部分代码分析(Integrity Mobile ConfiguratorDlg.cpp)
// (1)各种包含头文件(stdafx.h + afxdialogex.h + XXXX.h + XXXXDlg.h) + 活动预处理;// (2)CAboutDlg类的定义(关联的对话框ID + 构造 + DoDataExchange + 声明消息映射表)+实现(构造 + DoDataExchange + 消息映射表BEGIN~END);
// (3)XXXXDlg类的实现(构造 + DoDataExchange + 消息映射表BEGIN~END);
// (4)CTestDlg消息处理程序:(消息处理程序对应消息映射表中的消息)OnInitDialog + OnSysCommand + OnPaint + OnQueryDragIcon。
初始化程序中主要是:设置对话框图标,设置菜单栏,设置工具栏,在工具栏的某个按钮上设置组合框(显示串口号),设置Tab控件等等.
BOOL CIntegrityMobileConfiguratorDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_pcfgProcess = new CfgProcess((DWORD)this,CallBackDisplay); menu.LoadMenu(IDR_MENU); //IDR_MENU为菜单栏ID号 SetMenu(&menu); //定时器 (这里的定时器名称代表定时从串口接收数据) SetTimer(COM_RECV_PROC_TIMER,150,NULL); //这里的三个参数意思(定时器名称,定时时间(周期性触发),填NULL调用系统回调函数) //最后一个参数为NULL,使用系统默认的回调函数,系统默认的是OnTimer函数。 m_bSerialConnected = FALSE; m_bFirstAck = FALSE; m_bConnInd = FALSE; m_wBackupStatus = BACKUP_NONE; //添加一个平面工具栏 if (!m_wndtoolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS, CRect(0, 3, 0, 0)) || !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR)) { TRACE0("failed to create toolbar\n"); return FALSE; } // Create the zoom combo box in the toolbar. //在按钮上创建组合框,按钮位置决定了组合框的位置 int index1 = m_wndtoolbar.CommandToIndex(IDC_COMBO_COM_PORT); //获取要设置为组合框的按钮的位置 m_wndtoolbar.SetButtonInfo(index1, IDC_COMBO_COM_PORT, TBBS_SEPARATOR, 100);//(对空白按钮进行设置)设置组合框的ID,类型(这里是分隔栏),100是指分隔栏宽度 // 根据分隔符的尺寸rect建立组合框 CRect rect1; m_wndtoolbar.GetItemRect(index1, &rect1); //将组合框的矩形区域数据存入rect1中 rect1.bottom += 100; m_cZoomCombo.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST, rect1,&m_wndtoolbar, IDC_COMBO_COM_PORT); //创建组合框 四个参数(样式,位置和大小,父窗口,组合控件ID) //选中第1条记录 m_cZoomCombo.SetCurSel(0); m_wndtoolbar.ShowWindow(SW_SHOW); RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //使工具栏图标显示256色 HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_TOOLBAR), //加载IDB_TOOLBAR IMAGE_BITMAP, //按位图格式 0, 0, // cx,cy LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS); CBitmap bm; bm.Attach(hbm); m_ilToolBar.Create(24, 24, ILC_COLOR8, 6, 6); m_ilToolBar.SetBkColor(::GetSysColor(COLOR_BTNFACE)); //将系统色设置为当前背景色 m_ilToolBar.Add(AfxGetApp()->LoadIcon(IDI_ICON_CONNECT)); //按顺序加载图标 m_ilToolBar.Add(AfxGetApp()->LoadIcon(IDI_ICON_READ)); m_ilToolBar.Add(AfxGetApp()->LoadIcon(IDI_ICON_CLEAR)); m_ilToolBar.Add(AfxGetApp()->LoadIcon(IDI_ICON_WRITE)); m_ilToolBar.Add(AfxGetApp()->LoadIcon(IDI_ICON_DISCONNECT)); m_wndtoolbar.GetToolBarCtrl().SetImageList(&m_ilToolBar); //创建页面窗口,以及页面名称 m_tab.InsertItem(0, _T("Device Address")); m_tab.InsertItem(1, _T("Setting")); //设置父窗口 page1.Create(IDD_PAGE1, GetDlgItem(IDC_TAB)); page2.Create(IDD_PAGE2, GetDlgItem(IDC_TAB)); //定义窗口大小 CRect rect; m_tab.GetClientRect(&rect); rect.top += 20; rect.bottom -= 5; rect.left += 5; rect.right -= 5; //设置窗口位置 page1.MoveWindow(&rect); page2.MoveWindow(&rect); //设置程序的首页,即启动程序后首先显示的页面 page1.ShowWindow(TRUE); m_tab.SetCurSel(0); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }
相关文章推荐
- 基于对话框配置工具框架简单分析(一)
- WinDBG工具配置及蓝屏dump简单分析
- 基于对话框的简单双缓冲绘图框架
- 守护进程框架简单分析 (基于NetD)
- fabric.js的简单上手及基于fabric.js的canvas切图工具:1、基本使用及配置
- 有关wifi配置工具wpa_cli以及wpa_supplicant简单分析
- play框架在idea开发工具上的简单配置
- 基于对话框的简单双缓冲绘图框架
- 基于对话框的简单双缓冲绘图框架
- AWStats 基于Perl的WEB日志分析工具 在 windows server 2003 安装配置详解
- 基于对话框的简单双缓冲绘图框架
- spring.net 框架分析(四) AOP 简单示例
- 基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
- 简单分析 JavaScript库各个 框架
- 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
- 基于vue实现一个简单的MVVM框架
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
- MySQL慢日志查询全解析:从参数、配置到分析工具【转】
- 简单的SSM框架配置
- 查看linux服务器配置和TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。