96SEO 2026-02-20 01:34 12
对话框是与用户进行交互的控件如文件对话框字体对话框颜色对话框等一般用于告示提醒等。

对话框就是一个窗口它不仅可以接收消息而且还可以被移动和关闭甚至可以在它的客户区中进行绘图。
相当于一个窗口在它上面能够旋转各种标准控件和扩展控件。
都是由CWnd类派生来。
Windows应用程序win桌面应用程序工作的基本流程是从用户那里得到数据经过相应的处理之后先把处理结果输出到屏幕打印机或者其他输出设备。
这就需要用到Windows应用程序的用户接口对话框。
WM系列消息是对话框接收处理子控件的消息处理需要在消息映射中指明ID和控件事件
双击对话框里面的控件就会在Dlg类消息映射表中添加消息映射右击控件选择类向导命令一栏中在里面选择控件的ID值在选择对应的控件事件右击对话框选择属性选择控件事件选择要处理的消息
当控件的消息处理无法满足需求时可以控件也是对话框可以给控件对话框添加类指定ID父窗口即可
继承的基类选择可以选CDialog或者CDialogEx继承自前者提供了更加丰富的控件支持
这是构造函数的定义它属于名为ButtonText的类。
构造函数的作用是在创建类的对象时进行初始化操作。
:CDialogEx(IDD_DIALOG1,
list。
在这里我们调用了基类CDialogEx的构造函数并传入两个参数对话框模板资源的ID(IDD_DIALOG1)和父窗口指针(pParent)。
通过调用基类的构造函数确保了从基类继承的成员变量得到了正确的初始化。
参数指定了对话框的父窗口。
父窗口是指对话框所属的上层窗口通常用于确定对话框的显示位置和处理窗口间的关系。
在这里pParent
参数指定了对话框的父窗口可以根据调用这个构造函数时传入的具体参数值来确定。
在实际使用中根据具体的情景可以传入不同的父窗口指针以确立对话框与哪个窗口有关联关系。
AddDialogText::AddDialogText(CWnd*
控件的类不想要了怎么办项目中删除即可即可把类的引用修改回来否则会造成程序连接时候报错。
一个控件(对话框)使用消息映射来处理控件事件一个控件(对话框)添加类创建类并且show是不一样的。
或者提供了更加丰富的功能更重要的是可以绘制出来与用户交互而且拥有自己的消息循环。
创建一个对话框并设置ID值在属性一栏中可以控制外观位置行为等给该对话框添加类。
需要在第一个消息对话框中为Button(确定按钮)使用消息映射机制
对话框控件的本质都是对话框创建他们需要先Create后Show
模态Model对话框指当其显示时程序会暂停执行直到关闭这个模态对话框后才能继续执行程序中其它任务。
当一个模态对话框打开时用户只能与该对话框进行交互而其它用户界面对象接收不到输入信息。
在其显示时整个程序会暂停直到关闭该对话框。
CMFCApplication1Dlg::OnBnClickedOk()
对话框控件的本质都是对话框创建他们需要先Create后Show
非模态Modeless对话框当其显示时允许执行程序中其它任务而不用关闭这个对话框。
在MFC中对资源的操作通常都是通过一个与资源相关的类来完成。
对话框资源对应CDialog基类。
需要考虑一个问题如果在函数内部实例化对话框创建绘制对话框函数执行结束对话框就会销毁。
最好的处理办法就是在第一个对话框类中实例化对象并在调用初始化函数时创建出来在消息函数中绘制。
CMFCApplication1Dlg::OnBnClickedOk()
2.非模态对话框//需要作为MFCApplication1Dlg类的成员变量//原因非模态对话框不会阻塞消息循环一旦函数结束就会析构掉对象造成程序崩溃//
NULL){dlg.Create(IDD_DLG_EDAOYUN,
this);}dlg.ShowWindow(SW_SHOW);
动态的需求需要多少个按钮在程序开始时时不确定的只能在程序运行时创建
CBingoDialog::OnBnClickedButton1()
在此添加控件通知处理程序代码TRACE(%s(%d):%s\n,
_T();::SendMessage(m_edit1.m_hWnd,
(LPARAM)buf);m_edit1.SendMessage(WM_SETTEXT,
(LPARAM)buf);this-SendMessage(WM_GETTEXT,
CButton类是继承自CWND类m_hWnd就是该类的一个成员变量记录了Windows系统创建该窗口后这个窗口的句柄由
来保存。
说明控件(对话框)的本质就是窗口BS_DEFPUSHBUTTON这是按钮的样式表示默认的按钮外观。
WS_VISIBLE
WS_CHILD这是窗口样式表示按钮是可见的并且作为父窗口的子窗口存在。
CRect(100,
150)这是按钮控件的位置和大小使用矩形区域来表示左上角坐标为
150)。
this这个参数表示按钮控件的父窗口也就是按钮所在的对话框9999这是按钮控件的标识符用于在程序中唯一标识这个按钮控件。
父窗口子窗口当我们在对话框中创建一个按钮时按钮控件会成为对话框的子窗口并且对话框将成为该按钮的父窗口。
这意味着按钮的显示、布局、事件处理等都是相对于对话框来进行的。
同时对话框也负责管理和维护这些子窗口比如控制它们的显示和隐藏处理它们的消息等。
父窗口通常是一个容器窗口它可以包含其他窗口作为它的子窗口。
父窗口负责管理和布局它的子窗口包括显示、隐藏、移动、调整大小等操作。
一个窗口可以同时是另一个窗口的子窗口和父窗口这种多层次的父子关系可以形成窗口的层次结构。
子窗口是被包含在父窗口内的窗口它的位置和尺寸相对于父窗口来确定。
子窗口可以是各种控件比如按钮、文本框、列表框等也可以是其它窗口。
子窗口的行为通常由其父窗口来管理和控制父窗口处理子窗口的消息并进行相应的响应。
编程中对话框类通常是一个典型的父窗口它可以包含各种控件作为其子窗口比如按钮、编辑框、组合框等。
当你在对话框资源编辑器中放置控件时这些控件就成为了对话框的子窗口。
在对话框类的代码中你可以通过控件的成员变量或者控件
控件都提供一些方法用于访问比如编辑框提供了设置默认内容获取编辑框输入内容给的方法
CBingoDialog::CBingoDialog(CWnd*
中指定对话框类成员变量与控件之间的数据交换规则以及进行数据验证。
CBingoDialog::DoDataExchange(CDataExchange*
{CDialog::DoDataExchange(pDX);DDX_Text(pDX,
对话框类中的一个重要成员函数用于实现对话框和控件之间的数据交换。
在该函数中可以通过调用
系列的宏来指定对话框类成员变量与控件之间的数据交换规则以及进行数据验证。
数据传递DataExchange将对话框类中的成员变量的值与与之关联的控件进行双向的数据交换。
这包括从控件更新数据到成员变量如
数据验证DataValidation在数据交换过程中执行数据验证操作确保用户输入的数据符合预期的格式和范围。
这包括使用
的参数这是数据交换指针它在数据传递和数据验证过程中扮演着重要的角色。
通过在
是一个用于数据交换的宏用于在对话框和控件之间进行文本数据的交换。
宏用于将文本控件如编辑框中的数据与对话框类中的成员变量相关联或者将对话框类中的成员变量的值与文本控件相关联。
的成员变量进行关联。
这样在对话框中修改编辑框的内容时相关联的成员变量
宏可以很方便地实现对话框中控件和对话框类成员变量之间的双向数据交换这在
是一个用于数据验证的宏用于验证整数类型的数据是否在指定的最小值和最大值范围内。
宏用于在对话框数据验证期间检查整数类型的数据确保其值在指定的最小值和最大值之间。
其语法如下
将会显示相应的验证错误消息并阻止用户继续进行操作直到输入的值符合要求为止。
宏可以方便地实现对话框中整数类型数据的范围验证确保用户输入的数据符合预期的范围要求。
宏用于将对话框中的控件与对话框类中的成员变量进行关联其作用是将控件的句柄handle与对话框类中的成员变量相关联从而可以通过成员变量来操作控件。
成员变量可以直接操作对应的编辑框控件例如获取或设置文本内容、启用或禁用控件等操作。
宏可以方便地实现对话框类成员变量与控件之间的关联简化了对控件的操作和管理。
NULL){pEdit01-SetWindowText(_T(100));pEdit01-GetWindowText(strText);}if
NULL){SetDlgItemText(IDC_EDIT2,
_T(200));GetDlgItemText(IDC_EDIT2,
pEdit03-SetWinodwText(_T(300));SetDlgItemInt(IDC_EDIT3,
在对话框中输入三个值点击确定按钮后会把前两个值相加放到第三个中
UpdateData(TRUE)可以将对话框中的控件的当前值更新到关联的成员变量中而通过调用
UpdateData(FALSE)可以将成员变量的值更新到关联的控件中。
在此添加控件通知处理程序代码//CDialog::OnOK();//UpdateData();//m_value3
m_value1;//UpdateData(FALSE);CString
str3;m_edit1.GetWindowText(str1);m_edit2.GetWindowText(str2);int
buf;m_edit3.SetWindowTextW(str3);
m_edit1.SendMessage(WM_SETTEXT,
函数可以向窗口或控件发送特定的消息以实现各种操作如获取或设置控件的状态、通知控件发生了特定的事件等。
);hWnd指定要接收消息的窗口或控件的句柄。
Msg指定要发送的消息类型是一个表示消息的整数值。
wParam
lParam作为消息参数传递的额外信息具体意义取决于不同的消息类型。
函数来与窗口控件进行交互例如设置控件的状态、获取控件的信息、自定义处理消息等。
常见的用法包括发送
判断一个矩形是否为空IsRectEmpty(),IsRectNull()。
前者是判断矩形面积是否为空后者是判断矩形的四个坐标值是否为0不关心是否能做为一个矩形。
获取窗口范围GetWindowRect(m_large);m_small
CBingoDialog::OnBnClickedBtnLarge()
curRect;GetWindowRect(curRect);CWnd*
GetDlgItem(IDC_BTN_LARGE);CString
(pButton){pButton-GetWindowText(strTitle);if
FALSE){pButton-SetWindowTextW(_T(缩小));SetWindowPos(NULL,
窗口Z轴控制//SetWindowPos(wndTopMost,
FALSE){pButton-SetWindowTextW(_T(放大));SetWindowPos(NULL,
SWP_NOZORDER);//SetWindowPos(wndTopMost,
这是两个按钮添加变量-控件是属于CBUTTON类CMyButton类是属于CButton的子类。
两个按钮创建变量-控件后控件就会被类关联使用CMyButton
m_btn_light;m_btn_light.m_pButton
在此添加消息处理程序代码和/或调用默认值ShowWindow(SW_HIDE);if
NULL){m_pButton-ShowWindow(SW_SHOW);}CButton::OnMouseMove(nFlags,
CRunningButtonDlg::OnBnClickedButton2()
在此添加控件通知处理程序代码MessageBox(_T(恭喜你点到我了),
在八的基础上给对话框添加一个新的按钮点击后会给出一个新的对话框
这样做的意义就是有了对话框类成员变量是控件的值就可以拿到这些值了。
为新对话框类重写初始化函数选择这个类属性重写选择要重写的类要在初始化时为列表进行初始化单选框不用因为我们只需要获得它的状态。
{CPropertyPage::OnInitDialog();//
因为GetDlgItem拿到根据ID拿控件的对象地址默认类型时CWND需要强制转换//
(CListBox*)GetDlgItem(IDC_LIST_COMPANY);if
(pListBox){pListBox-AddString(_T(阿里巴巴));pListBox-AddString(_T(华为));pListBox-AddString(_T(腾讯));pListBox-AddString(_T(京东));pListBox-AddString(_T(百度));}return
添加控制变量(控件)值可以拿到控件的值(编辑框的内容等等)控件可以拿到控件的句柄保存到一个对象中。
将控制变量放到父窗口类中我们可以自由拿到通过父窗口对象操作控件
当需要处理控件的消息时需要为控件添加控制变量到父窗口类中如果想要处理该控件的消息就需要实例化这个控件(所有控件都是继承自CWIND都是窗口)。
就需要创建出来一个类利用多态新类指向控制变量-控件在新类中设置处理消息的函数就可以了。
参考八
在函数中不可实例化对象因为函数结束对象销毁不妨把要实例化的类放在类中在函数中创建重绘。
添加MFC类其实道理和八一样对话框(控件)有了自己的类就可以有更多操作的控件再框架中要通过消息映射机制操作空间有限
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback