#define ID_xxx 1000
HWND RadioPtr[2];
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
static LPCTSTR TEST_STR[2]={_T("文字1"),_T("文字2")};
switch (message)
{
case WM_CREATE:
// フォントの作成
hFont = CreateFont(18,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,TEXT("メイリオ"));
// ラジオボタンの作成
int lp;
for(lp=0;lp<2;lp++) {
RadioPtr[lp]=CreateWindow(_T("BUTTON"),TEST_STR[lp]),
BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,
10+(lp*80),10,80,24,hWnd,(HMENU)(ID_xxx+lp),
((LPCREATESTRUCT)(lParam))->hInstance,NULL);
// ラジオボタンのフォントを変更
SendMessage( RadioPtr[lp], WM_SETFONT, (WPARAM)hFont, 1);
}
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 選択されたメニューの解析:
switch (wmId)
{
case ID_xxx:
case ID_xxx+1:
//(ButtonNo+1)番目のボタンが押された
ButtonNo = wmId - ID_xxxx;
break;
}
break;
}
}
void Sample(void)
{
// チェックを付ける
SendMessage(RadioPtr[0], BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
// チェックを外す
SendMessage(RadioPtr[0], BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
// チェック状態を調べる
chk=SendMessage(RadioPtr[0],BM_GETCHECK,0,0); // 1:On 0:Off
}
[tips]
全て、WndProcで処理されます。
[DWORD dwStyleの説明]
WS_BORDER | 境界を使用するウィンドウを作成します。 |
WS_CAPTION | タイトル バーを持つウィンドウを作成します (WS_BORDER スタイルを意味します)。 WS_DLGFRAME スタイルでは使用できません。 |
WS_CHILD | 子ウィンドウを作成します。 WS_POPUP スタイルと一緒に使うことはできません。 |
WS_CHILDWINDOW | WS_CHILD スタイルと同じです。 |
WS_CLIPCHILDREN | 親ウィンドウ内に描画するときに、子ウィンドウにより占有されている領域を除外します。親ウィンドウを作成するときに使用します。 |
WS_CLIPSIBLINGS | 子ウィンドウを互いに重ならないようにクリップします。つまり、特定の子ウィンドウが描画メッセージを受け取ると、WS_CLIPSIBLINGS スタイルは、更新する子ウィンドウの領域の外にオーバーラップする他の子ウィンドウをクリックします (WS_CLIPSIBLINGS が指定され、子ウィンドウがオーバーラップしない場合、子ウィンドウのクライアント領域内で描画すると、隣接する子ウィンドウのクライアント領域内に描画することができます)。WS_CHILD スタイルを適用する場合のみ使用します。 |
WS_DISABLED | 最初に無効になるウィンドウを作成します。 |
WS_DLGFRAME | タイトルのない二重の境界線を持つウィンドウを作成します。 |
WS_GROUP | ユーザーが方向キーを使用してあるコントロールから次のコントロールに移動できるコントロール グループの最初のコントロールを指定します。最初のコントロールの後に WS_GROUP スタイル FALSE で定義されたすべてのコントロールは、同じグループに属しています。 WS_GROUP のスタイルが適用された次のコントロールは、次のグループを開始します (つまり、次のグループが開始する場所で前のグループが終了します)。 |
WS_HSCROLL | 水平スクロール バーを持つウィンドウを作成します。 |
WS_ICONIC | 最初に最小化されるウィンドウを作成します。 WS_MINIMIZE スタイルと同じです。 |
WS_MAXIMIZE | 最大サイズのウィンドウを作成します。 |
WS_MAXIMIZEBOX | [最大化] ボタンのあるウィンドウを作成します。 |
WS_MINIMIZE | 最初に最小化されるウィンドウを作成します。 WS_OVERLAPPED スタイルを適用する場合のみ使用します。 |
WS_MINIMIZEBOX | [最小化] ボタンのあるウィンドウを作成します。 |
WS_OVERLAPPED | オーバーラップ ウィンドウを作成します。オーバーラップ ウィンドウには、通常キャプションと境界線があります。 |
WS_OVERLAPPEDWINDOW | WS_OVERLAPPED、WS_CAPTION、WS_SYSMENU、WS_THICKFRAME、WS_MINIMIZEBOX、WS_MAXIMIZEBOX の各スタイルが適用されたオーバーラップするウィンドウを作成します。 |
WS_POPUP | ポップアップ ウィンドウを作成します。 WS_CHILD スタイルでは使用できません。 |
WS_POPUPWINDOW | WS_BORDER、WS_POPUP、WS_SYSMENU の各スタイルが適用されたポップアップ ウィンドウを作成します。コントロール メニューを表示するには、WS_CAPTION スタイルと WS_POPUPWINDOW スタイルを組み合わせて使用する必要があります。 |
WS_SIZEBOX | サイズ変更境界を使用するウィンドウを作成します。 WS_THICKFRAME スタイルと同じです。 |
WS_SYSMENU | タイトル バーにコントロール メニュー ボックスのあるウィンドウを作成します。タイトル バーのあるウィンドウで使用します。 |
WS_TABSTOP | ユーザーが Tab キーを使用して移動できる多数のコントロールのうち 1 つを指定します。Tab キーは、WS_TABSTOP スタイルで指定された次のコントロールにユーザーを移動します。 |
WS_THICKFRAME | ウィンドウのサイズ変更用のフレームのあるウィンドウを作成します。 |
WS_TILED | オーバーラップ ウィンドウを作成します。オーバーラップ ウィンドウには、タイトル バーと境界線があります。 WS_OVERLAPPED スタイルと同じです。 |
WS_TILEDWINDOW | WS_OVERLAPPED、WS_CAPTION、WS_SYSMENU、WS_THICKFRAME、WS_MINIMIZEBOX、WS_MAXIMIZEBOX の各スタイルのオーバーラップ ウィンドウを作成します。 WS_OVERLAPPEDWINDOW スタイルと同じです。 |
WS_VISIBLE | 最初に表示されるウィンドウを作成します。 |
WS_VSCROLL | 垂直スクロール バーを持つウィンドウを作成します。 |
|