第一辑:http://www.csdn.net/develop/read_article.asp?id=6676
第二辑:http://www.csdn.net/develop/read_article.asp?id=7259
问:MFC程序如何处理WM_SETTEXT消息?
答:
MFC没有提供WM_SETTEXT消息的映射函数,所以需要我们自己定义 在message map里面 OnMessage(WM_SETTEXT, OnSetText) 在.h里面声明 void LRESULT CMyClass::OnSetText(wParam, lParam);//bool...等等函数类型自己决定
问:如何注册自己的消息?
答: 在message map里面
#define ON_WM_CHKTBLTOGGLE() { WM_CHKTBLTOGGLE, 0, AfxSig_vwp, (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BYTE, BYTE))OnChkTblToggle }, ON_MESSAGE(WM_CHKTBLTOGGLE, OnChkTblToggle)
如此声明消息函数 afx_msg LRESULT OnChkTblToggle(WPARAM wParam, LPARAM lParam);
LRESULT CMyView::OnChkTblToggle(WPARAM wParam, LPARAM lParam) { // TODO: write your code here. }
void CMYView::OnChkTblToggle(UINT, CPoint)
问:如何使我的窗口总位于屏幕顶端?
SetWindowPos(&wndTopMost,NULL,NULL,NULL,NULL,SWP_NOMOVE¦SWP_NOSIZE);
问:怎么弄一个HDC创建一个CDC? 有时候window API会给你一个DC的句柄,而你想利用其CDC,比如自画ComBox、按钮、tabctrl等等 下面有两种方法从一个hdc创建到CDC,你能把它们利用到任何MFC应用程序中! 方法一: void MyODList::DrawItem(LPDRAWITEMSTRUCT lpDrawItem) { CDC myDC; myDC.Attach(lpDrawItem->hDC); //在这里做你想做的! //I如果你不做下面的 detach, window会很不高兴哦:) myDC.Detach(); } 方法二: CDC* pDC = CDC:FromHandle(lpDrawItem->hDC);
没法说出上面良种方法在效率资源上的差异,至少下面的很简单,并且,你不会因忘记detach出错....
如何去掉窗口的标题条?
答: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { LONG dwStyle = ::GetWindowLong(GetSafeHwnd(), GWL_STYLE): dwStyle &= ~(WS_CAPTION¦WS_BORDER ): ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle): //.....

|