文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 275
阅读 7
收藏 0
点赞 0
评论 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
VC++ 外壳扩展编程之windows右键菜单

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

云栖希望。
2017/12/04
0
0
【转】ActiveX控件注册的几种方法

from:http://hi.baidu.com/estellejiang/blog/item/af16e862bbd1d3d7e6113aa7.html ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中, Ac...

夏春涛
2009/10/12
0
0
Playmaker Input篇教程之PlayMaker菜单概述

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

大学霸
2015/05/22
0
0
网络分析工具 Wireshark 用户手册

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

红薯
2010/08/03
2.8K
9
bootstrap3 - 自适应导航

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>自适应导航</title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1"/> <link href="......

iNiL0119
2015/09/28
980
0
Android 用户界面---菜单(Menus 三)

弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的: 1. 给指定内容的操作提供一个溢出式菜单(如...

长平狐
2012/10/16
562
0
Cocos2dx程序菜单项的添加

在原有的项目》属性》配置属性》常规》项目默认值》MFC的使用》设置》在共享DLL当中使用MFC 在CCEGLView_win32.h头文件当中27行添加,28行注释 #include <afxwin.h>//#include <Windows.h> ...

Amamatthew
2014/06/23
0
0
Joomla 2.5 多语言网站建设

Joomla多语言网站就是同一网站里包含多种语言版本的内容,比如中文版,英文版… 网站用户可以通过网站提供语言切换器选择适合自己的语言。在 Joomla 2.5 中实现多语言网站并不需要安装额外的...

余二五
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MyBatis入门

一、安装 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 二、从 XML 中构建 SqlSessionFactory String r......

一个yuanbeth
16分钟前
0
0
聊聊spring cloud的LoadBalancerAutoConfiguration

序 本文主要研究一下spring cloud的LoadBalancerAutoConfiguration RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.0.0.RC2-sources.jar!/org/springframework/cloud/netflix/ribb......

go4it
19分钟前
0
0
【转】使用Lombok来优雅的编码

前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 正文 添加依赖 在 pom.xml 文件中添加相关依赖:...

HAVENT
21分钟前
0
0
Dubbo 源码解读 —— 可支持序列化及自定义扩展

一、概述 从源码中,我们可以看出来。目前,Dubbo 内部提供了 5 种序列化的方式,分别为 fastjson、Hessian2、Kryo、fst 及 Java原生支持的方式 。 针对不同的序列化方式,对比内容如下: 名...

Ryan-瑞恩
29分钟前
0
0
MySQL内存设置—— MySQL server has gone away

set global max_allowed_packet=268435456

一梦心草
38分钟前
0
0
推导式

列表、集合和字典推导式 列表推导式是Python最受喜爱的特性之一。它允许用户方便的从一个集合过滤元素,形成列表,在传递参数的过程中还可以修改元素。形式如下: [expr for val in collect...

火力全開
43分钟前
0
0
maven配置文件settings.xml详解

settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。 settings.xml文件是干什么的,为什么要配置它呢? 从settings.xml的文件名就可以...

浮躁的码农
48分钟前
0
0
MakeCode图形化编程语言学习笔记:micro:bit编程练习题[图]

MakeCode图形化编程语言学习笔记:micro:bit编程练习题[图]: 基础训练题: Q1:摇晃micro:bit编程板,随机出现7个小动物图标中的一个,并且前后相邻两次出现的小动物不重复。 注:七个小动物...

原创小博客
48分钟前
0
0
Redis 压力测试说明

Redis 压力测试说明 redis压力测试 2014-03-24 21:41:07| 分类: 默认分类 | 标签:redis |举报|字号 订阅 这几天对比测试mongodb、redis、pg的性能,主要是在消息队列、消息处理、用户经纬度...

舒文joven
49分钟前
0
0
拉姆达表达式 追加 条件判断 Expression>

public static class PredicateBuilder {   /// <summary>   /// 机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效   /// </summary...

Lytf
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部