上一页 1 ··· 8 9 10 11 12 13 14 下一页
摘要: 探索Win32系统之窗口类(Window Classes in Win32)Kyle MarshMicrosoft Developer Network Technology GroupMSDN技术组摘要本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化。在本文中,"类","窗口类"这两个术语等同,都不是指C++类,而是指和窗口相关的一组信息的集合。简介窗口类的风格决定了窗口的外观和风格。所有的窗口都会属于某一个窗口类。在创建一个窗口之前,必须注册(register)一个相应的窗口类。32位Window 阅读全文
posted @ 2013-08-25 22:14 问笑 阅读(360) 评论(0) 推荐(0)
摘要: 前幾天逛msdn,看了一下關於window class的介紹,發現有些東西沒有注意到的,特此翻譯窗口類的類別:有三種——systemClasses、Application Global Classes、Application Local Classes這三種的不同在于作用域以及何時、如何注冊和銷毀方面。SysTemClasses所謂的SystemClasses,是指那些已經由windows預先注冊的類——windows標準控件的窗口類就是他們。由于是系統注冊了這些類,因此用戶無法銷毀他們。當一個進程的線程第一次開始呼叫GDI函數時,系統就會為這個進程注冊這些systemClasses。每個應用 阅读全文
posted @ 2013-08-25 21:45 问笑 阅读(205) 评论(0) 推荐(0)
摘要: 1、MFC窗口如何与AfxWndProc建立联系。当一个新的CWnd派生类创建时,在调用CWnd::CreateEx()过程中,MFC都会安装AfxCbtFilterHook()。这个Hook将拦截HCBT_CREATEWND,将窗体的消息处理函数设置为AfxWndProc()。[cpp] view plaincopyprint?//wincore.cpp651 //CWnd::CreateEx函数通过AfxHookWindowCreate函数安插Hook BOOLCWnd::CreateEx(DWORDdwExStyle,LPCTSTRlpszClassName,LPCTSTRlpszWin 阅读全文
posted @ 2013-08-25 20:55 问笑 阅读(573) 评论(0) 推荐(0)
摘要: MFC(VC6.0)的CWnd及其子类中,有如下三个函数: classCWnd:publicCCmdTarget{public: virtualBOOLPreCreateWindow(CREATESTRUCT&cs);virtualvoidPreSubclassWindow();BOOLSubclassWindow(HWNDhWnd);}; 让人很不容易区分,不知道它们究竟干了些什么,在什么情况下要改写哪个函数? 想知道改写函数?让我先告诉你哪个不能改写,那就是SubclassWindow。Scott Meyers的杰作>的第36条是这样的Differentiate betwee 阅读全文
posted @ 2013-08-24 20:35 问笑 阅读(527) 评论(0) 推荐(0)
摘要: 我们在调用CWnd::GetDlgItem()函数时,MSDN告诉我们:The returned pointer may be temporary and should not be stored for later use.中文意思就是:返回的指针可能是临时的并且最好不要保存起来放到以后用。猜测:返回的指针既然可能是临时的,那么可能是非临时的(永久的),最好不要保存起来放到以后用(有时候可以保存起来)源码面前,了无秘密。让我们深入MFC源代码去看个究竟。先随便建立一个Dialog程序,然后在窗体上拉一个按钮,添加按钮事件,在按钮事件里写上如下代码:GetDlgItem(IDC_BUTTON1 阅读全文
posted @ 2013-08-24 04:19 问笑 阅读(532) 评论(0) 推荐(0)
摘要: (1) 在CYournameView(就是你的视图类,以下以CDrawLineView为例)添加了一个背景颜色变量COLORREF m_bgcolor;(2)修改这个函数:BOOL CDrawLineView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT cs cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,(HBRUSH)::GetSto 阅读全文
posted @ 2013-08-23 23:42 问笑 阅读(1769) 评论(0) 推荐(0)
摘要: 关于窗口重画的初级问题初初级问题:我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口挡住后重新显示等)为什么不见了?这 就是窗口重绘或者说重画的问题。当窗口改变后,会产生无效区域,这个无效的区域需要重画。什么是无效区域?自己到网上搜索或者看相关资料。我这里给出一个 特殊的解释:以最小化后还原为例,假设只有一个程序在运行,窗口最小化时显示计算机桌面,并不妨假设桌面是蓝色的背景,当窗口还原时,窗口所占的这一块区 域该显示些什么东西呢?操作系统并不知道,因此,就形成一块无效区域。要是我们告诉操作系统,显示一个红方块,于是它就显示一个红方块,我们的程序过一会 想显示一个绿方块呢?同样 阅读全文
posted @ 2013-08-23 23:10 问笑 阅读(650) 评论(0) 推荐(0)
摘要: OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint() 是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变, 移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过创建CPaintDC类的DC对象来响应该消息并调用视图的OnDraw成员函数.OnPaint最后也要调用OnDraw,因此一般在 OnDraw函数中进行绘制。The WM_PAINT message. 阅读全文
posted @ 2013-08-23 19:58 问笑 阅读(527) 评论(0) 推荐(0)
摘要: 前言:我一直对DLL技术充满好奇,一方面是因为我对DLL的导入/导出机制还不是特别的了解,另一面是因为我发现:DLL技术在Windows平台下占有重要的地位,几乎所有的Win32 API都是以导出函数的形式存放于不同的DLL文件中,在DLL方面的学习是任何一个想深入研究Windows内部机制的Windows程序员都不可能回避的事实。我在查阅了大量的文章后,对DLL技术有了一定的了解,所以我写了这篇文章来总结和整理我的思路,也为以后深入的学习提供宝贵的资料。对于如何制作DLL,网上有很多资料,我这里就不多罗嗦了。现在假设我们已经成功生成了一个Win32 DLL,这个DLL的名字是DLLInDep 阅读全文
posted @ 2013-08-22 21:08 问笑 阅读(804) 评论(0) 推荐(0)
摘要: DB与DIB的区别是什么?觉得书上介绍的有点抽象、不容易理解。他们两者之间的区别的“物理意义” 【“现实意义”】——姑且这么叫吧,呵呵!被这个问题困扰了很久,所以今天决定好好查资料总结一下,把它彻底搞清楚,也希望能对那些和我一样有着困惑的你 起到一点帮助。转入正题:【与位图相关的基础概念:】DDB位图(Device-dependent Bitmap):设备相关位图,也有书上称为GDI位图(Graphic Device Interface—图形设备接口)。DIB位图(Device-independent Bitmap):设备无关位图。GDI位图是一种GDI对象,在MFC中用CBitmap类来表示 阅读全文
posted @ 2013-08-21 16:26 问笑 阅读(1506) 评论(1) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 下一页