在初學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 閱讀(432)
評論(0) 編輯 收藏 引用