文档章节

Windows 编程[18] - 更换菜单项: ModifyMenu

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 275
阅读 7
收藏 0
本例效果图:



本例使用的资源文件(TestRes.rc):
MyMenu1 MENUEX
BEGIN
  MENUITEM "Open"  ,101
  MENUITEM "Old"   ,102
  MENUITEM "Help"  ,103
END

 
 
 
 
 

 

 

  
本例代码文件:
program Project1;

{$R 'TestRes.res' 'TestRes.rc'}

uses
  Windows, Messages;

const IDM_New = 202; {常量将作为修改后的菜单的标识}

{收到 WM_COMMAND 消息时需要做的工作}
procedure OnCommand(h: HWND; wParam: Integer);
var
  w: Word;
begin
  w := LoWord(wParam);
  case w of
    102: begin  {102 是在资源文件中指定的菜单标识}
           ModifyMenu(GetMenu(h), w, 0, IDM_New, 'New!');
           DrawMenuBar(h);
         end;
    IDM_New: MessageBox(h, '我是新来的', '', 0);
  end;
end;

function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;
begin
  Result := 0;
  case msg of
    WM_COMMAND : OnCommand(wnd, wParam); {收到 WM_COMMAND 消息后调用 OnCommand 过程}
    WM_DESTROY : PostQuitMessage(0);
  else
    Result := DefWindowProc(wnd, msg, wParam, lParam);
  end;
end;

function RegMyWndClass: Boolean;
var
  cls: TWndClass;
begin
  cls.style         := CS_HREDRAW or CS_VREDRAW;
  cls.lpfnWndProc   := @WndProc;
  cls.cbClsExtra    := 0;
  cls.cbWndExtra    := 0;
  cls.hInstance     := HInstance;
  cls.hIcon         := 0;
  cls.hCursor       := LoadCursor(0, IDC_ARROW);
  cls.hbrBackground := HBRUSH(COLOR_WINDOW + 1);
  cls.lpszMenuName  := 'MyMenu1';
  cls.lpszClassName := 'MyWnd';
  Result := RegisterClass(cls) <> 0;
end;

{程序入口}
const
  tit = 'New Form';
  ws = WS_OVERLAPPEDWINDOW;
  x = 100; y = 100; w = 300; h = 180;
var
  hWnd: THandle;
  Msg : TMsg;
begin
  RegMyWndClass;
  hWnd := CreateWindow('MyWnd', tit, ws, x, y, w, h, 0, 0, HInstance, nil);
  ShowWindow(hWnd, SW_SHOWNORMAL);
  UpdateWindow(hWnd);

  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/04/22/1166531.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
win32gui ======= EnableMenuItem之百度解释

函数说明 编辑 允许、禁止或变灰指定的菜单条目 函数原型 编辑 BOOL EnableMenuItem(   HMENU hMenu, // handle to menu   UINT uIDEnableItem, // menu item to enable, disable, or g...

jinx88
2016/06/18
14
0
HP 1007发送打印任务后不打印,怎么办?

财务来了个新老板,给他一部笔记本并安装HP1007打印机的时候,打印机一直不动。 该电脑是Xp系统,使用了自带的光盘安装驱动,但是最后的原因居然是驱动不对! 网上很多人都有这个问题,但是都...

myjieli
07/03
0
0
Playmaker Input篇教程之PlayMaker菜单概述

Playmaker Input篇教程之PlayMaker菜单概述 Playmaker InputPlayMaker菜单概述 Playmaker插件被导入游戏项目以后,会自动为Unity编辑器添加一个名为PlayMaker的主菜单,如图1-14所示。熟练的...

大学霸
2015/05/22
0
0
VC++ 外壳扩展编程之windows右键菜单

这次我想和大家一起讨论一下 Windows 的 Shell 扩展编程,首先在阅读以下内容之前我还是推荐大家看一下《COM技术内幕》这本大作,不过即使您没有有关的基础知识其实也是无所谓的,因为以下讲...

云栖希望。
2017/12/04
0
0
网络分析工具 Wireshark 用户手册

本手册介绍:介绍Wireshark安装、界面、基本操作 详细清单如下: 目录 译者序 1. 为什么要翻译 2. 关于本手册 2.1. 用什么工具编写的 2.2. 手册翻译的效果 2.3. 翻译中的问题 3. 补充说明 前...

红薯
2010/08/03
2.8K
9

没有更多内容

加载失败,请刷新页面

加载更多

强化学习在美团“猜你喜欢”的实践

1 概述 “猜你喜欢”是美团流量最大的推荐展位,位于首页最下方,产品形态为信息流,承担了帮助用户完成意图转化、发现兴趣、并向美团点评各个业务方导流的责任。经过多年迭代,目前“猜你喜...

美团技术团队
19分钟前
1
0
docker - 常用命令

1. docker服务的启动、停止、重启 [root@localhost ~]# service docker restartRedirecting to /bin/systemctl restart docker.service[root@localhost ~]# service docker stopRedir......

细肉云吞
22分钟前
3
0
安装CentOS 6.5 系统

一、安装CentOS 6.5 系统 1、选择第一个 "Install or upgrade an existing system" 2、选择跳过 “Skip” 3、直接下一步 4、建议初学者选择中文的,工作中选择 “English” 5、键盘选择 “美...

寰宇01
35分钟前
1
0
AR+ 实时音视频通话,虚拟与现实无缝结合

今年中旬 Google 在万众期待下推出了 ARCore,能将现实与数码完美无缝地融合在一起,丰富我们的现实世界。通过它开发者可以更加快速方便地在 Android 平台开发 AR 应用,凭借 AR 技术大量产品...

七牛云
35分钟前
1
0
手把手教你实现一个 Vue 进度条组件!

最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录。 来看下 npm 搜索组件时候的效果: so 下面咱们...

我的卡
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部