Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Создание растрового изображения для панели инструментов

Rusa


Создание растрового изображения для пане&# 14114i818o 1083;и инструментов



Прежде чем использовать пане&# 14114i818o 1083;и инструментов, нужно создать иконки, форми­рующие изображения на кнопках пане&# 14114i818o 1083;и. Для этого понадобится графический редактор. Процесс создания растрового изображения идентичен в целом процессу рисования иконки (Вы делали это, создавая пользовательские иконки к примерам гл. 6). Однако тут есть и одно существенное отличие: с пане&# 14114i818o 1083;ью инструментов может быть связано только одно растровое изображение, и оно должно содержать все изображения для кнопок. Таким образом, если пане&# 14114i818o 1083;ь инструментов должна содер­жать шесть кнопок, то и растр, связанный с ней, должен содержать шесть изображе­ний. Например, если изображения кнопок имеют размер 16 16 пикселей и пане&# 14114i818o 1083;ь инструментов содержит шесть кнопок, то растр, связанный с этой пане&# 14114i818o 1083;ью, должен иметь высоту 16 и ширину 96 (16

16 пикселей. На рис. 10.1 показано растровое изображение, которое использовано в примерах этой главы в графическом редакторе (четвертое изображение намеренно оставлено пус­тым). Пане&# 14114i818o 1083;ь инструментов используется как альтернативное меню для работающей с графикой программы из гл. 9. Вы можете создать собственное растровое изображе­ние и сохранить его в файле с именем Toolbar bmp

Рис. 10.1. Пане&# 14114i818o 1083;ь инструментов в процессе графического

редактирования

. Программа работы с пане&# 14114i818o 1083;ью инструментов.

Следующий пример представляет собой программу работы с графикой из гл. 9, в которую добавлена пане&# 14114i818o 1083;ь инструментов, дублирующая команды меню. Используя пане&# 14114i818o 1083;ь инструментов, Вы можете рисовать линии, прямоугольники и эллипсы, а также стереть изображение в окне и выбрать команду Помощь.

// Демонстрация пане&# 14114i818o 1083;и инструментов

include <Windows h>

#include <Commctrl.h>



#include <String.h>

#include <Stdio.h>

#include "Tb.h"

#define NUMBUTTONS 6

void InitToolBar(); // Функция инициализации пане&# 14114i818o 1083;и

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

char szWinName[] = "МоеОкно";  // Имя класса окна

int maxX, maxY; // Размеры экрана

HDC memdc; // DC виртуального окна

HBITMAP hbit // Растр - это виртуальное окно

HBRUSH hbrush hOldbrush

HPEN hOldpen // Дескриптор прежнего пера

HPEN hRedpen,hGreenpen,hBluepen,hYellowpen; // Перья

TBBUTTON tbButtons[NUMBUTTONS];

HWND tbwnd; // Дескриптор пане&# 14114i818o 1083;и инструментов

int WINAPI WinMain (HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg wParam

}

Windows

LRESULT CALLBACK WindowFunc HWND hwnd

UINT message,

WPARAM wParam,

LPARAM lParam)

break;

case WM_PAINT: // Перерисовка окна

// DC */

hdc=BeginPaint(hwnd,&paintstruct);

BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);

// Освободить DC

EndPaint(hwnd,&paintstruct);

break

case WM DESTROY // Завершение программы



// Удалить созданные перья

DeleteObject hRedpen

DeleteObject(hGreenpen);

DeleteObject(hBluepen);

DeleteObject(hYellowpen);

DeleteDC(memdc); // Удалить виртуальное окно

PostQuitMessage(0);

break

default

// Все сообщения, не обрабатываемые в данной

// функции, направляются на обработку по

// умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

return

}

// Инициализация структур пане&# 14114i818o 1083;и инструментов

void InitToolBar

Для этой программы понадобится следующий файл ресурсов Mydialog.rc:

#include <Windows.h>

#include "Tb.h"

IDTB_BMP BITMAP "Toolbar.bmp"

MYMENU MENU

POPUP "&Разное"

MENUITEM "Помощь", ID_HELP

}

MYMENU ACCELERATORS

Tb h

#define ID_LINES 100

#define ID_RECTANGLES 101

#define ID_ELLIPSES 102

#define ID_SHOW 103

#define ID_HIDE 104

#define ID_RESET 105

#define ID_HELP 106

#define ID_TOOLBAR 200

define IDTB BMP 300

Большая часть этой программы Вам уже знакома. Приведем короткое описание остальной ее части. Вся информация, относящаяся к пане&# 14114i818o 1083;и инструментов, хранится в массиве tbButtons InitToolBar ID HIDE WinMain InitCommonControls . После этого создается пане&# 14114i818o 1083;ь инструментов и ее дескриптор сохраняется в переменной tbwnd



Каждая кнопка пане&# 14114i818o 1083;и инструментов соответствует определенной команде меню. Поэтому при нажатии такой кнопки соответствующая команда будет передана программе в параметрах сообщения WM COMMAND case

Поскольку пане&# 14114i818o 1083;ь инструментов является окном, она может быть скрыта или отображена, как и любое другое окно, при помощи функции ShowWindow . Пане&# 14114i818o 1083;ь инструментов может быть спрятана по команде Спрятать Toolbar Toolbar. Поскольку пане&# 14114i818o 1083;ь инструментов уменьшает размер рабочей области окна, всегда следует предоставлять пользователю возможность убирать ее с экрана. Как видно из программы, делается это достаточно просто.

ID HELP. При выборе команды Помощь (в меню или нажатием соответствующей кнопки пане&# 14114i818o 1083;и инструментов) кнопка помощи в пане&# 14114i818o 1083;и инструментов нажимается вручную при помощи посылки сообщения TB CHECKBUTTON. Когда же пользо­ватель закрывает окно сообщения со справочной информацией, кнопка вручную освобождается. Таким образом, кнопка помощи остается нажатой все время, пока окно сообщения находится на экране. Это пример того, как из программы можно управлять пане&# 14114i818o 1083;ью инструментов. Пример окна, создаваемого этой программой, показан на рис. 10.2.

Рис. 10.2. Окно диалога с пане&# 14114i818o 1083;ью инструментов




Document Info


Accesari: 1075
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )