#include #include #include const char g_szClassName[] = "myWindowClass"; const char class2[] = "class2"; #define IDC_MAIN_BUTTON 101 // Button identifier #define IDC_MAIN_EDIT 102 // Edit box identifier HWND hEdit, hEdit2, w2; LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK WinProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc, wc2; HWND hwnd; MSG Msg; //Step 1: Registering the Window Class wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); wc.lpszMenuName = NULL; wc.lpszClassName = g_szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wc2.cbSize = sizeof(WNDCLASSEX); wc2.style = 0; wc2.lpfnWndProc = WinProc2; wc2.cbClsExtra = 0; wc2.cbWndExtra = 0; wc2.hInstance = hInstance; wc2.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc2.hCursor = LoadCursor(NULL, IDC_ARROW); wc2.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); wc2.lpszMenuName = NULL; wc2.lpszClassName = class2; wc2.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClassEx(&wc) || !RegisterClassEx(&wc2)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } // Step 2: Creating the Window hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "The title of my window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 480, 480, NULL, NULL, hInstance, NULL); if (hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // Step 3: The Message Loop while (GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; } LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 50, 100, 200, 25, hWnd, (HMENU) IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL); HGDIOBJ hfDefault = GetStockObject(DEFAULT_GUI_FONT); SendMessage(hEdit, WM_SETFONT, (WPARAM) hfDefault, MAKELPARAM(FALSE, 0)); SendMessage(hEdit, WM_SETTEXT, NULL, (LPARAM)"Insert text here..."); // Create a push button HWND hWndButton = CreateWindowEx(NULL, "BUTTON", "OK", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 50, 220, 100, 24, hWnd, (HMENU) IDC_MAIN_BUTTON, GetModuleHandle(NULL), NULL); /*SendMessage(hWndButton, WM_SETFONT, (WPARAM) hfDefault, MAKELPARAM(FALSE, 0));*/ w2 = CreateWindowEx( WS_EX_CLIENTEDGE, class2, "window 2", WS_TILEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 480, 480, hWnd, NULL, NULL, NULL); WINDOWINFO wi; GetWindowInfo(hWnd, &wi); //keep from overlapping SetWindowPos(w2, NULL, wi.rcWindow.right + 25, wi.rcWindow.top, 480, 480, NULL); ShowWindow(w2, 1); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_MAIN_BUTTON: { char buffer[256]; SendMessage(hEdit, WM_GETTEXT, sizeof(buffer) / sizeof(buffer[0]), reinterpret_cast(buffer)); SendMessage(hEdit2, WM_SETTEXT, sizeof(buffer) / sizeof(buffer[0]), reinterpret_cast(buffer)); } break; } break; case WM_DESTROY: { PostQuitMessage(0); return 0; } break; } return DefWindowProc(hWnd, msg, wParam, lParam); } LRESULT CALLBACK WinProc2(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { // Create an edit box hEdit2 = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 50, 100, 360, 260, hWnd, (HMENU) IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL); HGDIOBJ hfDefault = GetStockObject(DEFAULT_GUI_FONT); SendMessage(hEdit2, WM_SETFONT, (WPARAM) hfDefault, MAKELPARAM(FALSE, 0)); } break; case WM_COMMAND: switch (LOWORD(wParam)) { } break; case WM_DESTROY: { PostQuitMessage(0); return 0; } break; } return DefWindowProc(hWnd, msg, wParam, lParam); }