MFC-消息的处理函数WindowProc
#include <afxwin.h> class CMyFrameWnd :public CFrameWnd { public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs);//修改窗口属性 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);//重写消息处理函数 //参数1:是系统发过来的消息 }; LRESULT CMyFrameWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: //窗口生成消息 AfxMessageBox("收到WM_CREATE消息"); break; case WM_PAINT: //要求一个窗口重画自己 //WM_PAINT消息的产生:当显示区域(客户区)存在无效区域时,系统会产生一个WM_PAINT消息,通知视窗处理程序重绘显示区域 //比如:第一次创建窗口,改变了窗口的大小,最大化,最小化等等(其实这些事件发生时会调用UpdateWindow函数,由该函数发送WM_PAINT消息),它会向用户程序发送一个WM_PAINT消息 //窗口过程收到WM_PAINT消息后,并不代表整个客户区都需要被刷新,有可能客户区被覆盖的区域只有一小块,这个区域叫做“无效区域”,程序只需要更新这个区域。与WM_TIMER消息类似, //WM_PAINT消息也是一个低级别的消息,虽然它不会像WM_TIMER消息一样被丢弃,但Windows总是在消息循环空的时候才把WM_PAINT放入其中 /* //win32方式 PAINTSTRUCT ps = { 0 }; HDC hDC = ::BeginPaint(m_hWnd,&ps); ::TextOut(hDC, 50, 50, "WM_PAINT消息", 12); ::EndPaint(m_hWnd, &ps); */ //MFC方式 PAINTSTRUCT ps1 = { 0 }; CDC* pDC = BeginPaint(&ps1); pDC->TextOutA(150, 150, "WM_PAINT消息"); EndPaint(&ps1); break; } return CFrameWnd::WindowProc(message, wParam, lParam);//不是我们关心的消息返回系统默认处理 } BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs) { cs.x = 50; cs.y = 50; cs.cx = 500; cs.cy = 300; return CFrameWnd::PreCreateWindow(cs); } class CMyWinApp :public CWinApp { public: virtual BOOL InitInstance(); }; CMyWinApp theAPP; BOOL CMyWinApp::InitInstance() { CMyFrameWnd* pFrame = new CMyFrameWnd; pFrame->Create(NULL, "MFCWnd"); m_pMainWnd = pFrame; m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; }
在MFC中添加处理函数WindowProc
右击窗口->类向导->虚函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-01-31 python-opencv-图像边缘检测Sobel算子