Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Меню: при добавлении пунктов они становятся Disabled   Найти похожие ветки 

 
GrayFace ©   (2005-12-29 12:25) [0]

Вот код:
var m:HMenu; mi:TMenuItemInfo;

  m:=GetMenu(hwnd);
  if m=0 then RaiseLastOSError;
  with mi do
  begin
    cbSize:=SizeOf(mi);
    fMask:=MIIM_ID or MIIM_TYPE or MIIM_SUBMENU;
    fType:=MFT_STRING;
    hSubMenu:=CreateMenu;
    wID:=$100;
    dwTypeData:="WoG Tools";
  end;
  if not InsertMenuItem(m, 4, true, mi) then RaiseLastOSError;
  m:=mi.hSubMenu;
   
   // Если брать уже существующее осн. меню, та же история
   
  if m=0 then RaiseLastOSError;
    with mi do
    begin
      fMask:=MIIM_ID or MIIM_TYPE or MIIM_STATE;
      wID:=$101;
      fState:=0;
      dwTypeData:="aaa";
      fType:=MFT_STRING;
      if not InsertMenuItem(m, 1, true, mi) then RaiseLastOSError;
    end;
  DrawMenuBar(hwnd);

По идее, пункт должен быть активным.


 
Rouse_ ©   (2005-12-29 12:56) [1]

function CustomizeMenu(const Menu: HMENU): Boolean; stdcall;
const
 IDC_MENUITEM_CAPTION = "CustomMenu from DLL";
 IDC_MENUITEM_CAPTION_LEN = Length(IDC_MENUITEM_CAPTION) + 1;
var
 Item: TMenuItemInfo;
 ID: Integer;
begin
 ZeroMemory(@Item, SizeOf(TMenuItemInfo));
 ID := GetMenuItemCount(Menu);
 with Item do
 begin
   cbSize := SizeOf(TMenuItemInfo);
   fMask := MIIM_TYPE or MIIM_ID;
   fType := MFT_SEPARATOR;
 end;
 Result := InsertMenuItem(Menu, ID, True, Item);
 if not Result then Exit;
 Inc(ID);
 with Item do
 begin
   cbSize := SizeOf(TMenuItemInfo);
   fMask := MIIM_TYPE or MIIM_ID;
   fType := MFT_STRING;
   Item.dwTypeData := PChar(IDC_MENUITEM_CAPTION);
   Item.cch := IDC_MENUITEM_CAPTION_LEN;
   Item.wID := ID;
 end;
 Result := InsertMenuItem(Menu, ID, True, Item);
end;


 
GrayFace ©   (2005-12-29 20:12) [2]

Спасибо. Теперь хоть ясно, что мой код правильный. С вашей функцией та же проблема. Значит, все сложнее.
Ситуация такова: У меня внедрина dll в чужое приложение, оконную процедуру подключил, теперь охота в меню добавить свои фичи.
Проверил - само приложение не disable"ит менюшку.

Что это может быть?

(вообще, приложение - редактор карт Heroes 3 WoG)



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.059 c
3-1138338734
Андрей К.
2006-01-27 08:12
2006.03.19
хранимая процедура


4-1133446523
lucifer
2005-12-01 17:15
2006.03.19
как получить хэндл окна, находящегося под курсором мыши?


2-1141151460
Darkwing
2006-02-28 21:31
2006.03.19
Команды ассемблера под пентиум 4


2-1141189028
Anton :-))
2006-03-01 07:57
2006.03.19
как определить по какому из объектов был нанесен удар мышью?


2-1141559590
Der Nechk@ssoff
2006-03-05 14:53
2006.03.19
подобно Memo