//Copyright (C) 18 JUL 2004 Keisuke Kigawa All Right Reserved #include #include "btnwnd.h" #include "edtwnd.h" #include "lvwnd.h" #include "objid.h" //定数 #define MY_WNDCLASS "MYWNDCLASS" #define MY_CAPTION "金種計算" //グローバル変数 HINSTANCE g_hInst; HWND g_EdtWnd; HWND g_LvWnd; //関数のプロトタイプ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow) { MSG msg; WNDCLASSEX wc; HWND hWnd; g_hInst = hInst; //ウィンドウクラス登録 ZeroMemory(&wc, sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); wc.lpfnWndProc = (WNDPROC)WndProc; wc.hInstance = hInst; wc.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.lpszClassName = MY_WNDCLASS; RegisterClassEx(&wc); //ウィンドウ作成 hWnd = CreateWindowEx(0, MY_WNDCLASS, NULL, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 550, 365, NULL, NULL, hInst, NULL); //g_hWnd = hWnd; //ウィンドウ描画 ShowWindow(hWnd, nCmdShow); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { CBtnWnd bw; CEdtWnd ew; CLvWnd lw; switch (uMsg) { case WM_CREATE://親ウィンドウ作成 SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)MY_CAPTION);//ウィンドウタイトル //子ウィンドウ作成 bw.CrtBtnWnd(g_hInst, hWnd); ew.CrtEdtWnd(g_hInst, hWnd); lw.CrtLvWnd(g_hInst, hWnd); g_EdtWnd = ew.FhEdtWnd1;//エディトウィンドウ g_LvWnd = lw.FhLvWnd1;//リストビューウィンドウ //エディトウィンドウ初期化 ew.SetEdtTxt(); break; case WM_SIZE://親ウィンドウ移動 lw.FhLvWnd1 = g_LvWnd; lw.MovLvWnd(hWnd); break; case WM_COMMAND://コマンドボタン switch(wParam){ case ID_BUTTON1|(BN_CLICKED<<16)://入力 if (!bw.SetData(g_EdtWnd, g_LvWnd)) MessageBox(hWnd, "Error", "Calcuration", MB_ICONHAND|MB_OK); break; case ID_BUTTON2|(BN_CLICKED<<16)://閉じる //子ウィンドウ破棄 bw.DesBtnWnd(); ew.DesEdtWnd(); lw.DesLvWnd(); //ウィンドウ破棄 DestroyWindow(hWnd); break; case ID_BUTTON3|(BN_CLICKED<<16)://合計 if (!bw.SumData(g_LvWnd)) MessageBox(hWnd, "合計したいリストの先頭を選択してください。", "Calculation", MB_ICONHAND|MB_OK); break; default: break; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; }