delphi Windows 编程[20] - 改变菜单项并换行


本文整理自网络,侵删。

 
Windows 编程[20] - 改变菜单项并换行
本例效果图:



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

本例代码文件:
program Project1;

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

uses
  Windows, Messages;

var
  i: Word = 1;

{收到 WM_COMMAND 消息时需要做的工作}
procedure OnCommand(h: HWND; wParam: Integer);
var
  s: string;
begin
  case LoWord(wParam) of
    102: begin  {102 是在资源文件中指定的菜单标识}
           Str(i, s);
           s := 'NewMenu_' + s;
           AppendMenu(GetMenu(h), MFT_STRING or MFT_MENUBREAK, i, PChar(s));
           DrawMenuBar(h);
           Inc(i);
         end;
    else begin
      Str(wParam, s);
      MessageBox(0, PChar(s), '', 0);
    end;
  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.

相关阅读 >>

Delphi 调试tms web core应用

Delphi fmx使用 timage 显示动画图片

Delphi 实现拦截api的钩子(hook)

Delphi 判断图像格式bmp jpg gif pcx png psd ras sgi tiff err

Delphi tclientdataset的全面剖析

Delphi中setlength使用

Delphi 取得dll所在目录

Delphi 读取内存

Delphi datetimetogmt gmt时间与tdatetime转换

delhi 获取进程图片

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...