在初学MFC的时候,选择了这本《Visual C++通用范例开发金典》这本书,非常不错,关键是很多基本的知识和小技巧。
然而,第一个Demo就让我很郁闷,半天都没有搞出来。不过昨晚,做了第二个的时候,出现了转机,不仅实现了课本上的功能,还完成了扩展操作,同时,对于消息映射的具体操作,如何手动添加消息映射代码,不借助工具有了新的体会,这个也导致了我完成了第一个的测试。
先前,对于MFC的实现仅仅看了下《深入浅出MFC》,不过很懵懂,不知道具体的做法。虽然很经典,不过对于我这个初学者还是很困难。
今天再次消化,终于得到了正确的做法。
原帖见CSDN上面的疑问:
http://topic.csdn.net/u/20100203/21/4eec88fc-1eaa-4e82-8d68-d4475d419b38.html?50579CSDN牛人辈出,也很热心,狂赞!!
具体来说就是,我更改了Static控件的属性,添加了代码,使得它可以更改,可是结果却没有任何实现,点击没有反应。于是不知所错。
后面,遵照上面高人指点,修改了Static的ID,改为IDC_3,就可以了,当时改成IDC_STATIC1还不行,后来成功之后,居然再改回来又可以,所以觉得这个世界很奇妙,很多东西都让人不知所错的迷茫啊!
具体来说就是两点:
1.修改ID,改为一个不是默认的值,然后更改属性为nofify。
2.添加方法,具体来说就是直接双击,出现一个对话框来显示这个方法,于是OK。
3.编写方法体,具体来说就是这个代码。
void CAdwDlg::OnStatic1()
{
// TODO: Add your control notification handler code here
CString str;
GetDlgItem(IDC_STATIC1)->GetWindowText(str);
if(str == "Hello,world")
GetDlgItem(IDC_STATIC1)->SetWindowText("nice!");
if(str == "nice!")
GetDlgItem(IDC_STATIC1)->SetWindowText("good!");
if(str == "good!")
GetDlgItem(IDC_STATIC1)->SetWindowText("Hello,world");
}
然后就完成了所有的任务,很简单,当然,添加方法以前都没有实现过。后来发现,编译器实际上给我们做了两件事情。
1.在主类中添加了相应的处理函数,也就是把我们这里处理消息的函数放在类中,作为一个成员函数,放在.h文件中声明
2.在实现中,添加了消息映射的代码,就是前面的
BEGIN_MESSAGE_MAP(CAdwDlg, CDialog)
//{{AFX_MSG_MAP(CAdwDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_STATIC1, OnStatic1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
有了这两步,就完成了全部的工作,添加了代码之后,就成功的实现了我们的目的。
即,建立消息处理机制,那么,整个工作就完成了。。
下载地址是:
http://www.pudn.com/downloads225/sourcecode/windows/control/static/detail1058929.htmlMFC的机制也就是这么多,正在进一步学习中。。。。。
posted on 2010-02-04 15:28
deercoder 阅读(415)
评论(0) 编辑 收藏 引用