在自绘菜单过程中,处理WM_DRAWITEM和WM_MEASUREITEM消息时,由LParam参数可以得到PDrawItemStruct和PMeasureItemStruct结构,通过这两个结构,如何得到TMenuItemInfo?
部分代码如下:
function TContextMenu.HandleMenuMsg2(uMsg: UINT; wParam, lParam: Integer; var lpResult: Integer): HResult;
var
pdis: PDrawItemStruct;
R: TRect;
begin
case uMsg of
WM_DRAWITEM :
begin
pdis := PDrawItemStruct(LParam);
这里我想通过pdis取得MenuItem的信息再进行处理,请问如何做,GetMenuItemInfo以及GetMenuString都取不到正确的数据
end;
WM_MEASUREITEM:
begin
这里我想通过PMeasureItemStruct取得MenuItem的信息再进行计算,请问如何做
PMeasureItemStruct(LParam).itemWidth := sz.cx;
PMeasureItemStruct(LParam).itemHeight := sz.cy+2;
end;
end;
end;
部分代码如下:
function TContextMenu.HandleMenuMsg2(uMsg: UINT; wParam, lParam: Integer; var lpResult: Integer): HResult;
var
pdis: PDrawItemStruct;
R: TRect;
begin
case uMsg of
WM_DRAWITEM :
begin
pdis := PDrawItemStruct(LParam);
这里我想通过pdis取得MenuItem的信息再进行处理,请问如何做,GetMenuItemInfo以及GetMenuString都取不到正确的数据
end;
WM_MEASUREITEM:
begin
这里我想通过PMeasureItemStruct取得MenuItem的信息再进行计算,请问如何做
PMeasureItemStruct(LParam).itemWidth := sz.cx;
PMeasureItemStruct(LParam).itemHeight := sz.cy+2;
end;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货