MFC开发常见问题的回答3

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

第一辑: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):

//.....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航