我自己定义了一个类
type TMyMenu = class(TMenu)
我想在类中处理消息 WM_DRAWITEM
于是我这样写
procedure OnDrawItem(var msg:TMessage);message WM_DRAWITEM
可是当消息发生时这个函数并没有执行。

解决方案 »

  1.   

    在消息发生时加入一句:
    PostMessage( Handle, MSG_WM_DRAWITEM, nil, 0 );另外:MSG_WM_DRAWITEM=(WM_USER+1);  //常量定义为WM_USER之后的值。
      

  2.   

    我的代码是这样子的。WM_DRAWITEM是本来就定义好的消息 啊unit MyMenu;
    interfaceuses
      windows,messages,Classes,Menus;type TMyMenu = Class(TMenu)
      public
        constructor Create();
      private
        procedure OnDrawItem(var msg:TMessage);message WM_DRAWITEM;
      end;implementation
    { TMyMenu }constructor TMyMenu.Create;
    begin
      //...
    end;procedure TMyMenu.OnDrawItem(var msg:TMessage);
    begin
       //...
    end;