
/** Abraão gerou Isaque que gerou Jacó que é Israel */
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
#define NUMBUTTONS 12
LRESULT CALLBACK ProcJan(HWND, UINT, WPARAM, LPARAM);
void InitToolbar(void);
HBRUSH Brush[6];
TBBUTTON tbButtons[NUMBUTTONS];
HWND tbwnd;
int ToolBarActive;
UINT wSelection;
HMENU hMenu;
TCHAR szNA[] = "Menu";
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hCA, LPSTR szLC, int iCS) {
HWND hjan;
MSG msg;
WNDCLASS classejan;
HACCEL hAccel;
int i;
classejan.style = CS_HREDRAW | CS_VREDRAW;
classejan.lpfnWndProc = ProcJan;
classejan.cbClsExtra = 0;
classejan.cbWndExtra = 0;
classejan.hInstance = hI;
classejan.hIcon = LoadIcon(NULL, IDI_APPLICATION);
classejan.hCursor = LoadCursor(NULL, IDC_ARROW);
classejan.hbrBackground = GetStockObject(WHITE_BRUSH);
classejan.lpszMenuName = szNA;
classejan.lpszClassName = szNA;
if(!RegisterClass(&classejan)) {
return 0;
}
hjan = CreateWindow(
szNA, TEXT("Menu"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
HWND_DESKTOP, NULL, hI, NULL
);
hAccel = LoadAccelerators(hI, szNA);
InitToolbar();
InitCommonControls();
tbwnd = CreateToolbarEx(
hjan,
WS_VISIBLE|WS_CHILD|WS_BORDER|TBSTYLE_TOOLTIPS,
IDM_TOOLBAR,
NUMBUTTONS,
hI,
NULL,
tbButtons,
NUMBUTTONS,
0,
0,
16,
16,
sizeof(TBBUTTON)
);
ShowWindow(hjan, iCS);
UpdateWindow(hjan);
while(GetMessage(&msg, NULL, 0, 0)) {
if(!TranslateAccelerator(hjan, hAccel, &msg)) {
TranslateMessage(&msg);
DispatchMessage (&msg);
FreeConsole();
}
}
for(i=0; i<6; i++) {
DeleteObject((HGDIOBJ) Brush[i]);
}
return msg.wParam;
}
LRESULT CALLBACK ProcJan(HWND hjan, UINT msg, WPARAM wP, LPARAM lP) {
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
LPTOOLTIPTEXT TTtext;
switch(msg) {
case WM_CREATE:
hMenu = GetMenu(hjan);
Brush[0] = CreateSolidBrush(RGB(0, 0, 255));
Brush[1] = CreateSolidBrush(RGB(255, 0, 255));
Brush[2] = CreateSolidBrush(RGB(0, 255, 0));
Brush[3] = CreateSolidBrush(RGB(0, 0, 0));
Brush[4] = CreateSolidBrush(RGB(255,255,255));
Brush[5] = CreateSolidBrush(RGB(255, 0, 0));
return 0;
case WM_NOTIFY:
TTtext = (LPTOOLTIPTEXT) lP;
if(TTtext->hdr.code==TTN_NEEDTEXT) {
switch(TTtext->hdr.idFrom) {
case IDM_AZUL:
TTtext->lpszText="Azul";
break;
case IDM_CIANO:
TTtext->lpszText="Ciano";
break;
case IDM_VERDE:
TTtext->lpszText="Verde";
break;
case IDM_PRETO:
TTtext->lpszText="Preto";
break;
case IDM_BRANCO:
TTtext->lpszText="Branco";
break;
case IDM_VERMELHO:
TTtext->lpszText="Vermelho";
break;
case IDM_MSG1:
TTtext->lpszText="Mensagem 1";
break;
case IDM_MSG2:
TTtext->lpszText="Mensagem 2";
break;
case IDM_MSG3:
TTtext->lpszText="Mensagem 3";
break;
case IDM_SAIR:
TTtext->lpszText="Sair";
break;
}
}
return 0;
case WM_COMMAND:
switch(LOWORD(wP)) {
case IDM_AZUL:
case IDM_CIANO:
case IDM_VERDE:
case IDM_PRETO:
case IDM_BRANCO:
case IDM_VERMELHO:
hMenu = GetMenu(hjan);
CheckMenuItem(hMenu, wSelection, MF_UNCHECKED);
wSelection = LOWORD(wP);
CheckMenuItem(hMenu, wSelection, MF_CHECKED);
InvalidateRect(hjan, NULL, 0);
break;
case IDM_MSG1:
MessageBox(
hjan,
"Mensagem 1",
szNA,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_MSG2:
MessageBox(
hjan,
"Mensagem 2",
szNA,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_MSG3:
MessageBox(
hjan,
"Mensagem 3",
szNA,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_SAIR:
if(IDOK==MessageBox(hjan,"Sair",szNA,MB_OK|MB_OKCANCEL|0x30)) {
SendMessage(hjan, WM_CLOSE, 0, 0L);
}
break;
case IDM_MOSTRARB:
ToolBarActive = 1;
ShowWindow(tbwnd, SW_RESTORE);
InvalidateRect(hjan, NULL, 1);
break;
case IDM_ESCB:
ToolBarActive=0;
ShowWindow(tbwnd, SW_HIDE);
InvalidateRect(hjan, NULL, 1);
break;
}
return 0;
case WM_PAINT:
hdc = BeginPaint(hjan, &ps);
GetClientRect(hjan, &rect);
FillRect(hdc, &rect, Brush[wSelection]);
EndPaint(hjan, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CLOSE:
DestroyWindow(hjan);
return 0;
}
return DefWindowProc(hjan, msg, wP, lP);
}
void InitToolbar() {
tbButtons[0].iBitmap = 0;
tbButtons[0].idCommand= IDM_AZUL;
tbButtons[0].fsState = TBSTATE_ENABLED;
tbButtons[0].fsStyle = TBSTYLE_BUTTON;
tbButtons[0].dwData = 0L;
tbButtons[0].iString = 0;
tbButtons[1].iBitmap = 1;
tbButtons[1].idCommand= IDM_CIANO;
tbButtons[1].fsState = TBSTATE_ENABLED;
tbButtons[1].fsStyle = TBSTYLE_BUTTON;
tbButtons[1].dwData = 0L;
tbButtons[1].iString = 0;
tbButtons[2].iBitmap = 2;
tbButtons[2].idCommand= IDM_VERDE;
tbButtons[2].fsState = TBSTATE_ENABLED;
tbButtons[2].fsStyle = TBSTYLE_BUTTON;
tbButtons[2].dwData = 0L;
tbButtons[2].iString = 0;
tbButtons[3].iBitmap = 3;
tbButtons[3].idCommand= IDM_PRETO;
tbButtons[3].fsState = TBSTATE_ENABLED;
tbButtons[3].fsStyle = TBSTYLE_BUTTON;
tbButtons[3].dwData = 0L;
tbButtons[3].iString = 0;
tbButtons[4].iBitmap = 4;
tbButtons[4].idCommand= IDM_BRANCO;
tbButtons[4].fsState = TBSTATE_ENABLED;
tbButtons[4].fsStyle = TBSTYLE_BUTTON;
tbButtons[4].dwData = 0L;
tbButtons[4].iString = 0;
tbButtons[5].iBitmap = 5;
tbButtons[5].idCommand= IDM_VERMELHO;
tbButtons[5].fsState = TBSTATE_ENABLED;
tbButtons[5].fsStyle = TBSTYLE_BUTTON;
tbButtons[5].dwData = 0L;
tbButtons[5].iString = 0;
tbButtons[6].iBitmap = 0;
tbButtons[6].idCommand= 0;
tbButtons[6].fsState = TBSTATE_ENABLED;
tbButtons[6].fsStyle = TBSTYLE_SEP;
tbButtons[6].dwData = 0L;
tbButtons[6].iString = 0;
tbButtons[7].iBitmap = 6;
tbButtons[7].idCommand= IDM_MSG1;
tbButtons[7].fsState = TBSTATE_ENABLED;
tbButtons[7].fsStyle = TBSTYLE_BUTTON;
tbButtons[7].dwData = 0L;
tbButtons[7].iString = 0;
tbButtons[8].iBitmap = 7;
tbButtons[8].idCommand= IDM_MSG2;
tbButtons[8].fsState = TBSTATE_ENABLED;
tbButtons[8].fsStyle = TBSTYLE_BUTTON;
tbButtons[8].dwData = 0L;
tbButtons[8].iString = 0;
tbButtons[9].iBitmap = 8;
tbButtons[9].idCommand= IDM_MSG3;
tbButtons[9].fsState = TBSTATE_ENABLED;
tbButtons[9].fsStyle = TBSTYLE_BUTTON;
tbButtons[9].dwData = 0L;
tbButtons[9].iString = 0;
tbButtons[10].iBitmap = 0;
tbButtons[10].idCommand= 0;
tbButtons[10].fsState = TBSTATE_ENABLED;
tbButtons[10].fsStyle = TBSTYLE_SEP;
tbButtons[10].dwData = 0L;
tbButtons[10].iString = 0;
tbButtons[11].iBitmap = 9;
tbButtons[11].idCommand= IDM_SAIR;
tbButtons[11].fsState = TBSTATE_ENABLED;
tbButtons[11].fsStyle = TBSTYLE_BUTTON;
tbButtons[11].dwData = 0L;
tbButtons[11].iString = 0;
}
/***** resource.h *****/
#define IDM_AZUL 0
#define IDM_CIANO 1
#define IDM_VERDE 2
#define IDM_PRETO 3
#define IDM_BRANCO 4
#define IDM_VERMELHO 5
#define IDM_MSG1 10
#define IDM_MSG2 11
#define IDM_MSG3 12
#define IDM_SAIR 20
#define IDM_MOSTRARB 30
#define IDM_ESCB 31
#define IDM_TOOLBAR 200
#define IDTB_BMP 300
/***** resource.rc *****/
#include "resource.h"
#include "afxres.h"
Menu MENU {
POPUP "&Color" {
POPUP "Mais &Cores" {
MENUITEM "&Preto\t^P", IDM_PRETO
MENUITEM "&Branco\t^B", IDM_BRANCO
MENUITEM "&Vermelho\t^V", IDM_VERMELHO
}
MENUITEM "A&zul\t^Z", IDM_AZUL
MENUITEM "C&iano\t^A", IDM_CIANO
MENUITEM "Ve&rde\t^R", IDM_VERDE
}
POPUP "&Mensagens" {
MENUITEM "Mensagem &1\t^F1", IDM_MSG1
MENUITEM "Mensagem &2\t^F2", IDM_MSG2
MENUITEM "Mensagem &3\t^F3", IDM_MSG3
}
MENUITEM "&Sair ^S", IDM_SAIR
POPUP "&Buttons" {
MENUITEM "&Show\t^M", IDM_MOSTRARB
MENUITEM SEPARATOR
MENUITEM "&Hide\t^E", IDM_ESCB
}
}
Menu ACCELERATORS {
"^Z", IDM_AZUL
"^A", IDM_CIANO
"^R", IDM_VERDE
"^P", IDM_PRETO
"^B", IDM_BRANCO
"^V", IDM_VERMELHO
VK_F1, IDM_MSG1, VIRTKEY
VK_F2, IDM_MSG2, VIRTKEY
VK_F3, IDM_MSG3, VIRTKEY
"^S", IDM_SAIR
"^M", IDM_MOSTRARB
"^E", IDM_ESCB
}
Comentários
Postar um comentário