win32界面开发
lyclowlevel
这个作者很懒,什么都没留下…
展开
-
使用WTL::CBitmap时需要注意的一个事项
CBitmap::LoadBitmap可以从EXE模块中获取指定资源的位图句柄(HBITMAP),该函数内部使用WIN32 API:LoadBitmap加载资源。仔细查看API LoadBitmap的remark部分,可以发现该API加载后得到的位图是一个“设备相关的位图”。这样就存在一些缺陷:这种位图无法选入到打印机中;如果当前的系统配置改变,加载得到的位图也会跟着改变。本人在实际项目中原创 2011-06-20 11:34:00 · 1149 阅读 · 0 评论 -
深入了解WM_SIZE
在窗口大小发生改变时,系统往窗口发送WM_SIZE消息,WPARAM指出窗口新的状态,LPARAM给出窗口新的大小。窗口的状态有三种:SIZE_MINIMIZE,SIZE_MAXIMIZE,SIZE_RESTORED。系统根据当前窗口的状态,在产生WM_SIZE消息时指定不同的WPARAM。然而,系统如何知道窗口当前的状态。很显然,系统必须用一些内存保存窗口当前的状态。保存在哪里呢?原创 2012-03-04 22:36:15 · 16172 阅读 · 0 评论 -
z-order引出的问题
在窗口与窗口之间毫无重叠的情况下,根本不需要关心z-order。然而,当窗口之间出现重叠时,系统就需要通过一个标准来确定窗口的显示顺序。这个标准就是z-order。存在多个因素影响一个窗口的z-order: 1、窗口类型是否为TOPMOST; 2、窗口间的父子关系; 3、窗口间的owner关系; 4、是否为active状态。原创 2012-02-26 11:13:01 · 5411 阅读 · 3 评论 -
HINSTANCE+hPreInstance
在Windows98时,为了节省内存,需要一个应用程序的多个实例共享一个WNDCLASS。当程序启动时,hPreInstance指向前一个实例,如果当前实例为第一个实例,那么其值为NULL。所以,早期的WINDOWS程序,总会有如下代码:if (!hPreInstance){ wndclass.cbStyle = *** *** *** RegisterClass原创 2010-04-12 16:13:00 · 909 阅读 · 0 评论 -
使用ShellExcecute打开指定目录并选中指定文件的方法
语句如下: ShellExecute(NULL, _T("open"), _T("explorer"), _T("/select,\"f:\\TDDownload\\down=yes.zip\""), NULL, SW_NORMAL); 注意,第四个参数中路径原创 2011-10-11 10:02:32 · 1411 阅读 · 0 评论 -
线程退出时,其拥有的窗口资源也会被释放掉。
http://msdn.microsoft.com/en-us/library/ms686724%28v=vs.85%29.aspx Terminating a thread has the following results:Any resources o原创 2011-03-06 17:38:00 · 723 阅读 · 0 评论 -
主窗口的诞生过程
《深入浅出MFC》这本书,对于VC程序员来说,应该算是如雷贯耳。此书对于MFC程序的来龙去脉阐述颇为精彩,但也许是出于描述的方便,在讲到“主窗口如何产生”这一话题时,侯老师将我们平常在VC下看到的CMyApp::InitInstance()修改了一下,如下所示://the original codesBOOL CSellManagerApp::InitInstance(){ /原创 2007-04-06 21:34:00 · 942 阅读 · 0 评论 -
VC中禁用“脚本错误调试”窗口的解决方法
最近,忙于写“抽取QQ相册图片URL”模块,没有多大时间写心得。早在曾同学给我下单的第二天,我就已经写好了模块的一个初始版本,可是我的模块始终存在着三个问题:无法屏蔽“脚本错误调试”窗口、内存消耗太大、速度不快。速度不快,这是因为对于一个给定的QQ号,腾讯需要从数据库里面提取相关数据,然后再传回到客户端,网速如果不快,或者腾讯服务器忙,必然会导致我的模块速度变慢。不过,通过设置浏览器的控制原创 2009-06-21 17:55:00 · 5573 阅读 · 1 评论 -
message loop and win prok
message loop由程序员控制,win prok由系统调用,两个模块看起来像是异步运行的。初学者往往担心窗口过程在处理消息A时,会被消息队列发送过来的消息B中断。这是杞人忧天。虽然,WINDOWS是多任务系统,一个进程有多个线程,然而WINDOWS保证一个线程的消息队列只向在同一线程中的win prok发送消息。也就是说message loop 和win prok处于同一线程。同一线程内原创 2010-04-12 16:30:00 · 421 阅读 · 0 评论 -
窗口背景的刷新问题
影响背景刷新的因素有:1、注册窗口类时,是否指定了hbrBackground;2、调用InvalidateRect时,第三个参数的取值。可以分为以下三种情况:1、未指定hbrBackgroundBeginPaint返回的PAINTSTRUCT的成员fErase为TRUE2、指定了hbrBackground且调用InvalidateRect时第三个参数为FALSE原创 2010-04-13 15:37:00 · 1137 阅读 · 0 评论 -
Windows中字体磅值的含义(草稿版)
在英式度量体系中 1磅=1/72英寸,对于17寸的CRT而言,大小为10磅的字体最适合阅读。假设字体大小的磅值是物理意义上的,那么当电脑外接一个投影仪时,由于系统的所有属性均没变,所以在投影仪上显示的字体的大小也是10磅。但是,投影仪离观看者的距离已经变长很多,相对而言字体就会显得很小,不适宜观看者的阅读。 WINDOWS为了用户能够在不同设备条件下取得同样的用户体验原创 2010-04-27 10:12:00 · 2581 阅读 · 0 评论 -
ATL中修改文本控件的文本颜色
1、添加以下宏,处理WM_CTLCOLOR*消息 MESSAGE_HANDLER(WM_CTLCOLOR*, OnCtlColor) 2、在OnCtlColor中:LRESULT CAboutDlg::OnCtlColor(UINT /*uMsg*/, WPA原创 2010-12-13 11:08:00 · 765 阅读 · 0 评论 -
窗口自绘
在做一些异形窗口时,往往会响应以下NC消息:WM_NCPAINT, WM_NCACTIVATE, WM_NCLBUTTONDOWN, WM_NCMOUSEMOVE。但是,对于NC区的处理方式会受到系统版本及桌面主题的影响。最明显的一个例子是,在XP和WIN7下,窗口标原创 2010-12-30 14:50:00 · 2106 阅读 · 0 评论 -
Differences between WM_NOTIFY and WM_COMMAND
WM_COMMAND 用户的操作导致的消息,比如用户选择了某个菜单项、按下某个快捷键、点击某个按钮。程序员处理这些消息。 WM_NOTIFY 控件跟父窗口沟通的渠道。父窗口处理这些消息。 ==============================原创 2010-12-30 21:11:00 · 587 阅读 · 0 评论 -
从ATL窗口销毁想到的对象生命周期管理
使用ATL窗口时,经常会手动销毁窗口,大致的代码如下: DestroyWindow(); m_hWnd = NULL;DestoryWindow()调用是同步的,函数返回时窗口已经被销毁。做为一个微软的好公民,手动将m_hWnd置为空是一个好习惯。 但是,这种做法是不合理的。因为m_hWnd是父类的成员,它的值应该由父类控制。其实,在某些情况下这种做法会产生一个隐原创 2012-04-22 20:35:24 · 1276 阅读 · 0 评论