DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 404 405 406 407 408 409 410 411 412 ··· 474 下一页

2013年8月27日

摘要: 1.WindowProc是你给自己的窗口定义的窗口处理函数DefWindowProc是windows平台提供的默认窗口处理函数如果某些消息你不需要做特别的处理,调用DefWindowProc进行处理就可以了,不需要你自己再去些那些windows的"标准动作"2.根据1,显然,你只能定义WindowProc而不能定义DefWindowProc看看MFC的CWnd源码就一目了然了LRESULT CWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){// OnWndMsg does most of the wor 阅读全文
posted @ 2013-08-27 14:15 DoubleLi 阅读(920) 评论(0) 推荐(0)

摘要: msdn上的解析CWnd::SubclassWindowBOOL SubclassWindow( HWND hWnd );Return ValueNonzero if the function is successful; otherwise 0.ParametershWndA handle to the window.RemarksCall this member function to "dynamically subclass" a window and attach it to this CWnd object. When a window is dynamical 阅读全文
posted @ 2013-08-27 14:11 DoubleLi 阅读(636) 评论(0) 推荐(0)

摘要: 序:本人对Windows系统、MFC谈不上有深入的了解,但对MFC本身包装API的机制很有兴趣,特别是读了候老师的《深入浅出MFC》后,感觉到VISUAL C++的Application FrameWork十分精制[不敢用“完美”一词]。在以前,我对SDI结构处理消息有一定的认识,但对于模式对话框的消息机制不了解,读了《深入》一书也没能得到解决,近日,通过在CSDN上网友的帮助,和查阅MSDN,自认为已经了解。一时兴起,写下这些文字,没有其它目的,只是希望让后来者少走弯路,也希望和我一样喜欢“钻牛角尖”的人共同讨论、学习。如果你是牛人,那么你现在要慎重考虑有没有充足的时间读这些幼稚文字[何出此 阅读全文
posted @ 2013-08-27 13:42 DoubleLi 阅读(469) 评论(0) 推荐(0)

摘要: 走出MFC子类化的迷宫KEY WORDS:子类化SUBCLASSWINDOWMFC消息机制许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但是,在实际开发中还是有些情况这些标准控件也无能为力,比如:在我们的应用中要求一个EDIT得到老师对学生的评价A、B、C 阅读全文
posted @ 2013-08-27 12:54 DoubleLi 阅读(455) 评论(0) 推荐(0)

摘要: 1、CWnd::AttachBOOLAttach(HWNDhWndNew);返回值:如果成功,则返回非零值;否则返回0。参数:hWndNew指定了Windows窗口的句柄。说明:将一个Windows窗口与CWnd对象相连接。CWnd::SubclassWindowBOOLSubclassWindow(HWNDhWnd);返回值:如果函数成功,则返回非零值;否则返回0。参数:hWnd窗口句柄。说明:调用这个成员函数以动态子类化一个窗口,并将它与这个CWnd对象相连接。当窗口被动态子类化时,窗口消息将通过CWnd的消息映射,并首先调用CWnd类中的消息处理函数。发送给基类的消息将被传递给窗口的缺省 阅读全文
posted @ 2013-08-27 12:45 DoubleLi 阅读(1140) 评论(0) 推荐(0)

摘要: CWnd,CDC, Cxxx等都是MFC的类,这些类提供了很多成员函数来执行系统调用等操作,但是核心的类成员数据都是 句柄,(包括窗口句柄,DC句柄,线程句柄等)。 m_hWnd m_hDC m_hThread 如果这些类对象的这些句柄为空,就表示无效对象。比如你 CWnd * pWnd = new CWnd,执行是合法的,但是没有Create就没有窗口句柄,基本上就是一个无效对象,只是系统内存申请了内存分配空间而已,很多操作都无法执行(debug模式下会出现断言错误窗口)。 但是,假如你申请了一个CWnd,CDC的对象实体,可以使用Attach来指定一个有效的句柄付给这个对象。那么此对象就是 阅读全文
posted @ 2013-08-27 12:35 DoubleLi 阅读(2493) 评论(0) 推荐(0)

摘要: 一、Windows对象和MFC对象的区别?MFC对象实际上并没有把整个Windows对象都包装在其中。对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对象,也就是WNDCLASS,是一个Windows对象),那么这个MFC对象就是有效的,否则这个MFC对象是空的。如果你还不明白,请回忆一下,当我们使用MFC创建一个窗口时,是分两步进行的:第一步,new一个CWnd对象,这一步是创建MFC对象,但是其中的HWND还是非法的,因为对应的Windows对象还没有被创建出来;第二步,调用CWnd的成员函数Create创建真正的Windows对象,同时,把先 阅读全文
posted @ 2013-08-27 11:35 DoubleLi 阅读(882) 评论(0) 推荐(0)

摘要: 这些小技巧之所以特别,是因为这些信息通常吧不能在C++书籍或者网站上找到。比如说,成员指针,即使对于高级程序员也是比较棘手,和易于产生bugs的,是应该尽量避免的问题之一。 What makes these tips special is that the information they provide usually cannot be found in C++ books or Web sites. For example, pointers to members are one of the most evasive, tricky, and bug-prone issues for 阅读全文
posted @ 2013-08-27 11:22 DoubleLi 阅读(4052) 评论(0) 推荐(1)

摘要: 一、程序风格: 1、严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。 3、对变量的定义,尽量位于函数的开始位置。二、命名规则: 1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。 即: 变量名=变量类型+变量的 阅读全文
posted @ 2013-08-27 10:10 DoubleLi 阅读(1003) 评论(0) 推荐(0)

2013年8月23日

摘要: 我们知道,c++中,类的静态成员是要在.cpp文件中定义的,如果在.h中定义,会出现重复定义。但是在写类模板时,一般所有的代码都是放在.h文件中的,如果要做分离是一件很麻烦的事。那如果出现了静态成员怎么办?如://====ca.h=====templateclassca{public:staticstd::vectorm_vec;};对于这个m_vec怎么办呢?难道要我们在每个使用该类模板的.cpp中,都手动增加一个定义吗?不用那么麻烦。就在ca.h中,加上一条//=====ca.h=====templatestd::vectorca::m_vec;这样,就可以对所有的类型自动定义该静态变量啦 阅读全文
posted @ 2013-08-23 18:01 DoubleLi 阅读(2765) 评论(1) 推荐(1)

上一页 1 ··· 404 405 406 407 408 409 410 411 412 ··· 474 下一页