
MFC
jadeshu
这个作者很懒,什么都没留下…
展开
-
MFC消息反射机制
消息反射机制要解决什么问题呢? 消息反射机制主要是为了控件而实现的。每当控件需要某些资讯(比如,绘制自身背景的画刷,显示字体的颜色等等)时,都会频繁地向其父窗口发送通告消息(notification message),比如最常见的WM_CTLCOLOR通告消息,让父窗口为它提供各种服务。当子控件很多时,父窗口很会变得臃肿不堪,而子控件却没事可做。另一方面,假如我们想继续创转载 2016-12-23 21:41:16 · 2021 阅读 · 0 评论 -
手动创建mfc工程(留存方便复制)
案例一、#include <afxwin.h>class CMyWnd : public CWnd{ //DECLARE_DYNCREATE(CMyWnd)public: CMyWnd(){} virtual BOOL PreCreateWindow(CREATESTRUCT& cs);};BOOL CMyWnd::PreCreateWindow(C...原创 2017-12-07 20:15:59 · 369 阅读 · 0 评论 -
GetWindowRect和GetClientRect的注意事项
一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的?先说说什么叫逻辑坐标?讲到逻辑坐标,它相对的一个概念是设备坐标,是为了屏蔽掉不同设备属性差别而设置的抽象坐标系,说白了,就是独立于设备坐标的统一接口,程序员不需要去在具体的设备上进行绘原创 2017-06-04 12:41:35 · 1118 阅读 · 0 评论 -
VC++消息钩子编程
一、消息钩子的概念1、基本概念 Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息。为了拦截消息,Windows提出了钩子的概念。钩子(Hook)是Windows消息处理机制中的一个监视点,钩子提供一个回调函数。当在某个程序中安装钩子后,它将监视该程序的消息,在指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有机会对此转载 2013-06-05 04:16:23 · 459 阅读 · 0 评论 -
关于OnOK()、OnCancel()、OnClose()、OnDestroy() 模式对话框
总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转)第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialo转载 2013-06-05 04:14:14 · 1510 阅读 · 0 评论 -
深入探讨MFC消息循环和消息泵
首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送出去转载 2014-03-14 21:57:01 · 387 阅读 · 0 评论 -
ListCtrl 技巧集
1. ListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”-转载 2014-03-14 21:55:45 · 501 阅读 · 0 评论 -
测试鼠标是否在窗口内,以及鼠标的离开
以下给出两种跟踪鼠标是否在窗口内的方法一、使用SetCapture(),OnMouseMove()等判断鼠标位置void CMyDlg::OnMouseMove(UINTnFlags,CPointpoint){CRect rect; GetClientRect(&rect); if(!rect.PtInRect(point)) { strWnd =转载 2014-03-14 21:39:47 · 1930 阅读 · 0 评论 -
捕获鼠标经过的所有窗口
一般要用到以下函数: SetCapture() ; ReleaseCapture() ; ClientToScreen() ; WindowFromPoint() ; 以SDI为例。 void CMyView::OnLButtonDown(UINT nFlags, CPoint point)转载 2014-03-14 21:39:10 · 479 阅读 · 0 评论 -
键盘按键消息的获取
(一)响应单独的按键:先添加PreTranslateMessage()(响应WM_CHAR)也是同样的效果,因为本例只捕捉键盘)BOOL CMydilog::PreTranslateMessage(MSG* pMsg) {if (pMsg->message == WM_KEYDOWN){ if(pMsg->wParam=='M')//直接用上面的虚码代替就可转载 2013-06-05 04:13:31 · 1886 阅读 · 0 评论 -
MFC消息顺序
1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到On WndMsg()函数,如果未被处理,则调转载 2013-04-14 15:01:44 · 424 阅读 · 0 评论 -
MFC的CFrameWnd::OnCmdMsg消息链路
首先是视图类,其次是窗口类,然后是应用程序类。下面的源码为证。BOOL CFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo){ CPushRoutingFrame push(this); // pump through current view F原创 2013-06-05 04:12:37 · 1032 阅读 · 0 评论 -
重载消息进行界面自绘
1.WM_PAINT2.WM_ERASEBKGND3.=WM_CTLCOLOR4.=WM_DRAWITEM5.=WM_MEASUREITEM(特殊控件,如ListBox)6.=NM_CUSTOMDRAW(其中 = 号的消息为:子元素发送给父窗口的通知消息。它们是可反射的消息)原创 2017-05-04 17:58:06 · 636 阅读 · 0 评论 -
总结《二》MFC中WinMain和CALLBACK
MFC中一般消息传递过程一、路线 1.一般普通窗口或控件建立调用CWnd::CreateEx函数 2.经过资源对话框创建的即不调用CWnd::CreateEx函数二、分析上述1,先看源码,一切源码说话BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindo原创 2017-05-09 22:34:50 · 974 阅读 · 0 评论 -
复习总结《一》MFC消息映射
长时间人容易遗忘,从新捡起!特做下记录MFC消息映射1.在MFC中消息映射主要牵扯到三个宏分别为:DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(theClass, baseClass)END_MESSAGE_MAP()2.先看源码#define DECLARE_MESSAGE_MAP() \protected: \ static...原创 2017-05-09 19:37:14 · 355 阅读 · 0 评论 -
DLG消息
WM_GETMINMAXINFO 0X0024 36 WM_NCCREATE 0X0081 129 WM_NCCALCSIZE 0X0083 131 WM_CREATE 0X0001 1 WM_SIZE 0X0005 5 WM_MOVE 0X0003 3 WM_SETFONT 0X0030 ...原创 2019-03-22 17:01:44 · 200 阅读 · 0 评论