На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Creating a Class Menu



The following example shows how to create a class menu for an application, create a window that uses the class menu, and process menu commands in the window procedure.

Following is the relevant portion of the application's header file:

// Menu-template resource identifier

#define IDM_MYMENURESOURCE 3


Following are the relevant portions of the application itself:

HINSTANCE hinst;

int APIENTRY WinMain(hinstance, hPrevInstance, lpCmdLine, nCmdShow)
HINSTANCE hinstance;
HINSTANCE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
{
MSG msg; // message
WNDCLASS wc; // windowclass data
HWND hwnd; // handle to the main window

// Create the window class for the main window. Specify
// the identifier of the menu-template resource as the
// lpszMenuName member of the WNDCLASS structure to create

// the class menu.

wc.style = 0;
wc.lpfnWndProc = (WNDPROC) MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = MAKEINTRESOURCE(IDM_MYMENURESOURCE);
wc.lpszClassName = "MainWClass";

if (!RegisterClass(&wc))
return FALSE;


hinst = hinstance;

// Create the main window. Set the hmenu parameter to NULL so
// that Windows uses the class menu for the window.

hwnd = CreateWindow("MainWClass", "Sample Application",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance,
NULL);

if (hwnd == NULL)
return FALSE;

// Make the window visible and send a WM_PAINT message to the

// window procedure.

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

// Start the main message loop.

while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
UNREFERENCED_PARAMETER(hPrevInstance);
}


LRESULT APIENTRY MainWndProc(hwnd, uMsg, wParam, lParam)
HWND hwnd;
UINT uMsg;
WPARAM wParam;
LPARAM lParam;
{

switch (uMsg) {

.
. // Process other window messages.
.

case WM_COMMAND:

// Test for the identifier of a command item.

switch(LOWORD(wParam)) {
case IDM_FI_OPEN:
DoFileOpen(); // application-defined
break;

case IDM_FI_CLOSE:
DoFileClose(); // application-defined
break;
.

. // Process other menu commands.
.

default:
break;

}
return 0;

.
. // Process other window messages.
.

default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return NULL;
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Создание Меню Класса



Следующий пример показывает как, чтобы создавать меню класса для приложения, создавать окно, которое использует меню класса, и меню процесса командует в процедуре окна.

Следующее является важной частью прикладного файла заголовка:

// Меню-шаблон идентификатора ресурса

#define IDM_MYMENURESOURCE 3


Следующее является самими важными частями приложения:

HINSTANCE hinst;

int APIENTRY WinMain(hinstance, hPrevInstance, lpCmdLine, nCmdShow) hinstance HINSTANCE;
hPrevInstance HINSTANCE;
LPSTR lpCmdLine;
int nCmdShow;
{
msg MSG; // wc сообщения WNDCLASS; // windowclass данные HWND hwnd; // ручка в основное окно

// Создайте класс окна для основного окна. Определите // идентификатор меню-шаблона ресурса как // элемент lpszMenuName структуры WNDCLASS, чтобы создаваться

// меню класса.

wc.style = 0;
wc.lpfnWndProc = (WNDPROC) MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIcon(НЕДЕЙСТВИТЕЛЬНЫЙ, IDI_APPLICATION);
wc.hCursor = LoadCursor(НЕДЕЙСТВИТЕЛЬНЫЙ, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = MAKEINTRESOURCE(IDM_MYMENURESOURCE);
wc.lpszClassName = "MainWClass";

если (!RegisterClass(&wc)) ОБРАТНАЯ ЛОЖЬ;


hinst = hinstance;

// Создайте основное окно. Установите параметр hmenu на НЕДЕЙСТВИТЕЛЬНЫЙ так //, что Windows использует меню класса для окна.

hwnd = CreateWindow("MainWClass", "Приложение Образца", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, НЕДЕЙСТВИТЕЛЬНЫЙ, НЕДЕЙСТВИТЕЛЬНЫЙ, hinstance, НЕДЕЙСТВИТЕЛЬНЫЙ);

если (hwnd == НЕДЕЙСТВИТЕЛЬНЫЙ) обратная ЛОЖЬ;

// Сделайте окном видимым и посылайте сообщение WM_PAINT в the

// процедура окна.

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

// Начало основной цикл сообщения.

пока (GetMessage(&msg, НЕДЕЙСТВИТЕЛЬНЫЙ, 0, 0)) { TranslateMessage(&msg);
DispatchMessage(&msg);
}
возвращайте msg.wParam;
UNREFERENCED_PARAMETER(hPrevInstance);
}


LRESULT APIENTRY MainWndProc(hwnd, uMsg, wParam, lParam) HWND hwnd;
UINT uMsg;
WPARAM wParam;
LPARAM lParam;
{

ключ (uMsg) {

.
. // Процесс другие сообщения окна.
.

случай WM_COMMAND:

// Тест для идентификатора командного пункта.

ключ(LOWORD(wParam)) { случай IDM_FI_OPEN: DoFileOpen(); // определенное прикладное прерывание;

случай IDM_FI_CLOSE: DoFileClose(); // определенное прикладное прерывание;
.

. // Процесс другие команды меню.
.

умолчание: прерывание;

}
возврат 0;

.
. // Процесс другие сообщения окна.
.

умолчание:
возвращайте DefWindowProc(hwnd, uMsg, wParam, lParam);
}
возвращайте НЕДЕЙСТВИТЕЛЬНЫЙ;
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz