hDlgModeless=CreateDialog(hI,TEXT("ColorScrDlg"),hwnd,ColorScrDlg);

//Arquivo: main.c #include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK ColorScrDlg(HWND, UINT, WPARAM, LPARAM); HWND hDlgModeless; int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPrevInstance, PSTR szCmdLine, 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(NULL, IDI_APPLICATION); 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, TEXT("Cores"), 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); } } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_DESTROY: DeleteObject((HGDIOBJ)SetClassLong(hwnd,-10,(LONG)GetStockObject(0))); PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); } BOOL CALLBACK ColorScrDlg(HWND hDlg, UINT msg, WPARAM wParam, 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 (wParam)) { 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(wParam); 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])) ) ); InvalidateRect(hwndParent, NULL, TRUE); return TRUE; } return FALSE; }
//Arquivo: resource.h #define IDC_STATIC 8
//Arquivo: resource.rc #include "resource.h" #include "afxres.h" COLORSCRDLG DIALOG DISCARDABLE 16, 16, 120, 141 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION CAPTION "Color Scroll Scrollbars" 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