12 2013 档案

摘要:该问题产生的原因为:创建类型为regular dll 的MFC dll中的窗口创建与其它DLL或EXE中的窗口创建混乱。比如:dll1 中函数 fun1() 调用 dll2 中函数 fun2(),在fun2 ()中创建了窗口,但是窗口销毁的时候,又是在dll2中。。或者是其它情况。查找此类问题的原因就是查看窗口的创建过程,而且创建窗口的函数由谁来调用。根本原因:MFC在创建窗口的时候,会使用AfxGetModuleHandle来获取HINSTANCE句柄,而一般在创建窗口的时候, 我们会使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行将HINSTA 阅读全文
posted @ 2013-12-31 08:43 夜雨無聲 阅读(1309) 评论(0) 推荐(0) 编辑
摘要:1.如果程序按住左键不放,改变鼠标形状,左键弹起时,又改回默认,这是很简单的,在OnLButtonDown下,SetCapture,然后SetCursor即可。2.如果单击了左键,而且弹起来了,再移动鼠标时,这时候就比较难以改变,如何要做一个取色计之类的软件,你还得处理单击不使之生效的问题。这个时候,可以使用一个假象来实现该功能:1)建一个全屏幕窗口,去标题,把WM_ERASEBKGROUND直接返回TRUE,这时候,窗口不会控除背景,它的背景就是屏幕背景,这个就是假象。2)为了使窗口跟着屏幕刷新,比较屏幕上有GIF,FLASH之类的动态东东,也为了动态刷新,可以使用WS_EX_TRANSPA 阅读全文
posted @ 2013-12-25 11:54 夜雨無聲 阅读(541) 评论(0) 推荐(0) 编辑
摘要:extern BOOL fFinished;MSG msg;while (!fFinished){ while (::PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) { if (!AfxGetApp ()->PumpMessage ()) { PostQuitMessage (0); return; } } LONG lIdle = 0; while (AfxGetApp ()->OnIdle (lIdle++));}如上代码,设... 阅读全文
posted @ 2013-12-23 14:16 夜雨無聲 阅读(426) 评论(0) 推荐(0) 编辑