Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 79


while(GetMessagc(&Msg, NULL, О, О))

( i

if( !TranslaleAccclcrator(hWnd, hAccel, &Msg))

!

TranslateMessage(&Msg); DispatchMcssage(&Msg);

return Msg.wParam;

Итак, с созданием таблиц акселераторов мы разобрались. Дело за ма­лым - рассмотреть небольшой пример. В данном случае я не стал изобре­тать велосипед, и сделал следующее:

в программе, взятой из предыдущего примера, создал меню не в про­грамме, а в файле ресурсов;

определил в файле ресурсов акселераторные комбинации;

добавил в цикл сообщений обработку акселераторных комбинаций.

В результате получились файлы, которые приведены ниже:

«define IDM_Enable_Disable О «define IDMJExit 1 «define IDM_About 2 «define IDP_File 3 «define IDPJHelp 4

Листинг № 4. Файл определений:

#include «menu.h»

MyMenu MENU

POPUP "&File" {

MENUITEM "Enable exit\te", IDM_Enable_Disable, GRAYED

MENUITEM "E&xit", IDM_Exit

POPUP "&Help"

MENUITEM "About\ta", IDM About, DISABLED

MyMenu ACCELERATORS {

«x», IDM_Exit, ASCII «a», IDM_About, ASCII «e», IDM_Enable_Disable, ASCII «d», IDM_Enable_Disable, ASCII

Листинг № 5. Файл ресурсов:

«include <windows.h>

«include <commctrl.h>

«include "menu.h"

char* pMessages[] = {"Enable or disable exit", "Exit from the program", "About this program", "File operations", "Help operations", "Menu example", "System menu"};

long WINAPI HelloWorldWndProc ( FTWND, UINT, UINT. LONG );

HWND hStatusWindow;

UINT wld;

HMENU hMenu,hFileMenu,hHelpMenu;

HrNSTANCE hlnst;

int APIENTRY WinMain (HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int nCmdShow )

!

HWND hWnd ;

WNDCLASS WndClass ;

MSG Msg;

HACCEL hAccel;

hlnst = hinstance; /* Registering our window class */ /* Fill WNDCLASS structure */

WndClass.style = CSJHREDRAW | CSJVREDRAW;

WndClass.lpfnWndProc = (WNDPROC) HelloWorldWndProc;

WndClass.cbClsExtra = 0;




Начало  Назад  Вперед



Книжный магазин