MFC,你是什么---------------------高手请进 "MFC不就是用Hook把消息拦截下来再分派给各个类去处理" 怎么讲?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我并不懂MFC,只是以前学过几个月。没什么好感,它同样是微软的一个产品,一个让人看了就恶心的东西。可有时你不得不用它,因为windows是她家的嘛。我到现在还不明白,它给程序设计带来了什么好处,只给用它的人带来无尽的痛苦,和尽可能低的工作效率。 Belle(不会游泳的鱼....):以下就是MFC的源码,很多地方都会调用,比如 CWnd::CreateDlgIndirect()void AFXAPI AfxHookWindowCreate(CWnd* pWnd){ _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData(); if (pThreadState->m_pWndInit == pWnd) return; if (pThreadState->m_hHookOldCbtFilter == NULL) { pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT, _AfxCbtFilterHook, NULL, ::GetCurrentThreadId()); if (pThreadState->m_hHookOldCbtFilter == NULL) AfxThrowMemoryException(); } ASSERT(pThreadState->m_hHookOldCbtFilter != NULL); ASSERT(pWnd != NULL); ASSERT(pWnd->m_hWnd == NULL); // only do once ASSERT(pThreadState->m_pWndInit == NULL); // hook not already in progress pThreadState->m_pWndInit = pWnd;} xuejinlong(垃圾) :“只给用它的人带来无尽的痛苦,和尽可能低的工作效率。”这可能在刚开始或者深入探究其原理、代码的时候会发生。就像以前书上帮我们把未来描绘得非常美好,但当我们走进社会后,却失望了。 我觉得MFC编程只有2点,1是知道WINDOWS OS是一个消息驱动模式系统,一切的一切都是消息;2是WINDOWS API函数,大部分被MFC包装了,只要知道的函数多,编的程序就有质量。不知道我说得对不对,哈哈哈哈哈哈后~~~欢迎讨论湖正 wlrwx():这样对待好像是可以应付一般的编程了。但当MFC调用一个::DefWindowProc(),我就摸不到门了!在这个函数中对一些消息,系统会做一些界面的绘画,我又不知其内部是如何实现的(MS的document不详细),当我不想它画时,真是一头雾水。痛!痛!痛! MFC,你这个小妖精,怎么总让我得不到你,让我不能全部的了解你 superrg(秀华) :为了更好地使用工具,必需更深入地透视它。比较如铁锤和木锤,它们材质不同,适用场合不同,如果不了解,用铁锤去敲磁砖,必然会破之! MFC只是起到减轻一下你编程的痛苦而已! 我也這樣認為,vc只了解Windows系統的一個窗口.因為好多好書都是用C/C++/VC 描述和舉例的. 建议好好去看看MFC深入浅出里关于FrameWork设计的一章(好像是第三章吧),虽然你也许一辈子也不会做一个FrameWork,但是这样绝对会改变你对MFC的看法。你将会看到整个世界的结构。呵呵。 <<深入浅出MFC>>真的有这么好吗? VC调试时,无法查看变量的内容,请高手指教 RichEdit的显示 在网页中,点击某个按钮执行嵌在这个页面里ActiveX里的某个方法 WaitForMultipleObjects如何突破64个线程的限制 如何打开内存中的Word文件(不用临时文件)? 请问unicode版本下.memcpy()按双字节还是单字节读??? 一个很惭愧的问题,大脑已经抑制了 如何访问注册表? 请指教,3KS!!! VC6-MFC-GDI ,对话框载入图片后,对话框被遮挡后的重绘 在作控件程序中定义回调函数,帮忙看看如何改 打印问题。救命呀。。要交工啦
没什么好感,它同样是微软的一个产品,一个让人看了就恶心的东西。
可有时你不得不用它,因为windows是她家的嘛。
我到现在还不明白,它给程序设计带来了什么好处,
只给用它的人带来无尽的痛苦,和尽可能低的工作效率。
void AFXAPI AfxHookWindowCreate(CWnd* pWnd)
{
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
if (pThreadState->m_pWndInit == pWnd)
return; if (pThreadState->m_hHookOldCbtFilter == NULL)
{
pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
_AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
if (pThreadState->m_hHookOldCbtFilter == NULL)
AfxThrowMemoryException();
}
ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
ASSERT(pWnd != NULL);
ASSERT(pWnd->m_hWnd == NULL); // only do once ASSERT(pThreadState->m_pWndInit == NULL); // hook not already in progress
pThreadState->m_pWndInit = pWnd;
}
1是知道WINDOWS OS是一个消息驱动模式系统,一切的一切都是消息;
2是WINDOWS API函数,大部分被MFC包装了,只要知道的函数多,编的程序就有质量。不知道我说得对不对,哈哈哈哈哈哈后~~~欢迎讨论湖正
为了更好地使用工具,必需更深入地透视它。比较如铁锤和木锤,它们材质不同,适用场合不同,如果不了解,用铁锤去敲磁砖,必然会破之!