VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
MFC开发常见问题的回答3

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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

 




相关文章

相关软件