
#include <windows.h>
#include "resource.h"
static char font[50] = "Verdana";
static HFONT tamanhoDaFonte;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ColorScrDlg(HWND, UINT, WPARAM, LPARAM);
HWND hDlgModeless;
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, PSTR szCL, int iCS) {
static TCHAR szAppName[] = TEXT("Cores");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hI;
wndclass.hIcon = LoadIcon(hI, IDI_ICON);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = CreateSolidBrush(0L);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if(!RegisterClass(&wndclass)) {
MessageBox(NULL,TEXT("Erro!"),szAppName,MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(
szAppName,"Change Color",WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hI, NULL
);
ShowWindow(hwnd, iCS);
UpdateWindow(hwnd);
hDlgModeless=CreateDialog(hI,TEXT("ColorScrDlg"),hwnd,ColorScrDlg);
while(GetMessage(&msg, NULL, 0, 0)) {
if(hDlgModeless==0 || !IsDialogMessage(hDlgModeless,&msg)) {
TranslateMessage(&msg);
DispatchMessage (&msg);
FreeConsole();
}
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wP,LPARAM lParam) {
HDC contexto;
PAINTSTRUCT ps;
static TCHAR gns[] = "Gênesis 6:5";
switch(msg) {
case WM_PAINT:
contexto = BeginPaint(hwnd, &ps);
tamanhoDaFonte = CreateFontA(
89, 0, 0, 0, FW_EXTRABOLD,
1, 0, 0, 0, 0,
0, 0, 0, font
);
SelectObject(contexto, tamanhoDaFonte);
SetTextColor(contexto, RGB(50, 0, 255));
TextOut(contexto, 10, 220, gns, strlen(gns));
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
DeleteObject(
(HGDIOBJ) SetClassLong(
hwnd,
-10,
(LONG) GetStockObject(0)
)
);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wP, lParam);
}
BOOL CALLBACK ColorScrDlg(HWND hDlg, UINT msg, WPARAM wP, LPARAM lParam) {
static int iColor[3];
HWND hwndParent, hCtrl;
int iCtrlID, iIndex;
switch(msg) {
case WM_INITDIALOG:
for(iCtrlID = 10; iCtrlID<13; iCtrlID++) {
hCtrl = GetDlgItem(hDlg, iCtrlID);
SetScrollRange(hCtrl, SB_CTL, 0, 255, FALSE);
SetScrollPos(hCtrl, SB_CTL, 0, FALSE);
}
return TRUE;
case WM_VSCROLL:
hCtrl = (HWND) lParam;
iCtrlID = GetWindowLong(hCtrl, GWL_ID);
iIndex = iCtrlID - 10;
hwndParent = GetParent(hDlg);
switch(LOWORD(wP)) {
case SB_PAGEDOWN:
iColor[iIndex] += 15;
case SB_LINEDOWN:
iColor[iIndex] = min(255, iColor[iIndex] + 1);
break;
case SB_PAGEUP:
iColor[iIndex] -= 15;
case SB_LINEUP:
iColor[iIndex] = max(0, iColor[iIndex] - 1);
break;
case SB_TOP:
iColor[iIndex] = 0;
break;
case SB_BOTTOM:
iColor[iIndex] = 255;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
iColor[iIndex] = HIWORD(wP);
break;
default:
return FALSE;
}
SetScrollPos(hCtrl, SB_CTL, iColor[iIndex], TRUE);
SetDlgItemInt(hDlg, iCtrlID + 3, iColor[iIndex], FALSE);
DeleteObject(
(HGDIOBJ) SetClassLong(
hwndParent,
GCL_HBRBACKGROUND,
(LONG) CreateSolidBrush(
RGB(
iColor[0],
iColor[1],
iColor[2]
)
)
)
); /** DeleteObject */
InvalidateRect(hwndParent, NULL, TRUE);
return TRUE;
}
return FALSE;
}
/********************Arquivo: resource.h********************/
#define IDC_STATIC 8
#define IDI_ICON 9
/********************Arquivo: resource.rc********************/
#include "resource.h"
#include "afxres.h"
IDI_ICON ICON "project1.ico"
COLORSCRDLG DIALOG DISCARDABLE 16, 16, 120, 141
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Change Color"
FONT 8, "MS Sans Serif"
BEGIN
CTEXT "&Red", IDC_STATIC,8,8,24,8,NOT WS_GROUP
SCROLLBAR 10,8,20,24,100, SBS_VERT | WS_TABSTOP
CTEXT "0",13,8,124,24,8,NOT WS_GROUP
CTEXT "&Green", IDC_STATIC,48,8,24,8,NOT WS_GROUP
SCROLLBAR 11,48,20,24,100, SBS_VERT | WS_TABSTOP
CTEXT "0",14,48,124,24,8,NOT WS_GROUP
CTEXT "&Blue", IDC_STATIC,89,8,24,8,NOT WS_GROUP
SCROLLBAR 12,89,20,24,100, SBS_VERT | WS_TABSTOP
CTEXT "0",15,89,124,24,8,NOT WS_GROUP
END
Comentários
Postar um comentário