На главную

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 Shortcut Font-Attributes Menu



The example in this section contains portions of code from an application that creates and displays a shortcut menu that enables the user to set fonts and font attributes. The application displays the menu in the client area of its main window whenever the user clicks the left mouse button.

Here is the menu template for the shortcut menu that is provided in the application's resource-definition file.

PopupMenu MENU
BEGIN
POPUP "Dummy Popup"
BEGIN
POPUP "Fonts"
BEGIN
MENUITEM "Courier", IDM_FONT_COURIER
MENUITEM "Times Roman", IDM_FONT_TMSRMN
MENUITEM "Swiss", IDM_FONT_SWISS
MENUITEM "Helvetica", IDM_FONT_HELV
MENUITEM "Old English", IDM_FONT_OLDENG
END
POPUP "Sizes"
BEGIN
MENUITEM "7", IDM_SIZE_7
MENUITEM "8", IDM_SIZE_8

MENUITEM "9", IDM_SIZE_9
MENUITEM "10", IDM_SIZE_10
MENUITEM "11", IDM_SIZE_11
MENUITEM "12", IDM_SIZE_12
MENUITEM "14", IDM_SIZE_14
END
POPUP "Styles"
BEGIN
MENUITEM "Bold", IDM_STYLE_BOLD
MENUITEM "Italic", IDM_STYLE_ITALIC
MENUITEM "Strike Out", IDM_STYLE_SO
MENUITEM "Superscript", IDM_STYLE_SUPER
MENUITEM "Subscript", IDM_STYLE_SUB

END
END

END


The following example gives the window procedure and supporting functions used to create and display the shortcut menu.

LRESULT APIENTRY MenuWndProc(hwnd, uMsg, wParam, lParam)
HWND hwnd;
UINT uMsg;
WPARAM wParam;
LPARAM lParam;
{
RECT rc; // client area
POINT pt; // location of mouse click

switch (uMsg) {
case WM_LBUTTONDOWN:

// Get the bounding rectangle of the client area.

GetClientRect(hwnd, (LPRECT) &rc);

// Get the client coordinates for the mouse click.

pt.x = LOWORD(lParam);

pt.y = HIWORD(lParam);

// If the mouse click took place inside the client
// area, execute the application-defined function
// that displays the shortcut menu.

if (PtInRect((LPRECT) &rc, pt))
HandlePopupMenu(hwnd, pt);
break;
.
. // Process other window messages.
.

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

}
return NULL;
}


VOID APIENTRY HandlePopupMenu(hwnd, pt)
HWND hwnd;
POINT pt;
{
HMENU hmenu; // menu template
HMENU hmenuTrackPopup; // shortcut menu

// Load the menu template containing the shortcut menu from the
// application's resources.

hmenu = LoadMenu(hinst, "PopupMenu");
if (hmenu == NULL)
return;

// Get the first shortcut menu in the menu template. This is the

// menu that TrackPopupMenu displays.

hmenuTrackPopup = GetSubMenu(hmenu, 0);

// TrackPopup uses screen coordinates, so convert the
// coordinates of the mouse click to screen coordinates.

ClientToScreen(hwnd, (LPPOINT) &pt);

// Draw and track the shortcut menu.

TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON,
pt.x, pt.y, 0, hwnd, NULL);

// Destroy the menu.

DestroyMenu(hmenu);

}



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

Создание Сокращенного Меню Font-Attributes



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

Вот шаблон меню для сокращенного меню, которое приведено в прикладном ресурсе-определении файла.

МЕНЮ PopupMenu НАЧИНАЕТСЯ
ВЫСВЕЧИВАНИЕ "Ложного Высвечивания" НАЧИНАЕТСЯ, ВЫСВЕЧИВАНИЕ "Шрифтов" НАЧИНАЕТСЯ
MENUITEM "КУРЬЕР", IDM_FONT_COURIER MENUITEM "Время Римское", IDM_FONT_TMSRMN MENUITEM "Швейцарский", IDM_FONT_SWISS MENUITEM "Helvetica", IDM_FONT_HELV MENUITEM "Старый Английский", КОНЕЧНОЕ ВЫСВЕЧИВАНИЕ IDM_FONT_OLDENG "Размеры" НАЧИНАЕТСЯ
MENUITEM "7", IDM_SIZE_7 MENUITEM "8", IDM_SIZE_8

MENUITEM "9", IDM_SIZE_9 MENUITEM "10", IDM_SIZE_10 MENUITEM "11", IDM_SIZE_11 MENUITEM "12", IDM_SIZE_12 MENUITEM "14", КОНЕЧНОЕ ВЫСВЕЧИВАНИЕ IDM_SIZE_14 "Стили" НАЧИНАЕТСЯ
MENUITEM "ЖИРНЫЙ шрифт", IDM_STYLE_BOLD MENUITEM "Курсив", IDM_STYLE_ITALIC MENUITEM "Нажимать", IDM_STYLE_SO MENUITEM "Надстрочный индекс", IDM_STYLE_SUPER MENUITEM "Приписка", IDM_STYLE_SUB

КОНЕЧНЫЙ КОНЕЦ

КОНЕЦ


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

LRESULT APIENTRY MenuWndProc(hwnd, uMsg, wParam, lParam) HWND hwnd;
UINT uMsg;
WPARAM wParam;
LPARAM lParam;
{
rc RECT; // ТОЧКА области клиента пт; // позиция щелчка мыши

ключ (uMsg) { случай WM_LBUTTONDOWN:

// Получите прямоугольник bounding области клиента.

GetClientRect(hwnd, (LPRECT) &rc);

// Получите координаты клиента для щелчка мыши.

pt.x = LOWORD(lParam);

pt.y = HIWORD(lParam);

// Если щелчок мыши происходил бы на клиенте // область, выполните определенную прикладную функцию //, которая отображает сокращенное меню.

если (PtInRect((LPRECT) &rc, пт)) HandlePopupMenu(hwnd, пт);
прерывание;
.
. // Процесс другие сообщения окна.
.

умолчание:
возвращайте DefWindowProc(hwnd, uMsg, wParam, lParam);

}
возвращайте НЕДЕЙСТВИТЕЛЬНЫЙ;
}


АННУЛИРУЙТЕ APIENTRY HandlePopupMenu(hwnd, пт) HWND hwnd;
ТОЧКА пт;
{
HMENU hmenu; // шаблон меню HMENU hmenuTrackPopup; // сокращенное меню

// Загрузка шаблон меню, содержащий сокращенное меню из // прикладных ресурсов.

hmenu = LoadMenu(hinst, "PopupMenu");
если возврат (hmenu == НЕДЕЙСТВИТЕЛЬНЫЙ);

// Получите первое сокращенное меню в шаблоне меню. Это - the

// меню эти дисплеи TrackPopupMenu.

hmenuTrackPopup = GetSubMenu(hmenu, 0);

// TrackPopup ИСПОЛЬЗУЕТ экранные координаты, так что преобразование // координаты щелчка мыши, чтобы отгораживать координаты.

ClientToScreen(hwnd, (LPPOINT) &ПТ);

// Сделайте и прослеживайте сокращенное меню.

TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, НЕДЕЙСТВИТЕЛЬНЫЙ);

// Уничтожьте меню.

DestroyMenu(hmenu);

}



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