Вы находитесь на странице: 1из 5

www.huahongquan.

com
#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc1 (HWND, UINT, WPARAM, LPARAM) ; LRESULT CALLBACK WndProc2 (HWND, UINT, WPARAM, LPARAM) ; LRESULT CALLBACK WndProc3 (HWND, UINT, WPARAM, LPARAM) ; LRESULT CALLBACK WndProcMain (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR static TCHAR static TCHAR static TCHAR HWND MSG WNDCLASS szAppName1[] = TEXT ("CLASS_1") ; szAppName2[] = TEXT ("CLASS_2") ; szAppName3[] = TEXT ("CLASS_3") ; szAppNameMain[] = TEXT ("CLASS_MAIN") ; hwnd ; msg ; CLASS_1, CLASS_2, CLASS_3,CLASS_MAIN ; = = = = = = = = = = CS_HREDRAW | CS_VREDRAW ; WndProc1 ; 0 ; 0 ; hInstance ; LoadIcon (NULL, IDI_APPLICATION); LoadCursor (NULL, IDC_ARROW) ; (HBRUSH) GetStockObject (WHITE_BRUSH) ; NULL; szAppName1 ;

//CLASS_1 CLASS_1.style CLASS_1.lpfnWndProc CLASS_1.cbClsExtra CLASS_1.cbWndExtra CLASS_1.hInstance CLASS_1.hIcon CLASS_1.hCursor CLASS_1.hbrBackground CLASS_1.lpszMenuName CLASS_1.lpszClassName

if (!RegisterClass (&CLASS_1))//REGISTER CLASS { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName1, MB_ICONERROR) ; return 0 ; } //CLASS_2 CLASS_2.style = CS_HREDRAW | CS_VREDRAW ; CLASS_2.lpfnWndProc = WndProc2 ; CLASS_2.cbClsExtra = 0 ; CLASS_2.cbWndExtra = 0 ; CLASS_2.hInstance = hInstance ; CLASS_2.hIcon = LoadIcon (NULL, IDI_APPLICATION); CLASS_2.hCursor = LoadCursor (NULL, IDC_ARROW) ; CLASS_2.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; CLASS_2.lpszMenuName = NULL; CLASS_2.lpszClassName = szAppName2 ; if (!RegisterClass (&CLASS_2)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName2, MB_ICONERROR) ; return 0 ; } //CLASS_3 CLASS_3.style CLASS_3.lpfnWndProc CLASS_3.cbClsExtra CLASS_3.cbWndExtra CLASS_3.hInstance = = = = = CS_HREDRAW | CS_VREDRAW ; WndProc3 ; 0 ; 0 ; hInstance ;

www.huahongquan.com
CLASS_3.hIcon CLASS_3.hCursor CLASS_3.hbrBackground CLASS_3.lpszMenuName CLASS_3.lpszClassName = = = = = LoadIcon (NULL, IDI_APPLICATION); LoadCursor (NULL, IDC_ARROW) ; (HBRUSH) GetStockObject (WHITE_BRUSH) ; NULL; szAppName3 ;

if (!RegisterClass (&CLASS_3)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName2, MB_ICONERROR) ; return 0 ; } //////////////////////MAIN WINDOW CLASS //CLASS_MAIN CLASS_MAIN.style = CS_HREDRAW | CS_VREDRAW ; CLASS_MAIN.lpfnWndProc = WndProcMain ; CLASS_MAIN.cbClsExtra = 0 ; CLASS_MAIN.cbWndExtra = 0 ; CLASS_MAIN.hInstance = hInstance ; CLASS_MAIN.hIcon = LoadIcon (NULL, IDI_APPLICATION); CLASS_MAIN.hCursor = LoadCursor (NULL, IDC_ARROW) ; CLASS_MAIN.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; CLASS_MAIN.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); // NOW CREATE MENU CLASS_MAIN.lpszClassName = szAppNameMain ; if (!RegisterClass (&CLASS_MAIN)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppNameMain, MB_ICONERROR) ; return 0 ; } //CREATE WINDOW hwnd = CreateWindow (szAppNameMain, // window class name TEXT ("CLASS MAIN - WINDOW Y"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters //SHOW ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; //MESSAGE LOOP while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } //WINDOW PROCEDURE HERE LRESULT CALLBACK WndProc1 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ;

www.huahongquan.com
RECT rect ;

switch (message) { case WM_CREATE: return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; EndPaint (hwnd, &ps) ; return 0 ; //case WM_DESTROY: // PostQuitMessage (0) ; // return 0 ; case WM_LBUTTONDOWN: // THEM CLICK CHUOT TRAI int X = Y = hdc X,Y; LOWORD(lParam); HIWORD(lParam); = GetDC(hwnd);

Ellipse (hdc, X - 100, Y - 100 , X + 100, Y + 100) ; ReleaseDC(hwnd, hdc); return 0; } return DefWindowProc (hwnd, message, wParam, lParam) ; } LRESULT CALLBACK WndProc2 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE: return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect(hwnd,&rect); Rectangle(hdc,rect.left,rect.top,rect.right/2,rect.bottom/2); EndPaint (hwnd, &ps) ; return 0 ; case WM_SIZE: UpdateWindow (hwnd) ; return 0; // case WM_DESTROY: // PostQuitMessage (0) ; // return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } LRESULT CALLBACK WndProc3 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ;

www.huahongquan.com
RECT rect ;

switch (message) { case WM_CREATE: return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; FillRect(hdc,&rect,(HBRUSH)(COLOR_WINDOW+1)); GetClientRect(hwnd,&rect); int X,Y; X = rect.right/2; Y = rect.bottom/2; Ellipse (hdc, X - 200, Y - 200 , X + 200, Y + 200) ; EndPaint (hwnd, &ps) ; return 0 ; // case WM_DESTROY: // PostQuitMessage (0) ; // return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } LRESULT CALLBACK WndProcMain (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE: return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; case WM_COMMAND://MENU ITEM CLICK HWND hwnd; static TCHAR szAppName1[] = TEXT ("CLASS_1") static TCHAR szAppName2[] = TEXT ("CLASS_2") static TCHAR szAppName3[] = TEXT ("CLASS_3") TCHAR szBuffer [40] ; static int count1 = 0, count2 = 0 , count3 =

; ; ; 0;

switch(LOWORD(wParam)) { case ID_NEW_1: //CLASS_1 count1++; wsprintf (szBuffer, TEXT ("CLASS %i - WINDOW %i"),1 , count1) ; hwnd = CreateWindow (szAppName1, // window class name

www.huahongquan.com
szBuffer, // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle NULL, // program instance handle // NOT HINSTANCE NULL) ; // creation parameters ShowWindow (hwnd, SW_SHOWDEFAULT) ; //NOT ICMDSHOW UpdateWindow (hwnd) ; break; case ID_NEW_2: count2++; wsprintf (szBuffer, TEXT ("CLASS %i - WINDOW %i"),2 , count2) ; hwnd = CreateWindow (szAppName2, // window class name szBuffer, // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle NULL, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, SW_SHOWDEFAULT) ; UpdateWindow (hwnd) ; break; case ID_NEW_3: count3++; wsprintf (szBuffer, TEXT ("CLASS %i - WINDOW %i"),3 , count3) ; hwnd = CreateWindow (szAppName3, // window class name szBuffer, // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle NULL, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, SW_SHOWDEFAULT) ; UpdateWindow (hwnd) ; }; return 0; } return DefWindowProc (hwnd, message, wParam, lParam) ; }

Вам также может понравиться