
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
#define NUMBUTTONS 12
#define MEDIDA 301
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 nm[] = "Menu";
char vs[] = "e livrou o justo Ló, enfadado da vida dissoluta dos \
homens abomináveis - 2 Pedro 2:7";
static HWND x, y;
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hCA, LPSTR szCL, int iCS) {
HWND hjan;
MSG msg;
WNDCLASS wc;
HACCEL hAccel;
int i;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = ProcJan;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hI;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = nm;
wc.lpszClassName = nm;
if(!RegisterClass(&wc)) {
return 0;
}
hjan = CreateWindow(
nm, TEXT("Menu"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
HWND_DESKTOP, NULL, hI, NULL
);
hAccel = LoadAccelerators(hI, nm);
InitToolbar();
InitCommonControls();
tbwnd = CreateToolbarEx(
hjan,WS_VISIBLE|WS_CHILD|WS_BORDER|TBSTYLE_TOOLTIPS,IDM_TOOLBAR,
NUMBUTTONS, hI, IDTB_BMP, 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);
}
}
for(i=0; i<6; i++) {
DeleteObject((HGDIOBJ) Brush[i]);
}
return msg.wParam;
}
LRESULT CALLBACK ProcJan(HWND hwnd, UINT msg, WPARAM wP, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
LPTOOLTIPTEXT TTtext;
switch(msg) {
case WM_CREATE:
hMenu = GetMenu(hwnd);
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));
CreateWindow(
TEXT("button"),TEXT("Screen(x, y)"),WS_VISIBLE|WS_CHILD,
10, 100, 120, 20,
hwnd, (HMENU) MEDIDA, NULL, NULL
);
x = CreateWindow( /** Largura */
TEXT("edit"),TEXT(""),WS_VISIBLE|WS_CHILD|DT_CENTER,
200, 100, 120, 20,
hwnd, NULL, NULL, NULL
);
y = CreateWindow( /** Altura */
TEXT("edit"),TEXT(""),WS_VISIBLE|WS_CHILD|DT_CENTER,
360, 100, 120, 20,
hwnd, NULL, NULL, NULL
);
CreateWindow(
TEXT("button"),TEXT("2 Pedro 2:7"),WS_VISIBLE|WS_CHILD,
520, 100, 120, 20,
hwnd, 302, NULL, NULL
);
return 0;
case WM_NOTIFY:
TTtext = (LPTOOLTIPTEXT) lParam;
if(TTtext->hdr.code==TTN_NEEDTEXT) {
switch(TTtext->hdr.idFrom) {
case IDM_BLUE:
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_BLUE:
case IDM_CIANO:
case IDM_VERDE:
case IDM_PRETO:
case IDM_BRANCO:
case IDM_VERMELHO:
hMenu = GetMenu(hwnd);
CheckMenuItem(hMenu, wSelection, MF_UNCHECKED);
wSelection = LOWORD(wP);
CheckMenuItem(hMenu, wSelection, MF_CHECKED);
InvalidateRect(hwnd, NULL, 0);
break;
case IDM_MSG1:
MessageBox(
hwnd,
"Mensagem 1",
nm,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_MSG2:
MessageBox(
hwnd,
"Mensagem 2",
nm,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_MSG3:
MessageBox(
hwnd,
"Mensagem 3",
nm,
MB_OK|MB_ICONEXCLAMATION
);
break;
case IDM_SAIR:
if(IDOK==MessageBox(hwnd,"Sair",nm,MB_OK|MB_OKCANCEL|0x30)) {
SendMessage(hwnd, WM_CLOSE, 0, 0L);
}
break;
case IDM_MOSTRARB:
ToolBarActive = 1;
ShowWindow(tbwnd, SW_RESTORE);
InvalidateRect(hwnd, NULL, 1);
break;
case IDM_ESCB:
ToolBarActive=0;
ShowWindow(tbwnd, SW_HIDE);
InvalidateRect(hwnd, NULL, 1);
break;
}
if(LOWORD(wP)==MEDIDA) {
int largura, altura;
largura = GetSystemMetrics(SM_CXSCREEN);
altura = GetSystemMetrics(SM_CYSCREEN);
static char cnt1[400], cnt2[400];
itoa(largura, cnt1, 10);
itoa(altura, cnt2, 10);
SetWindowText(x, cnt1);
SetWindowText(y, cnt2);
}
if(LOWORD(wP)==302) {
MessageBox(hwnd, vs, "2 Pedro 2:7", MB_OK);
}
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
FillRect(hdc, &rect, Brush[wSelection]);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CLOSE:
DestroyWindow(hwnd);
return 0;
}
return DefWindowProc(hwnd, msg, wP, lParam);
}
void InitToolbar() {
tbButtons[0].iBitmap = 0;
tbButtons[0].idCommand= IDM_BLUE;
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;
}
/************* Arquivo: Resource.h *************/
#define IDM_BLUE 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
/************* Arquivo: Resource.rc *************/
#include "resource.h"
#include "afxres.h"
Menu MENU {
POPUP "&Cor" {
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_BLUE
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 "&Botões" {
MENUITEM "&Mostar\t^M", IDM_MOSTRARB
MENUITEM SEPARATOR
MENUITEM "&Esconder\t^E", IDM_ESCB
}
}
Menu ACCELERATORS {
"^Z", IDM_BLUE
"^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