#include LRESULT CALLBACK windowProcedure(HWND, UINT, WPARAM, LPARAM); void initialize(WNDCLASS&, HINSTANCE&, HWND&, int); HINSTANCE mainInstance; int APIENTRY WinMain(HINSTANCE instance, HINSTANCE previousInstance, LPSTR commandParam, int commandShow) { HWND hwnd; MSG message; WNDCLASS wndclass; mainInstance = instance; initialize(wndclass, instance, hwnd, commandShow); while (GetMessage(&message, 0, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return message.wParam; } HWND input, output, from, to, ok; struct WindowSize { int x, y, width, height; }; LRESULT CALLBACK windowProcedure(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { enum { ID_INPUT=100, ID_OUTPUT, ID_FROM, ID_TO, ID_OK }; enum { OPTION_DEFAULT = WS_CHILD | WS_VISIBLE }; enum { EDIT_OPTION = OPTION_DEFAULT | WS_BORDER | ES_AUTOHSCROLL, COMBO_OPTION = OPTION_DEFAULT| CBS_DROPDOWNLIST, OK_OPTION = OPTION_DEFAULT | BS_PUSHBUTTON | BS_NOTIFY }; char ItemList[][8] = {"2 진법", "8 진법", "10 진법", "16 진법"}; enum { ITEM_LENGTH = 4, BI = 0, OCT, TEN, HEXA }; const char * const OK_TITLE = "변 환"; WindowSize inputSize = { 10, 10, 200, 25 }, fromSize = { 220, 10, 80, 100 }, toSize = { 300, 10, 80, 100 }, okSize = { 220, 40, 158, 25 }, outputSize = {5, 70, 373, 190 }; int i; switch(message) { case WM_CREATE: input = CreateWindow("edit", NULL, EDIT_OPTION, inputSize.x, inputSize.y, inputSize.width, inputSize.height, hwnd, (HMENU) ID_INPUT, mainInstance, NULL); from = CreateWindow("combobox", NULL, COMBO_OPTION, fromSize.x, fromSize.y, fromSize.width, fromSize.height, hwnd, (HMENU) ID_FROM, mainInstance, NULL); to = CreateWindow("combobox", NULL, COMBO_OPTION, toSize.x, toSize.y, toSize.width, toSize.height, hwnd, (HMENU) ID_TO, mainInstance, NULL); ok = CreateWindow("button", OK_TITLE, OK_OPTION, okSize.x, okSize.y, okSize.width, okSize.height, hwnd, (HMENU) ID_OK, mainInstance, NULL); output = CreateWindow("edit", NULL, EDIT_OPTION, outputSize.x, outputSize.y, outputSize.width, outputSize.height, hwnd, (HMENU) ID_OUTPUT, mainInstance, NULL); for(i = 0; i < ITEM_LENGTH; ++i) SendMessage(from, CB_ADDSTRING, 0, (LPARAM)ItemList[i]); SendMessage(from, CB_SETCURSEL, (WPARAM) TEN, 0); for(i = 0; i < ITEM_LENGTH; ++i) SendMessage(to, CB_ADDSTRING, 0, (LPARAM)ItemList[i]); SendMessage(to, CB_SETCURSEL, (WPARAM) HEXA, 0); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wparam, lparam); } void initialize(WNDCLASS& wndclass, HINSTANCE& instance, HWND &hwnd, int commandShow) { const LPSTR NAME = "상부상조"; enum { WIN_WIDTH = 390, WIN_HEIGHT= 300 }; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hInstance = instance; wndclass.lpfnWndProc = (WNDPROC) windowProcedure; wndclass.lpszClassName = NAME; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndclass); hwnd = CreateWindow(NAME, NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WIN_WIDTH, WIN_HEIGHT, NULL, (HMENU)NULL, instance, NULL); ShowWindow(hwnd, commandShow); }