关于空控件更新:
1.对话框之模态和非模态窗口
Windows对话框分为两类:模态对话框和非模态对话框。
模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。
总结:
模态窗口创建
1.在主窗口中添加一个按钮,设置“Caption”为模态对话框,修改其名称。
2.插入窗口:右键点击Dialog,选择插入dialog,在窗口中添加按钮。
.
选中新建窗口,更改ID为IDD_EXEC,如下图所示:
3.在IDD_EXEC窗口中,右键点击窗口,添加类,设置类的类名为CDlgExec。
4。添加点击触发事件:在主窗口中,点击模态对话框按钮,在属性栏中点击闪电按钮添加事件,如下图所示:
或者右键点击模态对话框,添加点击触发事件,如下图所示:
最好的方法是双击模态对话框,添加点击触发事件。
5.在CDialogDlg.cpp中添加CDlgExec.h头文件,如下图所示:
双击模态对话框会自动生成相对应的代码,在代码中添加代码,如下图所示:
首先创建对象:CDlgExec dig;
设置弹出模式:dig.DoModal();
模态窗口有阻塞功能,点击窗口后,窗口不会立刻消失。
非模态窗口创建
1.在主窗口中添加一个按钮,更改“Caption”为"非模态对话框"
2.右键点击Dialog,选择“插入Dialog”,更改窗口ID为IDD_SHOW
3.在IDD_SHOW窗口中添加按钮,设置“Caption”为“非模态弹出”
4.在IDD_SHOW窗口中点击右键,添加类,设置类名为CDlgShow
5.在主窗口中,双击非模态对话框按钮,为非模态对话框添加点击事件。程序如下所示:
说明:
首先要添加CDlgShow.h文件。
创建非模态对话框对象:CDlgShow dig;
创建窗口:dig.Create(IDD_SHOW);
显示窗口:dig.ShowWindow(SW_SHOWNORMAL);
完成后点击主窗口的非模态弹出,非模态窗口会一闪而过,需要将CDlgShow.dlg写入CDialogDlg.h文件中,并引入CDlgShow.h文件,如下图所示:
完成后窗口不会立刻消失,会停留直到手动关闭。但再次点击时会报错,要将创建窗口的程序写到 CDialogDlg.cpp文件的OnInitDialog()函数中,如下图所示:
自定义对话框
在单文档模式下,添加自定义对话框选项,并为该选项添加事件处理器。添加.h文件和窗口显示代码。
逃跑的按钮
1.新建一个类:MyButton 继承与CButton
2.双击主函数Dlg,看.h文件是否添加
3.在新建类的WM_MOUSEMOVE事件中添加以下代码:
4.在主函数Dlg代码中添加以下代码:
5.给按钮添加位图
Bitmap要设置为TRUE
让按钮变灰
2.对话框之静态文本
用静态文本显示文本
1.点击工具箱添加Static Text 控件,设置内容为“哈哈”
2.添加两个按钮,设置内容为“设置为呵呵”和“获取内容”
3.点击静态文本控件,更改ID为IDC_TEXT,右键点击静态文本,为静态文本添加变量,设置访问权限为private,类别为Control(控件类型,还有value,值类型),添加名称为m_text,如下图所示:
4.设置文本内容:
双击“设置为呵呵”按钮,添加点击事件:
5.获取内容并弹出:
双击主窗口中“获取内容按钮”,添加点击事件:
用静态文本显示图片
1.将bmp图片放在程序所在的文件夹下
2.添加静态文本控件,设置ID为“IDC_PIC”,添加变量,设置变量名为“m_pic”;
3.将图像显示代码写入初始化代码OnInitDialog()中,如下图所示:
#define HBMP(filepath,width,height)(HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION)
用按钮更改显示内容
点击按钮后,更改按钮显示的内容
1.在主窗口中添加一个按钮,更改Caption为任意值。
2.为按钮设置变量,更改变量权限,设置变量名为“m_btn”。
3.双击按钮,添加点击事件:
按钮设置点击状态
总结:
创建新窗口时需要给新窗口定义新的类,创建新的类;而静态文本要创建变量,按钮要添加点击事件。
3.对话框之文本编辑框
1.创建新项目,选择Edit Control工具,创建文本编辑框。
2.若要支持输入换行,要属性中的Multiline改为true(可变为多行),将Want Return改为ture(接收Enter键换行),如下图所示:
3.若要编辑框在水平方向无限输入,要将Auto HScroll改为true
若要编辑框在竖直方向无限输入,要将Auto VScrol改为true
如下图所示:
4.若要在编辑框中添加竖直方向的滚动条,要将Vertical Scroll改为true。
若要在编辑框中添加水平方向的滚动条,要将Horizontal Scroll改为true。如下图所示:
案例1
1.添加两个文本编辑框,两个按钮:
2.为文本编辑框添加变量,如图所示:
更改访问权限和名称即可。
3.第一个编辑框默认有内容,将内容写入初始化函数中
4.为复制按钮添加点击事件,双击复制按钮,添加代码:
5.为退出按钮添加点击事件,双击退出按钮,添加代码:
6.新建的文本编辑框在运行时,只要按下回车,程序就会退出,重写可解决这个问题。
找到该编辑框的类点击属性,在重写选项中找到OnOK,点击添加代码:
把该行代码注释掉:
案例2
1.添加一个编辑框,两个按钮,为编辑框以值的方式添加变量
更改访问权限及名称。
2.双击设置内容按钮,为按钮添加点击事件:
3.双击获取内容按钮,为按钮添加点击事件:
总结:
4.对话框之下拉框
1.新建项目,添加下拉框工具Combo Box。
2.点击属性,在data中添加下拉内容,用英文分号;分隔。此时,下拉框的内容可修改,若想取消修改,要将属性中Type改为下拉列表(Drop List)
3.列表内容会默认以ASCLL顺序排序,若想自定义顺序,将Sort改为False
4.以代码的方式给下拉框添加内容:
给下拉框添加变量
用代码对下拉框进行操作
4.在下拉框的事件中有一个CBN_SELCHANGE,每次选项更改以后会触发该事件,当选项更改后,可以利用该事件将更改的选项弹出:
代码如下:
总结:
4.对话框之列表
1.新建项目,选择List Control控件,在View中选择Report(列表模式)
2.为列表控件添加变量
3.在初始化代码中添加内容:
总结:
单选框
按ctrl+B可以对控件进行排序
当选择后,弹出所选中的内容
复选框
添加控件,并为控件添加变量
添加代码:
在按钮添加事件中添加代码:
效果如下: