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

Вниз

не работает GetMenuString в WM_DRAWITEM   Найти похожие ветки 

 
Dmitry_177   (2007-01-21 00:56) [0]

не работает GetMenuString в WM_DRAWITEM, может сталкивался ктонибудь с этой проблемой? В обработке WM_DRAWITEM делаю так:

var
 Buffer: string;
 BufSize: integer;
begin
 case Message of
   WM_DRAWITEM: begin
                  with PDrawItemStruct(lParam)^ do
                    begin
                      SetLength(Buffer, MAX_PATH);
                      BufSize := GetMenuString(hwndItem, itemID, PChar(Buffer), MAX_PATH, MF_BYCOMMAND);
                      SetLength(Buffer, BufSize);

...


в переменную Buffer почему-то ничего не записывается...(((


 
Dmitry_177   (2007-01-21 02:27) [1]

Может это из за того что я создаю меню так:


 hMainMenu := CreateMenu;
 hSubMenuFile := CreatePopupMenu;
 hSubMenuHelp := CreatePopupMenu;

 AppendMenu(hMainMenu, MF_OWNERDRAW or MF_POPUP, hSubMenuFile, "&File");
 AppendMenu(hMainMenu, MF_OWNERDRAW or MF_POPUP, hSubMenuHelp, "&Help");

 AppendMenu(hSubMenuFile, MF_ENABLED or MF_STRING, sflNew, "New");
 AppendMenu(hSubMenuFile, MF_ENABLED or MF_STRING, sflClose, "Close");
 AppendMenu(hSubMenuFile, MF_SEPARATOR, 0, "");
 AppendMenu(hSubMenuFile, MF_ENABLED or MF_STRING, sflExit, "Exit");
...


Может это из за того что какраз у пунктов меню в главном меню нету по сути дела itemID, точнее не определен в этом создании?


 
tesseract ©   (2007-01-21 11:14) [2]

The lpString parameter is a TCHAR buffer, and nMaxCount is the length of the menu string in TCHARs. Sizing these parameters incorrectly can cause truncation of the string, leading to possible loss of data.


 
Dmitry_177   (2007-01-21 14:57) [3]

Пробовал, что-то никак...:(

var
 Buffer: array [0..MAX_PATH - 1]of Char;
 text: string;
begin
 case Message of
   WM_DRAWITEM: begin
                  with PDrawItemStruct(lParam)^ do
                    begin
                      GetMenuString(hwndItem, itemID, Buffer, length(Buffer), MF_BYCOMMAND);
                      text := Buffer;

                      ...

                      DrawText(hDC, PChar(text), length(text), rcItem, DT_CENTER or DT_VCENTER or DT_SINGLELINE);



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
15-1180691641
начинающий
2007-06-01 13:54
2007.07.01
Во, млин! И тут выборы с нарушениями...


2-1180351253
Neket
2007-05-28 15:20
2007.07.01
Предотвратить запуск Excel.


2-1181184636
D@Nger
2007-06-07 06:50
2007.07.01
Обмен данными между родительским MDI и дочерними


15-1180722124
@!!ex
2007-06-01 22:22
2007.07.01
Delphi -> Lazarus


2-1181379657
newones
2007-06-09 13:00
2007.07.01
Вопрос про проекцию