
MFC
zyzhangyue
这个作者很懒,什么都没留下…
展开
-
VC常用数据类型使用转换
一、其它数据类型转换为字符串短整型(int) itoa(i,temp,10); //将i转换为字符串放入temp中,最后一个数字表示十进制 itoa(i,temp,2); //按二进制方式转换 长整型(long) ltoa(l,temp,10);二、从其它包含字符串的变量中获取指向该字符串的指针CString变量转载 2015-05-17 13:33:26 · 250 阅读 · 0 评论 -
设备坐标和逻辑坐标
设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。 逻辑坐标(Logical Coordinate)是系统用转载 2015-05-18 21:25:35 · 450 阅读 · 0 评论 -
MFC常用调试函数
AfxCheckMemory BOOL AfxCheckMemory( ); // 检查当前分配的所有内存的完整性返回值:如果没有内存错误,则为非零值;否则为0。说明:这个函数使自由内存池有效并在需要时输出错误信息。如果这个函数没有检测到内存冲突,它什么也不输出。当前在堆中分配的所有内存块都会被检查,包括那些用 new分配的内存,但是不包括那些用直接调用内存分配函数转载 2015-05-18 21:23:58 · 900 阅读 · 0 评论 -
CDC类详细说明
CDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆转载 2015-05-18 21:22:37 · 1472 阅读 · 0 评论 -
对话框控件访问七种方式
GetDlgItem()->Get(Set)WindowText() GetDlgItemText()/SetDlgItemText() GetDlgItemInt()/SetDlgItemInt() 将控件和整型变量相关联 将控件和控件变量相关联 SendMessage() SendDlgItemMessage转载 2015-05-17 14:00:55 · 253 阅读 · 0 评论 -
UpdateData、Invalidate、InvalidateRect和UpdateWindow及RedrawWindow
Invalidate和UpdateWindow的区别按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列中WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用Update转载 2015-05-17 13:40:45 · 266 阅读 · 0 评论 -
退出对话框3种方法
退出程序用 AfxGetMainWnd()->SendMessage(WM_CLOSE); 关闭当前窗口 用 DestroyWindow( ); 关闭模式对话框用 EndDialog(0);转载 2015-05-17 13:35:37 · 1574 阅读 · 0 评论 -
VC中句柄、指针、ID之间的转换
win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量。从句柄到指针 CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //andattached.pWnd->Attach(hWnd转载 2015-05-17 13:35:02 · 273 阅读 · 0 评论 -
Win32线程
Win32线程有两种,一是工作线程,就是只有一个线程函数的线程;二是UI线程,就是可以有用户界面的线程。两种线程在本质上一样的,因为windows在创建线程时都是使用的CreateThread函数,在C++中又把它封装成了_beginthread(ex),并为新线程维护了一个消息队列。 在MFC中,使用函数AfxBeginThread创建线程,该函数有两个版本,CWinThre转载 2015-05-17 13:34:09 · 393 阅读 · 0 评论 -
非模态对话框的特点
与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然可以与其它界面进行交互。 非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处: 非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置该项风格。更保转载 2015-05-17 14:01:22 · 560 阅读 · 0 评论 -
MFC的消息处理函数
1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用D转载 2015-05-17 13:38:04 · 1057 阅读 · 0 评论 -
PeekMessage
在图形系统中,有这么一个「永远」有人执行的有趣程序,它简单地使用随机的大小和色彩绘制一系列矩形。您可以在Windows中建立一个这样的程序,但是它并不像乍看起来那样容易编写。我希望您能认识到,您不能简单地在WM_PAINT消息中使用一个while(TRUE)循环。当然,它能够执行,但是程序将停止对其他消息的处理,同时,这个程序不能中止或者最小化。一种可以接受的方法是设定一个Windows定时器转载 2015-05-17 13:37:25 · 424 阅读 · 0 评论 -
CPaintDC和CClientDC的区别
1:CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。用法是: CClientDCdc(this);//this一般指向本窗口或当前活动视图 dc.TextOut(10,10,str,str.GetLength());转载 2015-05-17 13:37:10 · 477 阅读 · 0 评论 -
VC控件坐标与屏幕坐标
1、GetClientRect()得到的是:{top=0 bottom=110 left=0 right=364得到的是控件内部的可绘制区,加上边框的大小就是整个控件的大小GetWindowRect()得到的是:{top=63bottom=177 left=182 right=550}//这个是控件相对于对话框的位置和大小2、资源里用字体单位来表示大小,窗口函数中用像素来表示。其关系转载 2015-05-17 13:35:02 · 1899 阅读 · 0 评论 -
Invalidate
1Invalidate介绍2与UpdateWindow( )的区别3与WM_PAINT之间的关系1Invalidate介绍void Invalidate( BOOL bErase = TRUE );参数: bErase 决定了是否要在WM_PAINT消息前发送WN_ERASEBKGND该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其转载 2015-05-17 13:32:36 · 443 阅读 · 0 评论 -
Invalidate、RedrawWindow与UpdateWindow的区别
一:什么时候才会发生重绘窗口的消息? 当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。 二:Invalidate() --RedrawWindow() -- UpdateWindow()三个函数有什么异同? Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,转载 2015-05-18 21:26:02 · 392 阅读 · 0 评论