MFC学习笔记基础
来源:互联网 发布:现在下片用什么软件 编辑:程序博客网 时间:2024/05/22 14:15
1.
MFC中控件的group属性可以将相同的属性归为一组,直到遇到下一个也标记有group属性的控件。在vs2008中,当将一组控件用一个变量来关联(DDX)时,在构造函数里面是将其默认为选择了第一个空间。起码将radiobutton设置为一组是这么做的。
2.
函数名前有ON一般来说是在消息处理之前会调用。跟DXUT挺像,但感觉更难用,更不方便。
3.
DoDataExchange是需要显示调用的,如果运行过程中发生了某些改变,例如要在没按OK键之前从控件中得到值,预先调用updatedata();参数为缺省值true,为得到值,为false则为输入值到控件。invalidate方法可以让窗口无效,引起窗口的重绘,从而可以再Onpaint中添加代码。
4.
要修改窗口的外观,在Cmainframe的precreatewindow方法中修改createstruct结构可以达到目的。在单文档修改文档名时,由于单文档默认有FWS_ADDTOTITLE 所以预先要先改变cs.style 将此属性去掉。此上为创建窗口之前进行改变,若要在创建窗口之后改变则setclasslong,在oncreat内调用。同理有getclasslong,precreatewindow中可以自定义wndclass来自定义窗口注册等操作最后将其与cs关联起来,即将cs的lpszclass成员赋值为wndclass的lpszclassname显然相当麻烦,MFC提供有AfxRegisterWndClass返回值为窗口类,可以进行一些比较简单的修改。注意其中的hInstance要用全局函数AfxGetInstanceHandle。要改变视类,当然要在view类中去改变。
5.
图标的导入,用loadicon(),如果是导入自己的图标,第一个参数要获得句柄,有三种方法:一:AfxGetInstanceHandle二:考虑到有个APP类表明了我们的应用程序,且该类中有个全局变量theApp,可以再frame中extern这个变量从而得到他的m_hInstance参数,该参数表明了目前的应用程序,三:AfxGetApp得到目前的App然后同二,第二个参数要获得图标的指针,用宏MAKEINTRESOURCE参数即为图标的ID,这个宏可以将ID转换为指针。
6.
settemer设置好后通过消息wm_timer来添加处理。注意局部变量和static。
7.
toolbar分四个步骤,msdn里有详细说明,如果要实现“工具栏”选项的功能,让工具栏能够消失则需要调用RecalcLayout将其他控制栏的位置进行重新调整,之后最好调用DockControlBar再停靠一次,实现在浮现状态使工具栏消失。但是在显示的时候会在最上面。待解决。。。
8.
添加updateconmmadui时间可以添加复选项。
9.
自定义消息,
第一步:在#define时用到宏WM_USER,小于等于宏的是系统保留的,大于的可以自己定义,
第二步:定义该消息的消息处理函数,
第三步:添加消息映射。深入理解消息系统。
可以再ONCREAT之里面sendmessage这个消息,从而即使处理这个消息。而postmessage是把消息放到消息队列中。
重绘会发送wm_paint消息。第一次显示就会调用。
10.
Cstring得到他所占的大小,用以下代码可以实现
CClientDC dc(this);
CSize sz=dc.GetTextExtent(str);
sz即为大小
11.
要判断一个窗口是否创建,可以巧妙的直接判断他的句柄。
12.
在状态栏中显示数值,例如鼠标的位置有三个方法;
一:在视类中getparent之后可以强制转换为mainframe之后得到m_wndStatusBar再调用setwindowtext但是要吧m_wndStatusBar设置为公有;
二:setmessagetext cframewnd的成员函数
三:cmainframe的getmessagebar
四:Cwnd的GetDescendantWindow它可以找到所有的子孙窗口,状态栏的create中有ID号,所有的都有ID号 看下定义就可以。
13.
getwindowrect得到的区域是一屏幕为原点的,如果是对话框则需要转换。调用screentoclient。
14.
wm_ctlcolor消息可以用来设置控件的画刷,renturn的即为画刷,此画刷决定对话框背景和控件背景。OnCtlColor会调用多次,而且每次都分配给该控件或背景一个PDC。所以函数里面的PDC是自己的DC。
15.
窗口绘制过程。先擦除窗口背景,会发送WM_ERASEBKAND消息,所以可以添加此消息响应,在里面进行位图显示。之后在重绘。在消息里面要出掉基类方法的调用
当然,也可以再重绘消息里面添加,ondraw函数。但是会有比较大的闪烁
16.
如果不用new,则分配在栈中,函数完了之后,内存回收。而new是在delete之后才回收,分配在堆中。虽然在函数中指针的存储单元被回收,但是对象的内存还在。
17.
窗口重绘小节:
重绘发送WM_PAINT消息,则调用消息处理函数OnPaint。
在Cview类中OnPaint中有cpaintdc对象,这个对象有beginpaint函数在构造函数中,有endpaint函数在析构函数中,所以不需要额外调用函数对。然后调用OnPrepareDC函数,
再调用OnDraw函数。在调用OnDraw函数之前要掉用OnInitialUpdate。是在一个视图创建之后第一个调用的函数,可以进行一些初始化的操作
18.
逻辑坐标点到设备坐标点转换。OnPrepareDC随时调整视口的原点。
19.
创建兼容DC
20。
要读取软件配置文件,肯定要在软件初始化的时候读入,所以要在APP类中的InitInstance函数中写,在SetRegistryKey(_T("应用程序向导生成的本地应用程序"));调用WriteProfileString
SetRegistryKey是设置注册表项。
- MFC学习笔记基础
- MFC学习笔记7 MFC基础
- MFC学习笔记——基础
- 2013.8.23 学习笔记《MFC》(一) MFC基础
- MFC学习笔记(1)——Windows程序基础
- MFC学习笔记2 Windows编程基础--MessageBox
- MFC rtti 学习笔记
- 《深入浅出mfc》学习笔记
- MFC学习笔记
- MFC学习笔记一
- MFC学习笔记
- MFC学习笔记
- VC/MFC学习笔记
- 《深入浅出mfc》学习笔记
- MFC学习笔记(1)
- MFC学习笔记(6)
- MFC学习笔记二
- MFC学习笔记三
- 【转】Gtk与Qt编译环境安装与配置
- D-Bus体系系列
- 职场“老好人”生存法则
- zthread库类型总结
- 双模手机介绍:什么是双模手机?
- MFC学习笔记基础
- 进程间通信
- 重温IS_ERR PTR_ERR ERR_PTR
- MySQL 数据库常用命令小结
- C# 开发一个旋转锁
- Discuz!7.0数据字典
- 忆龙2009:如何将软件版本导入到iMC数据库中供设备使用
- 忆龙2009:EAD中的安全级别定义
- WINAPI 汉诺塔问题Hanoi Problem