摘要: 1,回调函数工作机制回调函数由操作系统自动调用,回调函数的返回值当然也是返回给操作系统了。2,截获操作系统发出的消息,截获到后,将另外一个消息返回给操作系统,已达到欺骗操作系统的目的。下面还是以具体例子来说明比较好。在 Windows下,每一个鼠标消息都是由 WM_NCHITTEST 消息产生的,这个消息的参数包含了鼠标位置的信息。通常情况下,要把这个消息直接交给 DefWindowProc 函数处理,该函数会返回一个值来告诉 Windows 鼠标按下的是窗口的哪一部分。Windows 利用这个返回值来决定要发送的鼠标消息的类型。例如,如果用鼠标左键单击窗口的标题栏,处理WM_NCHITTES 阅读全文
posted @ 2013-11-01 15:42 陳さん様 阅读(185) 评论(0) 推荐(0)
摘要: 界面美化摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:1.大致了解MFC框架的基本运作原理;2.熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3.熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 阅读全文
posted @ 2013-11-01 15:38 陳さん様 阅读(1764) 评论(0) 推荐(0)
摘要: [改变对话框的大小]#define GROUPBOX_STARTID 80001 Code:2 CRect CurrentRect; 3 GetWindowRect(&CurrentRect) // 得到当前对话框的大小4 5 CurrentRect.bottom += groupbox_rect.Height()+20; 6 MoveWindow(&CurrentRect,TRUE); //改变大小,TRUE是改变大小之后刷新 [动态添加控件]以GroupBox为例,首先需要new一个CButton,然后调用其Create函数,注意这里的Create中的CRect参数,如果是 阅读全文
posted @ 2013-11-01 12:32 陳さん様 阅读(180) 评论(0) 推荐(0)
摘要: map容器的循环删除一直是一个容易出问题的地方,在删除成功之后iterator会自动往下移。未避免涉及到这些容易混淆的问题,在删除之前先用一个Iterator来记录其下一个元素。如下:Code://removeextrawindowsvideo_wnd_map_t::iteratorit=m_video_wnd_map.begin();while(it!=m_video_wnd_map.end()){video_wnd_map_t::iteratorit_next=it;++it_next;if(config_map.find(it->first)==config_map.end()){ 阅读全文
posted @ 2013-11-01 11:13 陳さん様 阅读(142) 评论(0) 推荐(0)
摘要: Map容器[转载]http://blog.csdn.net/sun_top/archive/2009/05/1**193533.aspxmap类定义了一个关联容器,并且在容器中使用唯一的关键字来映射相应的值。例如: A 0 B 1 C 2从本质上来说,关键字就是值的名字。在map对象中存储了一个值之后,就可以通过关键字来获得它。map对象是一系列关键字/值的匹配对。map的主要功能在于:只有你知道了一个值的关键字,就能够找到这个值。 例如: 定义一个map对象m,在该对象中使用人名作为关键字,并将每个人的电话号码存储为值。那么可以使用 m[“张三”] 表示张三的电话号码。从前面的例子可以看出m 阅读全文
posted @ 2013-11-01 11:09 陳さん様 阅读(128) 评论(0) 推荐(0)