c++
1#include<windows.h>2#include<tchar.h>3 4 5#define STRLEN 2566#define ID_Men 117#define ID_Lady 128 9LRESULT CALLBACK windowfunc(HWND, UINT, WPARAM, LPARAM);10 11HWND CreateParentWindow(HWND, HINSTANCE, int, const TCHAR szWinName[], const int, const int);12 13static const TCHAR szWinName[] = _T("key");14HINSTANCE hInst;15HFONT hFont, hFont1;16 17HWND hGroupX, radioMen, radioLady;18 19BOOL RadioFunc(HWND, LPARAM);20 21const HBRUSH BackGround_clear = CreateSolidBrush(RGB(242, 252, 245));22const COLORREF TextBackground = RGB(242, 252, 245);23 24RECT Winsize = { 0,0,1000,750 };25 26long i;27 28//WinMain関数29int WINAPI WinMain(_In_ HINSTANCE hThisInst, _In_opt_ HINSTANCE hPrevInst, _In_ LPSTR lpszArgs, _In_ int nWinMode)30{31 HWND hwnd=NULL;32 MSG msg;33 34 // メインウィンドウの作成35 CreateParentWindow(hwnd, hThisInst, nWinMode, szWinName, Winsize.right - Winsize.left, Winsize.bottom - Winsize.top);36 37 38 //インスタンスハンドルの保存39 hInst = hThisInst;40 41 //キーボードアクセラレータのロード42 //haccel = LoadAccelerators(hThisInst, MAKEINTRESOURCE(IDR_ACCELERATOR1));43 44 //メッセージループの生成45 while (GetMessage(&msg, NULL, 0, 0)) {46 TranslateMessage(&msg);47 DispatchMessage(&msg);48 }49 50 return((int)msg.wParam);51}52 53LRESULT CALLBACK windowfunc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)54{55 56 switch (msg){57 case WM_CREATE:58 RadioFunc(hwnd, lparam);59 break;60 61 case WM_COMMAND:62 switch (LOWORD(wparam)){63 case ID_Men:64 if (BST_CHECKED == SendMessage(radioMen, BM_GETCHECK, 0, 0)) {65 MessageBox(hwnd, _T("男が押されました。"), _T("Message Box"), MB_OK);66 }67 break;68 case ID_Lady:69 if (BST_CHECKED == SendMessage(radioLady, BM_GETCHECK, 0, 0)) {70 MessageBox(hwnd, _T("女が押されました。"), _T("Message Box"), MB_OK);71 }72 break;73 default:74 break;75 }76 break;77 case WM_DESTROY:78 PostQuitMessage(0);79 break;80 81 default:82 return (DefWindowProc(hwnd, msg, wparam, lparam));83 84 }85 86}87// 親ウィンドウ作成88HWND CreateParentWindow(HWND hwnd, HINSTANCE hThisInst, int nWinMode, const TCHAR szWinName[], const int nWidth, const int nHeight)89{90 WNDCLASSEX wcl;91 92 //ウィンドウクラスの定義93 wcl.cbSize = sizeof(WNDCLASSEX); //WNDCLASSEX構造体のサイズ94 wcl.style = 0; //ウィンドウクラススタイル95 wcl.lpfnWndProc = windowfunc; //ウィンドウ関数96 wcl.cbClsExtra = 0; //ウィンドウクラスのエキストラ97 wcl.cbWndExtra = 0; //ウィンドウインスタンスのエキストラ98 wcl.hInstance = hThisInst; //このプログラムのインスタンスへのハンドル99 wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION); //アイコンへのハンドル100 wcl.hCursor = LoadCursor(NULL, IDC_ARROW); //カーソルへのハンドル101 wcl.hbrBackground = BackGround_clear; //(HBRUSH)COLOR_WINDOW背景ブラシへのハンドル102 wcl.lpszMenuName = NULL; //メニュー103 wcl.lpszClassName = szWinName; //ウィンドウクラス名104 wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO); //スモールアイコンへのハンドル105 106 //ウィンドウクラスの登録107 if (!RegisterClassEx(&wcl)) {108 return(0);109 }110 111 //ウィンドウの生成112 hwnd = CreateWindow(113 szWinName, //ウィンドウクラス名114 szWinName, //ウィンドウ名115 WS_OVERLAPPEDWINDOW, //ウィンドウスタイル116 CW_USEDEFAULT, //x座標117 CW_USEDEFAULT, //y座標118 nWidth, //幅119 nHeight, //高さ120 HWND_DESKTOP, //親ウィンドウへのハンドル121 NULL, //メニューへのハンドル122 hThisInst, //このプログラムのインスタンスへのハンドル123 NULL //追加引数124 );125 126 //ウィンドウの表示127 ShowWindow(hwnd, nWinMode);128 UpdateWindow(hwnd);129 130 return hwnd;131}132 133BOOL RadioFunc(HWND hwnd, LPARAM lparam) {134 135 hGroupX = CreateWindow(136 _T("BUTTON"),137 _T("性別"),138 WS_CHILD | WS_VISIBLE | BS_GROUPBOX,139 0, 0, 200, 100,140 hwnd,141 NULL,142 ((LPCREATESTRUCT)(lparam))->hInstance,143 NULL144 );145 146 radioMen = CreateWindow(147 _T("BUTTON"),148 _T("男性"),149 WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,150 10, 30, 150, 30,151 hGroupX,152 (HMENU)ID_Men,153 ((LPCREATESTRUCT)(lparam))->hInstance,154 NULL155 );156 157 radioLady = CreateWindow(158 _T("BUTTON"),159 _T("女性"),160 WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,161 10, 60, 150, 30,162 hGroupX,163 (HMENU)ID_Lady,164 ((LPCREATESTRUCT)(lparam))->hInstance,165 NULL166 );167 168 //フォントの作成169 hFont = CreateFont(170 25, 0, 0, 0,171 FW_MEDIUM,172 FALSE, FALSE, FALSE,173 SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,174 CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,175 (VARIABLE_PITCH | FF_DONTCARE), _T("メイリオ"));176 177 178 hFont1 = CreateFont(179 30, 0, 0, 0,180 FW_MEDIUM,181 FALSE, FALSE, FALSE,182 SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,183 CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,184 (VARIABLE_PITCH | FF_DONTCARE), _T("メイリオ"));185 186 SendMessage(radioMen, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(FALSE, 0));187 SendMessage(radioLady, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(FALSE, 0));188 SendMessage(hGroupX, WM_SETFONT, (WPARAM)hFont1, MAKELPARAM(FALSE, 0));189 190 return true;191}192

0 コメント