这样,系统就自动在该类添加了成员函数的声明并且在类外定义了函数。
六:添加消息处理函数(开始进入最难到部分了,至少我上这么认为)
也是直接做个例子,让窗口标题自动实时显示窗口宽度;
ClassVIew--右键点击Add Windows Message Handler,会看到左边一大堆的消息事件,这些只能慢慢使用慢慢记住的样子。
右下方Filter for message availableto 选择Window ,左边双击WM_SIZE -- Edit Existing
添加如下代码:
void CDialogDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CString csWidth; //创建一个字符串成员变量
csWidth.Format("%d",cx);//个人见解:窗口有大小,改变其大小后,就会响应触发这个(消息处理函数)。形参int cx是窗口宽度,这一行代码将cx转换为字符串格式。
SetWindowText("窗口宽度为:"+csWidth);//在标题栏中显示。(需改变窗口大小后才会显示)
}
PS:我创建的这个对话框窗口,起初是不能改变大小的(属性被设置为固定的了)。通过右键点击窗口视图--属性--样式--边框--调整大小,就可以随时改变窗口大小了。
②处理控件类消息
ctrl+w -- 左边选择要处理的控件ID,右边双击要处理的消息--然后点击Edit Code
void CDialogDlg::OnChangeEdit1() //实现在文本框输入什么内容,标题就变成什么内容。
{
CString csText;
m_Edit1.GetWindowText(csText);//变量m_Edit1是刚创建的,变量要子类化的样子。见(三)。将获取的文本框Edit1的内容存到csText
SetWindowText(csText);
}
PS:我使用Visual C++ 6.0处理时,虽然编译没错,但无法运行。换了Visual Studio 2010就可以了~弄了很久也不知道是怎么回事。。。
编辑框文本改变时的消息
六:系统消息对话框
int CWnd::MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
操作和VB一样。
void CDialogDlg::OnButton3()
{
MessageBox("你好吗?","提示",MB_OK|MB_ICONEXCLAMATION);
}
{
if((MessageBox("确定要关闭吗?","提示",MB_YESNO))==IDYES)
{
//CDialogDlg::OnCancel();//一开始我先成了这样,结果。。。关闭-确认--关闭?--确认…死循环了
CDialog::OnCancel();//CDialog是所有对话框的基类,oncancle是其一个成员函数,其作用就是关闭对话框。
}
}