MFC开发常见问题的回答3

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
第一辑: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)://.....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行