首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 项目交易 | 网友作品 | 读书 | ACM题库 | 源码
亲,您未登录哦! 登录 | 注册

在BCB中实现菜单资源的动态加载

(加入日期: 2001-10-11 )

打印文章】【字体:

分享到:
刘浩

摘要:本文主要介绍了菜单资源的加载及与相关联的菜单命令操作。

在BCB中实现菜单资源的动态加载是一件非常容易做到的事情,其过程如下:
一、建立菜资源文件sample.rc, sample.h
file://----------sample.rc------------------
#include "sample.h"
sample MENU
{
     MENUITEM  "&Soup",  100
     MENUITEM  "S&alad",  101
     POPUP   "&Entree"
     {
          MENUITEM "&Fish",  200
          MENUITEM "&Chicken",  201, CHECKED
          POPUP  "&Beef"
          {
               MENUITEM "&Steak",  301
               MENUITEM "&Prime Rib", 302
          }
     }
     MENUITEM "&Dessert",   103
}
file://----------sample.h------------
#define IDM_SOUP  100
#define IDM_SALAD  101
#define IDM_ENTEREE  102
#define IDM_FISH   200
#define IDM_CHICKEN  201
#define IDM_BEEF  202
#define IDM_STEAK  301
#define IDM_PRIME  302
#define IDM_DESSERT  103
二、建立一个空项目
启动BCB,建立一个空项目,默认保存
三、在窗体头文件中加入资源头文件和消息映射事件
#include "sample.h"
protected:
     BEGIN_MESSAGE_MAP
  VCL_MESSAGE_HANDLER(WM_COMMAND,TWMCommand,WMCommand)
     END_MESSAGE_MAP(TForm)
     void __fastcall WMCommand(TWMCommand&);
四、在窗体OnCreate事件中用API函数加载菜单资源
     ::SetMenu(Handle,LoadMenu(HInstance,"sample"));
五、编写消息映射事件关联菜单操作
void _fastcall TForm1::WMCommand(TWMCommand& Message)
{
    switch(Message.ItemID)
    {
        case IDM_STEAK: MessageBox(Handle,"Hello",0,MB_OK);
            break;
        case IDM_PRIME: MessageBox(Handle,"World",0,MB_OK);
    break;
        default:  Close();
    break;
    }
}
六、小结
用上述的方法不难实现图标、字符串、位图资源的加载。
以上程序在WIN2000,Borland C++ Builder 5.0中编译通过。

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章