
MFC
lichao268089
这个作者很懒,什么都没留下…
展开
-
鸡啄米MFC
MFC开发原创 2022-05-01 20:49:51 · 550 阅读 · 0 评论 -
MFC非客户区鼠标消息
当鼠标在窗口的非客户区上单击或者移动时,windows就会给窗口发送一个非客户区鼠标消息非客户区鼠标消息和客户区鼠标消息的区别是ID中含有字母NC非客户区鼠标消息OnNcMouseMove消息处理程序的原型为:afx_msg void OnMsgName(UINT nHitTest,CPoint point);同样,point参数指定了事件在窗口发生的位置。但是对于非客户区鼠标消息,poi...原创 2019-05-27 16:54:48 · 1085 阅读 · 0 评论 -
MFC键盘输入设备
键盘事件和鼠标事件相同:都是通过消息,任何时候只要是一个键被按下或者释放,都会接收到一个消息。如果想知道pageUp或者PageDown是否被按下,以便应用程序执行相应的操作,可以处理WM_KEYDOWN消息并检查标识PageUp和PageDown键的键码值。对于那些生成可打印的键,可以不管键按下或者抬起消息而直接处理WM_CHAR消息,它可以指出从键盘输入的字符。依靠WM_CHAR消息而不是WM...原创 2019-05-27 17:13:00 · 545 阅读 · 0 评论 -
键盘击键消息
击键消息Windows通过给拥有输入焦点的窗口发送WM_KEYDOWN和WM_KEYUP消息来报告键是被按下还是被释放,这些消息被称为击键消息。当一个键被按下时,由输入焦点的窗口会接收到WM_KEYDOWN消息以及一个标识键的虚拟键代码,当键被释放时会收到WM_KEYUP消息。当一个键被按下时,如果另外的键被按下并释放,那么刚产生的WM_KEYDOWN和WM_KEYUP消息会把按着的键产生的WM...原创 2019-05-27 17:50:09 · 491 阅读 · 1 评论 -
shift状态及切换
确定Shift,Ctrl 或者Alt键是否被按下时可以使用Windows API GetKeyState::GetKeyState(VK_SHIFT);返回值为负值说明SHift键被按下,否则返回非负值;::GetKeyState(VK_CONTROL);ctrl被按下时返回负值;...原创 2019-05-27 18:02:06 · 661 阅读 · 0 评论 -
GDI画文本
CDC::DrawText函数往显示平面写一串文本DrawText(_T(“Hello MFC”),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);将"Hello MFC"显示在窗口中部;TextOutdc.TextOut(0,0,CString(_T(“Hello,MFC”)));将"Hello MFC"显示到dc代表的显示平面的左上角...原创 2019-05-23 15:25:54 · 549 阅读 · 0 评论 -
GDI字体和CFont类
所有CDC文本函数都使用当前选入设备描述表的字体。字体是指一组具有特定尺寸(高度)和字样的字符,字样是指共有属性,如字的粗细度-正常体或者黑体。构造了CFont对象后就可以通过调用CFont对象的CreateFont,CreateFontIndirect,CreatePointFont,或者CreatePointFontIndirect函数创建带下划线的GDI字体。如果想以点为单位指定字体尺寸,...原创 2019-05-23 15:52:11 · 513 阅读 · 0 评论 -
取消对GDI对象的选定
删除由用户创建的GDI对象是很重要的,而不能删除已经选入设备描述表的GDI对象也同样不能忽视,试图用已删除的对象画图的程序代码是错误的;CPen pen(PS_SOLID,1,RGB(255,0,0));Cpen* pOldPen = dc.SelectObject(&pen);CBrush brush(RGB(0,0,255));CBrush* oldBrush = dc.Sel...原创 2019-05-23 17:11:19 · 148 阅读 · 0 评论 -
消息和键盘
键盘和鼠标以消息形式出现,设备驱动程序处理鼠标和键盘中断并将结果事件通知放在一个系统范围队列中,该队列称为原始输入队列。与常规消息一样,在原始输入的队列的输入项也用WM_作为消息标识符,但其中的数据在被应用程序使用以前要做进一步处理。操作系统有一个专门的线程来监视原始输入队列,并把每一个从队列中出来的消息都转移到适当的线程消息队列。稍后对消息数据的处理实在接收应用程序的描述表中进行的,像对其他任何...原创 2019-05-23 17:39:08 · 104 阅读 · 0 评论 -
MFC集合类
MFC容器特点:1.安全,因为大部分容器都有assert断言,所以不会有非法存取或者越界访问MFC数组类#include "afxwin.h"#include "assert.h"class CMyArray{ int m_nSize; int* m_pData;public: CMyArray(int nSize) { m_nSize = nSize; m_pDat...原创 2019-05-29 14:34:32 · 178 阅读 · 0 评论 -
MFC文件I/O和串行化
CFile类1.打开,关闭和创建文件CFile file;file.Open(_T(file.txt),CFile::modeReadWrite);CFile读取文件CFile file;BOOL nVal = file.Open(_T(“a.txt”),CFile::modeReadWrite);{cout<< nVal<<endl;}BYTE buf...原创 2019-05-29 16:42:20 · 211 阅读 · 0 评论 -
MFC常用加载图标和光标的方法
AfxGetApp()->LoadStandardCursor(IDC_ARROW)加载标准光标AfxGetApp()->LoadStandardIcon(IDI_WINLOGO)加载标准图标备注:如果应用窗口类从CWnd继承过来,一定要重写virtual void PostNcDestroy();这个函数因为在CWnd中这个PostNcDestroy函数实现是什么也没做,如果不...原创 2019-05-27 16:36:50 · 637 阅读 · 0 评论 -
AfxMessageBox和MessageBox区别
MFC以全局AfxMessageBox函数的形式为CWnd::MessageBox提供了一个可选对象。虽然两者很相似,但是AfxMessageBox可以从应用程序类,文档类,以及别的非窗口类中调用。AfxMessageBox一个不可替代的用处体现在当你想在应用程序对象的InitInstance函数报告一个错误时。MessageBox需要一个有效的CWnd指针,因此在一个窗口创建之前无法调用它,而A...原创 2019-05-27 15:35:25 · 384 阅读 · 0 评论 -
VC++的Unicode编程(宏UNICODE与_UNICODE)
VC++中的UNICODE宏转载 2019-05-20 15:57:25 · 329 阅读 · 0 评论 -
MFC绘图设备详解
CDC类及其子类:CDC* pDC = GetDC();ReleaseDC(pDC);GetDC后一定要释放DC;PAINTSTRUCT ps;CDC* pDC = BeginPaint(&ps);EndPaint(&pc);//同上面的ReleaseDC();CPaintDC 用于在窗口客户区画图(仅限于OnPaint处理程序)CClientDC(用于在窗口客户区...原创 2019-05-20 17:18:16 · 267 阅读 · 0 评论 -
CPaintDC, CClientDC,CWindowDC详解
1.CPaintDCMFC中的CPaintDC类响应WM_PAINT消息,允许在窗口客户区绘图,但是只能在OnPaint处理程序中,而不能在其它地方使用,WM_PAINT消息在一个很重要的的方面不同于其他Windows消息,如果处理程序调用Windows的::BeginPaint和EndPaint函数失败或者等价于这两个函数;那么不管又多少绘图工作,都不能将该消息从消息队列中删除。因此,应用程序...原创 2019-05-20 17:51:12 · 1189 阅读 · 0 评论 -
CDC最常用的设备描述表属性
最常用的设备描述表属性的CDC函数是SelectObject;画笔(Pen),画刷(Brush),字体(Font),位图(Bitmap),调色板(Palette),区域(Region)都可以用SelectObject选入;在MFC中 ,要改变当前画笔,画刷或者字体,都必须使用SelectObject来实现;否则GDI将使用设备描述表中的默认值;默认画笔可画出一个像素点宽的黑实线;默认的笔刷填...原创 2019-05-21 11:42:24 · 561 阅读 · 0 评论 -
GDI绘图模式和常用的绘图函数
GDI将像素点输出到逻辑显示平面上时。它不只是简单输出像素点颜色相反,它通过一系列布尔运算将输出像素点的颜色和输出目标位置上像素点的颜色和在一起。它所使用的逻辑关系由设备描述表当前的绘图模式确定。使用CDC::SetROP2(Set Raster Operation To的缩写形式)可更改绘图模式,默认绘图模式为R2_COPYPEN,它将像素点赋值到显示平面上。MoveTo() 在画线前设定当前...原创 2019-05-21 14:24:12 · 701 阅读 · 0 评论 -
自己手动写MFC应用程序时项目属性设置
1.设置Link如下图:2.设置 code generate如下:原创 2019-05-16 15:10:29 · 506 阅读 · 0 评论 -
GDI画笔和CPen类
如果要改变画线方式,则需要创建一个GDI画笔,并由CDC::SelectObject将它选入设备描述表;MFC用CPen类表示GDI画笔,创建画笔最简单的方式是构造一个CPen对象,并把定义画笔所有的参数都传递给该对象;CPen pen(PS_SOLID,1,RGB(255,0,0));第二种方法是构造一个未初始化的CPen对象并调用CreatePenCPen pen;pen.Creat...原创 2019-05-22 10:18:47 · 407 阅读 · 0 评论 -
GDI画刷和CBrush类
MFC画刷又三种基本类型:单色,带阴影线和带图案,只要将COLORREF的值传递给CBrush构造函数就可以创建一个单色画刷了;CBrush brush(RGB(255,0,0));或者可以创建一个没有初始化的CBrush对象,然后调用CBrush::CreateSolidBrush,用两步创建一个单色画刷:CBrush brush;brush.CreateSolidBrush(RGB(2...原创 2019-05-22 11:30:05 · 213 阅读 · 0 评论 -
VC编译错误fatal error LNK1201: error writing to program database
fatal error LNK1201: error writing to program database原创 2019-05-22 11:31:37 · 906 阅读 · 0 评论 -
MFC鼠标移动消息
TicTac应用程序这个程序处理了单机鼠标左键,单机鼠标右键,双击左键。在空格上单机鼠标左键会在其中放置一个X,而单机右键会把一个O放在空格中,用鼠标左键双击分隔的黑粗线可以清除棋盘并重新开始游戏,在每一个X或者O放置好以后,程序将检查谁是获胜或者是否是和局。和局就是9个方格都被填充以后,没有哪个选手可以在水平,垂直或者对角线把棋子摆成一排;除了鼠标消息演示外,程序还介绍了一些新的MFC函数,...原创 2019-05-27 10:28:38 · 1466 阅读 · 0 评论 -
MFC绘图类(CDC,CPaintDC,CClientDC,CWindowDC)简介
MFC绘图类(CDC,CPaintDC,CClientDC,CWindowDC)简介原创 2019-05-20 14:39:55 · 498 阅读 · 0 评论