MFC消息种类

本文详细介绍了MFC中处理键盘消息如WM_CHAR、WM_KEYDOWN、WM_KEYUP,以及鼠标消息如WM_MOUSEMOVE、WM_LBUTTONDOWN等。同时讲解了窗口消息如WM_CREATE、WM_DESTROY,定时器消息WM_TIMER的使用,并提到了命令消息WM_COMMAND在菜单和按钮操作中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

键盘消息: WM_CHAR:该消息的处理函数OnChar(),在用户输入有效的ASCII码时才会发生

                     WM_KEYDOWN :键盘按下事件

                     WM_KEYUP:键盘释放事件

键盘消息处理方式如下:

BOOL C**Dlg::PreTranslateMessage(MSG* pMsg)//pMsg表示消息类型
{
   //判断是否为键盘消息
   if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
   {
      //判断是否按下键盘Enter键
      if(pMsg->wParam==VK_RETURN)
      {

          return TRUE;
      }
   }
 return CDialog::PreTranslateMessage(pMsg);
}
然后介绍虚拟键代码
符号形式 

            十六进制形式        说明
VK_LBUTTON           01             鼠标左键
VK_RBUTTON            02             鼠标右键
VK_CANCEL             03          Control-break 过程
VK_MBUTTON          04                  鼠标中键
VK_BACK                 08           BACKSPACE 键
VK_TAB                    09              TAB 键
VK_CLEAR               0C                CLEAR 键
VK_RETURN              0D            ENTER 键
VK_SHIFT                 10                 SHIFT 键
VK_CONTROL         11                 CTRL 键
VK_MENU                 12                   ALT 键
VK_PAUSE               13                PAUSE 键
VK_CAPITAL             14                CAPS LOCK 键
VK_ESCAPE            1B            ESC 键
VK_SPACE               20                SPACEBAR
VK_PRIOR                21                PAGE UP 键
VK_NEXT                 22                PAGE DOWN 键
VK_END                   23                  END 键
VK_HOME                24             HOME 键
VK_LEFT                 25               LEFT ARROW 键
VK_UP                      26               UP ARROW 键
VK_RIGHT                27               RIGHT ARROW 键
VK_DOWN                28               DOWN ARROW 键
VK_SELECT              29              SELECT 键
VK_EXECUTE          2B                 EXECUTE 键
VK_SNAPSHOT        2C                    PRINT SCREEN键(用于Windows 3.0及以后版本)
VK_INSERT              2D                   INS 键
VK_DELETE            2E                         DEL 键
VK_HELP                 2F                         HELP键

VK_LWIN                 5B                  Left Windows 键 (Microsoft自然键盘)
VK_RWIN                 5C                Right Windows 键 (Microsoft自然键盘)
VK_APPS                5D                  Applications 键 (Microsoft自然键盘)
VK_NUMPAD0         60                 数字小键盘上的 0 键
VK_NUMPAD1         61                    数字小键盘上的 1 键
VK_NUMPAD2         62                 数字小键盘上的 2 键
VK_NUMPAD3         63                 数字小键盘上的 3 键
VK_NUMPAD4         64                 数字小键盘上的 4 键
VK_NUMPAD5         65                   数字小键盘上的 5 键
VK_NUMPAD6        66                数字小键盘上的 6 键
VK_NUMPAD7        67               数字小键盘上的 7 键
VK_NUMPAD8          68               数字小键盘上的 8 键
VK_NUMPAD9         69               数字小键盘上的 9 键
VK_MULTIPLY          6A              Multiply 键
VK_ADD                   6B                 Add键
VK_SEPARATOR           6C           Separator 键
VK_SUBTRACT             6D              Subtract 键
VK_DECIMAL              6E               Decimal 键
VK_DIVIDE               6F               Divide 键
VK_F1                    70               F1 键
VK_F2                    71                  F2 键
VK_F3                    72                   F3 键
VK_F4                    73                   F4 键
VK_F5                     74               F5 键
VK_F6                    75                  F6 键
VK_F7                    76                 F7 键
VK_F8                    77                  F8 键
VK_F9                    78                  F9 键
VK_F10                 79                 F10 键
VK_F11                 7A                 F11 键
VK_F12                 7B                 F12 键
VK_F13                 7C               F13 键
VK_F14                 7D               F14 键
VK_F15                 7 E                   F15 键
VK_F16                 7F                F16 键
VK_F17                80H               F17 键
VK_F18                81H              F18 键
VK_F19                82H               F19 键
VK_F20               83H            F20 键
VK_F21               84H             F21 键
VK_F22                85H             F22 键
VK_F23               86H            F23 键
VK_F24                 87H            F24 键
VK_NUMLOCK         90            NUM LOCK 键
VK_SCROLL         91             SCROLL LOCK 键
VK_ATTN              F6              Attn 键
VK_CRSEL          F7               CrSel 键
VK_EXSEL           F8             ExSel 键
VK_EREOF          F9              Erase EOF 键
VK_PLAY            FA           Play 键
VK_ZOOM           FB             Zoom 键
VK_OEM_CLEAR     FE         Clear 键



鼠标消息:WM_MOUSEMOVE:用户将鼠标移进窗口或在窗口中移动

                    WM_LBUTTONDOWN:

                    WM_LBUTTONUP:

                    WM_LBUTTONDBCLICK:

void C**Dlg::OnMouseMove(UINT nFlags, CPoint point)//鼠标移动消息,nFlags表示传递回来的信息,point表示坐标
{
    CDialogEx::OnMouseMove(nFlags, point);

    if(nFlags & MK_LBUTTON) //表示移动的时候左键按下
    {
        ...
    }

}
void C**Dlg::OnLButtonDown(UINT nFlags, CPoint point)//鼠标左键单击消息
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CDialogEx::OnLButtonDown(nFlags, point);
}


void C**Dlg::OnLButtonUp(UINT nFlags, CPoint point)//鼠标左键释放消息
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CDialogEx::OnLButtonUp(nFlags, point);
}


void C**Dlg::OnLButtonDblClk(UINT nFlags, CPoint point)//鼠标左键双击消息
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CDialogEx::OnMButtonDblClk(nFlags, point);
}
PS(右键消息与左键消息只是把L改成R)




窗口消息:WM_CREATE:窗口创建

                    WM_DESTROY:窗口销毁

                    WM_CLOSE:窗口关闭

                    WM_MOVE:窗口移动

                    WM_SIZE:窗口改变

                    WM_PAINT:窗口重绘

                    WM_SETFOCUS:窗口得到焦点

                    WM_KILLFOCU::窗口失去焦点

int C**Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;
		return 0;
}
void C**Dlg::OnDestroy()
{
    CDialogEx::OnDestroy();

    // TODO: 在此处添加消息处理程序代码
}
void C**Dlg::OnMove(int x, int y)
{
    CDialogEx::OnMove(x, y);

    // TODO: 在此处添加消息处理程序代码
}
void C**Dlg::OnClose()
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CDialogEx::OnClose();
}
void C**Dlg::OnPaint()
{
    CPaintDC dc(this); // 用于绘制的设备上下文
    CDialogEx::OnPaint();
}
void C**Dlg::OnSize(UINT nType, int cx, int cy)//nType表示调整的类型
{
    CDialogEx::OnSize(nType, cx, cy);
}

lpCreateStruct表示为 CREATESTRUCT 结构 的指针。
typedef struct tagCREATESTRUCT {
   LPVOID lpCreateParams;//指向要使用的数据创建一个窗口。
   HANDLE hInstance;//标识拥有新窗口模块的模块实例句柄。
   HMENU hMenu;//标识新窗口将使用的菜单。 如果子窗口,包含整数 ID.
   HWND hwndParent;//标识拥有新窗口的父窗口。 如果新窗口是顶级窗口,此成员是 NULL 。
   int cy;//指定新窗口的高度。
   int cx;//指定新窗口的宽度
   int y;//指定新窗口的左上角的 y 坐标。 ,如果新窗口是子窗口,坐标系是相对于父窗口;否则坐标系是相对于屏幕的原点。
   int x;//指定新窗口的左上角的 x 坐标。 ,如果新窗口是子窗口,坐标系是相对于父窗口;否则坐标系是相对于屏幕的原点
   LONG style;//指定新窗口的 样式
   LPCSTR lpszName;//指向指定新窗口的名称为 NULL 终止的字符串
   LPCSTR lpszClass;//指向指定新窗口的窗口类名的一个 NULL 终止的字符串
   DWORD dwExStyle;//为新窗口指定 扩展样式
} CREATESTRUCT;


定时器消息:WM_TIMER,其消息相应函数使OnTimer(UINT   nIDEvent);\\nIDEvent表示定时器ID

                        对于定时器消息,通常都会和SetTimer配合使用。

void C**Dlg::OnTimer(UINT_PTR nIDEvent)//nIDEvent表示定时器ID
{
    CDialogEx::OnTimer(nIDEvent);
}

SetTimer(1,2000,NULL);//表示ID为1的定时器2秒执行一次

命令消息:WM_COMMAND.命令消息是很常用的一个消息,命令消息是当用户选择某项菜单或单击某按钮时发送的消息

ON_COMMAND(ID_POP,&CHisCtrlDlg::ClickPop)//当点击名为ID_POP的控件后,执行ClickPop函数

void C**Dlg::ClickPop()
{

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值