Win32 Windows编程 八

一、系统菜单

1 执行从系统提供的窗口命令,例如最大化、关闭等命令。本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单

2 系统菜单的使用

2.1 获取系统菜单

GetSystemMenu

HMENU GetSystemMenu(

HWND hWnd, //要获取的窗口句柄

BOOL bRevert; //获取重置标识

);

bRevert: TRUE 重置 FALSE 不重置

当为TRUE时 会将菜单重置成默认状态,并返回菜单句柄,为false菜单项不重置, 获取当前系统菜单的状态

2.2
修改系统菜单, 例如增加、 删除

AppendMenu

InsertMenu

比AppendMenu增加了一个插入菜单项的位置

RemoveMenu

删除菜单项

2.3 系统菜单的响应命令

系统菜单的响应命令,实在WM_SYSCOMMAND 中

WPARAm - LOWORD( wParam )为增加菜单的ID

二、右键菜单

1 当在窗口点击右键时,弹出的菜单。

2 右键菜单的使用

2.1 创建菜单

CreatePopMenu

2.2 菜单增加

AppendMenu / InsertMenu

2.3 菜单的显示

TrackPopupMenu

BOOL TrackPopupMenu(
  HMENU hMenu,         // handle to shortcut menu
  UINT uFlags,         // options
  int x,               // horizontal position
  int y,               // vertical position
  int nReserved,       // reserved, must be zero
  HWND hWnd,           // handle to owner window
  CONST RECT *prcRect  // ignored
);

2.4 菜单的命令处理

WM_COMMAND

2.5 使用右键菜单的位置

2.5.1 WM_RBUTTONUP中添加菜单的创建和显示

右键消息坐标转换成屏幕坐标使用 - ClientToScreen

2.5.2 WM_CONTEXTMENU

用于显示右键的菜单的消息

WPARAM  - 右键抬起时对应的窗口句柄

LPARAM  - 右键抬起时的屏幕坐标

2.5.3 WM_RBUTTONUP 和 WM_CONTEXTMENU对比

1) 坐标系不同,WM_RBUTTONUP 客户区坐标 WM_CONTEXTMENU 屏幕坐标

2)WM_RBUTTONUP 先于 WM_CONTEXTMENU执行

Win32 Windows编程 八

时间: 2024-12-10 12:46:59

Win32 Windows编程 八的相关文章

Win32 Windows编程 十

一 Windows绘图 1 图形绘制 1.1 图形绘制的方式 获取到绘图的句柄,设备描述符(DC),使用相应的绘图API,在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位颜色:颜色数量24为颜色,多出的8位表示灰度. 16位:颜色数量是2的16次方. Win32下,颜色的定义使用 COLORREF.RGB的宏定义颜色 COLORREF nColor = RGB( 0, 0, 0 );  黑色 COLORREF nColor = RGB( 255, 255, 255 );

Win32 Windows编程 九

资源的使用 1 资源文件 图标 光标 字符串 菜单  加速键 对话框资源位图等等 资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息 资源编译器 - RC.exe 2 图标资源 ICON 2.1 常用的几种大小: 16x16 ,32x32, 48x48 2.2 使用 HICON LoadIcon( HINSTANCE hInstance, // handle to application instance LPCTSTR lpIconName // name string or re

Win32 Windows编程 二

一.第一个窗口程序 1  入口函数 WinMain 2  窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc( hWnd, nMsg, wParam, lParam ); } 当窗口处理消息事件时 调用该函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam,

Win32 Windows编程 六

WM_PAINT消息 1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息.一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生 WM_PAINT消息 例如可以使用 InvalidateRect 声明一个需要重新绘制的区域 BOOL InvalidateRect( HWND hWnd, // handle to window CONST RECT* lpRect, // rectangle coordinates BOOL bE

Win32 Windows编程 三

一.NMAKE 和 Makefile 1.1  NMAKE - 命令解释器, 根据Makefile文件中定义的脚本,完成项目的编译等操作 1.2 Makefile - 定义编译.连接等脚本语言 1.3 Makefile 文件的使用 1.3.1 基本语法规则 window.exe:window.obj //依赖行 cl.exe window.c /c   //命令行 link.exe window.obj user32.lib window.exe 的依赖项是window.obj,如果window

Win32 Windows编程 十二

一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam ) 5.3 创建对话框 HWND CreateDialog( HINSTANCE hInstance, // handle to module LPCTSTR lpTempl

Win32 Windows编程 七

定时器消息 1. WM_TIMER 按照定时器设置的时间段,自动向窗口发送一个定时器消息WM_TIMER.优先级比较低 定时器精度比较低,毫秒级别,消息产生时间也精度比较低 2 .消息和函数 WM_TIMER : 消息ID wParam  定时器的ID lParam  定时器的处理函数 SetTimer :设置一个定时器 UINT_PTR SetTimer( HWND hWnd, // handle to window 窗口的句柄 可以为NULL UINT_PTR nIDEvent, // ti

Win32 Windows编程 五

一 Win32消息机制 1 消息机制 过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束 事件驱动: 程序的执行顺序是无序的.某个事件点所执行的代码,是由外界通知.由于我们无法决定用户执行顺序,所以代码的执行也是无序 Win32的消息机制 - 事件驱动 2 Win32消息程序 2.1 Win32 窗口注册 2.2 Win32窗口创建 2.3 Win32消息循环 2.3.1 GetMessage BOOL GetMessage( LPMSG

Win32 Windows编程 四

一 窗口注册和窗口创建的过程 1  Win32窗口程序创建步骤 1.1 WinMain入口函数的定义 1.2 WindowsProc 函数的定义 1.3注册窗口 RegisterClass/RegisterClassEx 1.4创建窗口 CreateWindow /CreateWindowEx 1.5 显示刷新窗口 ShowWindow/UpdateWindow 1.6 消息处理 GetMessage /DisptchMessage 1.7 窗口退出 WM_DESTROY:PostQuitMes