自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuying's blog

记录一些事情

  • 博客(13)
  • 收藏
  • 关注

原创 MFC 单文档框架的主菜单创建时间

    在主框架的OnCreate函数中,你可以看到工具条和状态栏的创建,理论上来说,你也应该可以看到主菜单的创建。找找看,发现没有。但是当你运行程序的时候,却又明明有主菜单。很显然,MFC还是创建了主菜单,只是在某个函数中将它隐藏了。那是在哪呢?慢慢找,不着急。 你看到前面有这样的一句话,if (CFrameWnd::OnCreate(lpCreateStruct) == -1)  

2010-05-11 12:05:00 1861

原创 ON_PAINT

    假如现在要在客户区画一个充满整个客户区的椭圆,是在主框架内映射WM_PAINT消息还是在视图窗口映射WM_PAINT消息呢?答案是在视图窗口内,在主框架内映射这个消息,虽然会出现椭圆,但是出现的时间很短,一闪就没有,只有在视图里映射该消息才能使得椭圆是稳定显示的。这是什么原因? 

2010-05-10 12:22:00 366

原创 SetMapMode,SetWindowExt,SetViewportExt,SetViewPortOrg函数的一些理解

  四个函数的原型如下(来自MSDN)1.virtual int SetMapMode( int nMapMode ); //设置映射的模式2.virtual CSize SetWindowExt( int cx, int cy );//设置逻辑窗口大小3.virtual CSize SetViewportExt( int cx, int cy );//设置物理设备范围,为设定原点作准

2010-05-10 10:29:00 765

原创 如何派生在类向导中不存在的类

     这个问题可能很多人碰到,我就是其中之一。今天在做自定义控件程序的时候,想从CWnd中派生出一个类,竟然发现BASE CLASS中没有CWnd.后来在网上搜下,找到了一个解决办法。步骤如下:打开类向导,创建一个类,假如你想选择其基类为CWnd,但是可供选择的类中并没有,没关系,你先随便选择一个类,比如CBUTTON,然后手动修改代码。 注意:当然你也可以按照C++的规则手动

2010-05-08 11:45:00 355

原创 常见窗口之间的区别和相同点

在MFC中,窗口甚多,很容易混淆。最重要的是下面两组概念一定要非常清晰。1.父窗口和所有者窗口。区别:(1)Z-ORDER。父窗口的Z-ORDER和子窗口的Z-ORDER是相同的。而所有者的Z-ORDER和受控窗口的Z-ORDER是不同。一般情况下,受控窗口的Z-ORDER比所有者的Z-ORDER大。 (2)绘制区。子窗口只能在父窗口的绘制区内绘制,而受控窗口可以在所有者窗口的绘制

2010-05-08 10:26:00 381

原创 扩展消息的总结

 学习了扩展消息的总结之后,最深的体会是MFC里面的东西很严谨,任何一个步骤都不可缺少。这个接下来说。先总结一下。 到此为止,可以有以下三种方法可以将多个控件的消息让一个消息映射函数处理。(1)利用ON_COMMAND_EX。缺点:旧式通知消息不支持。优点:不要求控件的ID连续,可以让消息继续传递,因为它的返回值是个BOOL类型,如果返回FALSE,就可以让消息继续传递;参数NID可以很清

2010-05-08 10:03:00 428

原创 在静态控件上加载位图或者图像的一点问题

这里主要有几个问题。1.静态编辑框的ID默认为IDC_STATIC,不管你创建多少个,它的ID始终都是IDC_STATIC,并不会像其他控件(如按钮等)那样,自动的默认为IDC_BUTTON1,IDC_BUTTON2等。而且在默认的情况下,你并不能为该控件增加控件变量或者让其相应消息,只有将控件的ID改变之后才可以为其增加控件变量或让其相应一些消息。2.窗口的样式的确十分重要。很多时候你忽

2010-05-07 16:18:00 797

原创 窗口对象的自动清除 

一个MFC窗口对象包括两方面的内容:一是窗口对象封装的窗口,即存放在m_hWnd成员中的HWND(窗口句柄),二是窗口对象本身是一个C++对象。要删除一个MFC窗口对象,应该先删除窗口对象封装的窗口,然后删除窗口对象本身。   删除窗口最直接方法是调用CWnd::DestroyWindow或::DestroyWindow,前者封装了后者的功能。前者不仅会调用后者,而且会使成员m_hWnd保存的

2010-05-07 12:12:00 427

原创 非模式对话框的特点

模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然可以与其它界面进行交互。   非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处:  非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置该项风格。更

2010-05-07 11:32:00 837

原创 疑惑(关于SETPANETEXT)

   昨天做了一个在状态栏显示当前时间的程序,怎么都没有效果,今天早上重新一运行就没有问题了。很奇怪。不知道有没有人碰到和我一样的问题。

2010-05-07 09:27:00 668

转载 AppWizard所创建的文件

   AppWizard在读者指定的C:/Hello目录下创建了许多文件,这些文件包含了框架程序的所有的类、全局变量的声明和定义。初学者面对这一大堆文件可能会不知所措。现在我们把各个文件的作用及对应的类介绍一下。  根据可选项,AppWizard所创建的文件会略有不同。标准的AppWizard文件包括:工作区文件、项目文件和make文件应用程序源文件和头文件

2010-05-06 15:43:00 340

原创 自定义静态库

首先,我觉得要明白库的作用。即为什么要创建库?1.库可以增加代码的重用性。2.库可以使开发者专心于自己需要的模块,而不必要管别人开发的模块。 那么如何创建库,又如何在自己的代码中使用库的函数呢?1.保证自己创建的.lib文件被链接。可以放在当前程序目录下,也可以放在VC的安装目录下。2.最好是把库中的函数声明和函数的实现分别放在头文件和源文件里,而在调用函数的时候也要包括该

2010-05-06 14:12:00 345

原创 计算器的制作

1.最开始一个问题,系统自带的计算机上的按钮是有颜色的。要模仿,首先外观总要像的。于是想到了重载WM_CLTCOLOR消息处理函数,发现没有效果。第二天找到原因。      PS:其实重载WM_CLTCOLOR消息处理函数是有效果的,关键是要设置为主窗口绘制。并且在重载DRAWITEM里面必须在按钮上输出文字。在模板中创建按钮的时候,当样式设置为主窗口绘制之后,上面的文字是没有作用的,所以必须

2010-05-05 17:49:00 466

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除