![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает GetMenuString в WM_DRAWITEM [D7, WinXP]
Dmitry_177 © (2007-01-21 00:56:00)не работает 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 14:57:00) [1]Пробовал, что-то никак...:(
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);
tesseract (2007-01-21 11:14:00) [2]The lpStringparameter 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 02:27:00) [3]Может это из за того что я создаю меню так:
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, точнее не определен в этом создании?