-
chak_xakep (21.03.08 16:42) [0]Здравствуйте мастера программирования помогите со следующими проблемами:
1.Следует создать MainMenu; - сделал
2.Загрузить в каждый из подпунктов меню Изображение HBITMAP
Ниже приведен мой исходный код главного окна, с процедурой обработки сообщений окна разобрался:
procedure CreateMainWindow;
var
AMessage: TMsg;
AWindowClassEx: TWndClassEx;
begin
MainMenu := CreateMenu;
AWindowClassEx.cbSize:= sizeOf(TWndClassEx);
AWindowClassEx.lpszClassName:= WINDOW_CLASS_NAME;
AWindowClassEx.style:= CS_VREDRAW or CS_HREDRAW;
AWindowClassEx.hInstance:= HInstance;
AWindowClassEx.lpfnWndProc:= @HandlerToMainWindow;
AWindowClassEx.cbClsExtra:= 0;
AWindowClassEx.cbWndExtra:= 0;
AWindowClassEx.hIcon:= LoadIcon(hInstance, MakeIntResource('MAINICON'));
AWindowClassEx.hIconSm:= LoadIcon(hInstance, MakeIntResource('MAINICON'));
AWindowClassEx.hCursor:= LoadCursor(0, idc_Arrow);
AWindowClassEx.hbrBackground:= 16;
AWindowClassEx.lpszMenuName:= nil;
if RegisterClassEx(AWindowClassEx) = 0
then
PostQuitMessage(0)
else
begin
MenuFile:= CreatePopupMenu;
MenuAbout:= CreatePopupMenu;
AWindowHandle:= CreateWindowEx(0,
AWindowClassEx.lpszClassName,
WINDOW_TITLE,
DS_MODALFRAME or
WS_MINIMIZEBOX or
WS_CAPTION or
WS_SYSMENU,
ALeft, ATop,
WINDOW_WIDTH, WINDOW_HEIGHT,
0,
MainMenu,
HInstance,
nil);
CreateMenuItem(MainMenu, MenuFile, 'Файл', 0, MENU_FILE, False);
CreateMenuItem(MenuFile, 0, 'Выход', 0, SUBMENU_EXIT, False);
CreateMenuItem(MainMenu, MenuAbout, 'Справка', 0, MENU_ABOUT, False);
CreateMenuItem(MenuAbout, 0, 'О программе...', 0, SUBMENU_ABOUT, False);
DrawMenuBar(AWindowHandle);
CreateControls;
RegisterHotkey(AWindowHandle, 1, MOD_ALT,ord('A'));
if AWindowHandle = 0
then
PostQuitMessage(0)
else
begin
ShowWindow(AWindowHandle, SW_SHOWNORMAL);
while GetMessage(AMessage, 0, 0, 0) do
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end; {while}
end; {else}
end; {else}
end;
Вопрос, как загрузить картинки на каждый пункт меню??? Пожалуйста дайте хотя бы ссылки на счет этой темы!!! -
> Вопрос, как загрузить картинки на каждый пункт меню??? Пожалуйста
> дайте хотя бы ссылки на счет этой темы!!!
Ты не на API программируешь. А на чём-то странном. На API делаеться через CreateMenu / InsertMenuItem и там есть структура MENUITEMINFO
typedef struct tagMENUITEMINFO {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked; <-- раз
HBITMAP hbmpUnchecked; <-- два
ULONG_PTR dwItemData;
LPTSTR dwTypeData;
UINT cch;
HBITMAP hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO; -
chak_xakep (21.03.08 16:53) [2]tesseract это Сишный код, а пример есть???
-
ну вот твоя структура на pascal.
tagMENUITEMINFOA = packed record
cbSize: UINT;
fMask: UINT;
fType: UINT; { used if MIIM_TYPE}
fState: UINT; { used if MIIM_STATE}
wID: UINT; { used if MIIM_ID}
hSubMenu: HMENU; { used if MIIM_SUBMENU}
hbmpChecked: HBITMAP; { used if MIIM_CHECKMARKS}
hbmpUnchecked: HBITMAP; { used if MIIM_CHECKMARKS}
dwItemData: DWORD; { used if MIIM_DATA}
dwTypeData: PAnsiChar; { used if MIIM_TYPE}
cch: UINT; { used if MIIM_TYPE}
hbmpItem: HBITMAP; { used if MIIM_BITMAP}
end;
Если не понял зачем это, возвращайся на VCL или к чтению документации. Потому, как пойдут вопросы про HBITMAP и тп.
ЗЫ: VCL не зря писали. -
chak_xakep (21.03.08 17:03) [4]О, догнал в эту сторону рыть??? tesseract FOREVER!!!
function CreateMenuItem(hMenu, SubMenu: HMENU; Cap: PChar;
_uID, _wID: UINT; Sep: Boolean): Boolean;
var
Mi: MENUITEMINFO;
begin
with Mi do
begin
cbSize:= SizeOf(Mi);
fMask:= MIIM_STATE or MIIM_TYPE or MIIM_SUBMENU or MIIM_ID;
if not Sep
then fType:= MFT_STRING
else fType:= MFT_SEPARATOR;
fState:= MFS_ENABLED;
wID:= _wID;
hSubMenu:= SubMenu;
dwItemData:= 0;
dwTypeData:= Cap;
cch:= SizeOf(Cap);
end;
Result:= InsertMenuItem(hMenu, _uID, false, Mi);
end;
tesseract УВАЖУХА!!! <br> -
{RASkov} © (21.03.08 17:13) [5]> tesseract FOREVER!!!
> tesseract УВАЖУХА!!!
> tesseract ©
О как... подфорсило :) -
> О как... подфорсило :)
Бывает :-) хорошо что на MFC под delphi не пишут :-)