概要

ウィンドウを検索しウィンドウハンドルを取得する方法を説明します。
実行例を示すために下図のダイアログを作成しその後、OKボタンを押すと各種の方法でウィンドウハンドルを取得するプログラムを作成しました。
基本は、タブコントロールで説明しているプログラムにOKボタンを押した後にウィンドウハンドルを取得し保存する記述を追加しております。
ウィンドウハンドルだけではウィンドウの判別がしにくいので、GetWindowTextでウィンドウタイトル、GetClassNameでウィンドウクラス名を取得します。
取得した結果は、各API名のテキストファイルに保存されます。

上図の各ウィンドウの親子関係は以下の通りです。
""に囲まれた最初の文字列がウィンドウタイトル、次の文字列がウィンドウクラス名です。
メインダイアログ
├"" "SysTabControl32"
│  ├ "山田太郎" "Static"
│  ├ "男"       "Static"
│  ├ "子供"     "Static"
│  ├ "OK"       "Button"
│  └ "キャンセル"    "Button"
│
├"" "#32770"
│  └ "山田太郎" "Edit"
│
└"" "#32770"
    ├ "性別"    "Button"
    ├ "男"      "Button"
    ├ "女"      "Button"
    ├ "料金"    "Button"
    ├ "子供"    "Button"
    └ "大人"    "Button"

GetWindow API

コールバック関数を用いないので使いやすい関数です。
指定したウィンドウに対して兄弟関係のウィンドウや子ウィンドウを検索することができます。
孫ウィンドウを検索する場合は、子ウィンドウを検索後さらにその子ウィンドウである孫ウィンドウを検索する必要があります。
子ウィンドウの一覧を取得する方法の例を以下に示します。最初にhWndの子ウィンドウを検索し、以後その兄弟ウィンドウを検索する例です。 whlieステートメントの中のhChildが検索されたウィンドウハンドルとなります。
HWND hChild = GetWindow(hWnd, GW_CHILD);
while (hChild){
        hChild = GetWindow(hChild, GW_HWNDNEXT);
}
孫ウィンドウも含めて全部検索する場合は以下のように再帰的に関数を呼び出します。
whlieステートメントの中のhChildが検索されたウィンドウハンドルとなります。
void SerachWindow(HWND hWnd){
        HWND hChild = GetWindow(hWnd, GW_CHILD);
        while (hChild){
                SearchWindow(hChild);
                hChild = GetWindow(hChild, GW_HWNDNEXT);
        }
}

EnumWindow API

親ウィンドウが存在しないウィンドウを検索します。
ウィンドウが見つかるたびにコールバック関数が呼び出されます。
コールバック関数はEnumChildWindowと同じものが使用できます。
以下に記述例を示します。EnumWndProc関数のhWndが取得されたウィンドウハンドルです。
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam){
        return true;
}
EnumWindows(EnumWndProc, (LPARAM)0);

EnumChildWindow API

子ウィンドウ及び孫ウィンドウすべてが検索対象となります。
ウィンドウが見つかるたびにコールバック関数が呼び出されます。
コールバック関数はEnumWindowと同じものが使用できます。
以下に記述例を示します。EnumWndProc関数のhWndが取得されたウィンドウハンドルです。
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam){
        return true;
}

EnumChildWindows(hWnd, EnumWndProc, (LPARAM)0);

FindWindow API

トップレベルのウィンドウをクラス名またはクラス名かつウィンドウ名で検索します。
HWND hWnd = FindWindow(_TEXT("SystemTray_Main"),NULL);

FindWindowEx API

子ウィンドウをウィンドウをクラス名またはクラス名かつウィンドウ名で検索します。
以下の例は前項のメインダイアログの子ウィンドウのうちクラス名がButtonのウィンドウを検索する例です。
HWND hWnd = 0;
while (hWnd = FindWindowEx(hDlg, hWnd, _TEXT("Button"), NULL)){
        TCHAR title[128];
        TCHAR className[128];
        GetWindowText(hWnd, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得して、
        GetClassName(hWnd, className, sizeof(className) / sizeof(TCHAR));
        _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x\n"), title, className, (DWORD)hWnd);
}

WindowFromPoint API

スクリーン座標からウィンドウのハンドルを取得する関数です。
別途説明したいと思います。

テスト環境

コンパイラ

Visual C++ 2008 Standard 32/64bit
Visual C++ 2013 Express 32/64bit

実行環境

Windows 8.1 Enterprise 64bit
Windows 7 EnterPrise Service Pack 1 64bit
Windows Vista Ultimate Service Pack 2 32bit
Windows XP Professional Service Pack 3 32bit

プログラムソースの概要

基本は、タブコントロールで説明しているプログラムにOKボタンを押した後にウィンドウハンドルを取得し保存する記述を追加しております。
ここでは追加部分のみ記載します。

DlgProc1

case WM_COMMAND:

case IDOK:
ウィンドウハンドルを取得するために以下の関数を実行します。
GetWindow2Save(hDlg);
GetWindows2Save(hDlg);
EnumChildWindow2Save(hDlg);
EnumWindow2Save();
FindWindow2Save();
FindWindowEx2Save(hDlg);

GetWindow2Save

GetWindow APIを使用してダイアログの子ウィンドウを検索し、 ウィンドウのタイトル・クラス名・子ウィンドウハンドル値(16進数)・親ウィンドウハンドル値(16進数)を ファイルGetWindow.txtに出力します。子ウィンドウの子ウィンドウは検索対象ではありません。
以下に64bitでコンパイルした場合の実行し出力されたファイルの例を示します。
"" "SysTabControl32" 000000000004077e 00000000000a0782
"山田太郎" "Static" 0000000000060796 00000000000a0782
"男" "Static" 0000000000060792 00000000000a0782
"子供" "Static" 000000000005078e 00000000000a0782
"OK" "Button" 000000000004077a 00000000000a0782
"キャンセル" "Button" 00000000000207a0 00000000000a0782
"" "#32770" 000000000002079c 00000000000a0782
"" "#32770" 0000000000040786 00000000000a0782

GetWindows2Save

GetWindow APIを使用してダイアログの子ウィンドウ及びその子ウィンドウを再帰的に検索し、 ウィンドウのタイトル・クラス名・子ウィンドウハンドル値(16進数)・親ウィンドウハンドル値(16進数) をファイルGetWindows.txtに出力します。
ウィンドウが子ウィンドウの場合、タブで字下げして出力します。
以下に64bitでコンパイルした場合の実行し出力されたファイルの例を示します。
"" "SysTabControl32" 000000000004077e 00000000000a0782
"山田太郎" "Static" 0000000000060796 00000000000a0782
"男" "Static" 0000000000060792 00000000000a0782
"子供" "Static" 000000000005078e 00000000000a0782
"OK" "Button" 000000000004077a 00000000000a0782
"キャンセル" "Button" 00000000000207a0 00000000000a0782
"" "#32770" 000000000002079c 00000000000a0782
        "山田太郎" "Edit" 0000000000060794 000000000002079c
"" "#32770" 0000000000040786 00000000000a0782
        "性別" "Button" 000000000004078a 0000000000040786
        "男" "Button" 000000000023059e 0000000000040786
        "女" "Button" 0000000000030780 0000000000040786
        "料金" "Button" 00000000000a0700 0000000000040786
        "子供" "Button" 0000000000060734 0000000000040786
        "大人" "Button" 00000000000907ae 0000000000040786

EnumChildWindow2Save

EnumChildWindow APIを使用してダイアログの子ウィンドウを検索し、 ウィンドウのタイトル・クラス名・子ウィンドウハンドル値(16進数)を ファイルEnumChildWindow.txtに出力します。
以下に64bitでコンパイルした場合の実行し出力されたファイルの例を示します。
"" "SysTabControl32" 000000000004077e
"山田太郎" "Static" 0000000000060796
"男" "Static" 0000000000060792
"子供" "Static" 000000000005078e
"OK" "Button" 000000000004077a
"キャンセル" "Button" 00000000000207a0
"" "#32770" 000000000002079c
"山田太郎" "Edit" 0000000000060794
"" "#32770" 0000000000040786
"性別" "Button" 000000000004078a
"男" "Button" 000000000023059e
"女" "Button" 0000000000030780
"料金" "Button" 00000000000a0700
"子供" "Button" 0000000000060734
"大人" "Button" 00000000000907ae

EnumWindow2Save

EnumWindow APIを使用してトップレベルのウィンドウ(親ウィンドウをもたないウィンドウ)のうちクラス名をSystemTray_Mainのウィンドウを検索し、 ウィンドウのタイトル・クラス名・ウィンドウハンドル値(16進数)を ファイルFindWindow.txtに出力します。
以下に64bitでコンパイルした場合の実行し出力されたファイルの例を抜粋して示します。
"タスクの切り替え" "TaskSwitcherWnd" 0000000000020372
"Program Manager" "Progman" 0000000000010154
"MSCTFIME UI" "MSCTFIME UI" 00000000000200be

FindWindowEx2Save

FindWindowEx APIを使用してダイアログの子ウィンドウのうちクラス名Buttonのウィンドウを検索し、 ウィンドウのタイトル・クラス名・子ウィンドウハンドル値(16進数)を ファイルFindWindowEx.txtに出力します。
以下に64bitでコンパイルした場合の実行し出力されたファイルの例を示します
"OK" "Button" 000000000004077a
"キャンセル" "Button" 00000000000207a0

プログラムソース

gethwnd.cpp

//       タブコントロール+ウィンドウハンドルの取得
//      Visual C++ 2013 32/64bit

#include <windows.h>
#include <commctrl.h> 
#include <stdio.h>
#include <tchar.h>
#include "resource.h"

#define GET_WIN 1       //      tabctl.cppに追加

#ifdef GET_WIN  //      tabctl.cppに追加
void GetWindows2Save(HWND hWnd, int level = 0);
void GetWindow2Save(HWND hWnd);
void EnumWindow2Save(void);
void EnumChildWindow2Save(HWND hWnd);
void FindWindow2Save(void);
void FindWindowEx2Save(HWND hParent);
#endif

//      ダイアログボックスプロシージャー
LRESULT CALLBACK DlgProc1(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
//      タブコントロールの0ページ目
LRESULT CALLBACK Page0Proc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
//      タブコントロールの1ページ目
LRESULT CALLBACK Page1Proc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);

HINSTANCE hInst;

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                   TCHAR* lpszCmdLine, int nCmdShow){
        ::hInst = hInstance;

        DialogBox(hInstance, TEXT("TAB_DLG"), 0, (DLGPROC)DlgProc1);
    return (int)0;
}

//      ダイアログボックスプロシージャー

LRESULT CALLBACK DlgProc1(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
        static HWND hTab;
        static HWND hPage0;
        static HWND hPage1;
        RECT rc;
        TCITEM tc_item;
    switch (msg) {
        case WM_INITDIALOG:
                        hTab = GetDlgItem(hDlg, IDC_TABCNTRL);
                        tc_item.mask = TCIF_TEXT;
                        tc_item.pszText = _TEXT("名前");
                        TabCtrl_InsertItem(hTab, 0, &tc_item);

                        tc_item.pszText = TEXT("属性");
                        TabCtrl_InsertItem(hTab, 1, &tc_item);
                        hPage0 = CreateDialog(::hInst, _TEXT("DLG1"), hDlg, (DLGPROC)Page0Proc);
                        hPage1 = CreateDialog(::hInst, _TEXT("DLG2"), hDlg, (DLGPROC)Page1Proc);
                        ShowWindow(hPage0, SW_SHOW);
                        ShowWindow(hPage1, SW_HIDE);
                        GetClientRect(hDlg, &rc);
                        SendMessage(hDlg, WM_SIZE, 0, MAKELPARAM(rc.right, rc.bottom));
                        return TRUE;
                case WM_SIZE:{
                        POINT dlg_pt;
                        POINT tab_pt;
                        dlg_pt.x = dlg_pt.y = 0;
                        ClientToScreen(hDlg, &dlg_pt);
                        tab_pt.x = tab_pt.y = 0;
                        ClientToScreen(hTab, &tab_pt);

                        GetClientRect(hTab, &rc);
                        TabCtrl_AdjustRect(hTab, FALSE, &rc);

                        int dx = tab_pt.x - dlg_pt.x;
                        int dy = tab_pt.y - dlg_pt.y;
                        MoveWindow(hPage0, rc.left+dx, rc.top+dy, rc.right - rc.left, rc.bottom - rc.top , TRUE);
                        MoveWindow(hPage1, rc.left+dx, rc.top+dy, rc.right - rc.left, rc.bottom - rc.top, TRUE);
                        break;
                }
                case WM_NOTIFY:
                        switch (((NMHDR *)lParam)->code){
                                case TCN_SELCHANGE:{    //      タブの切り替え
                                        int num=TabCtrl_GetCurSel(hTab);
                                        if (num == 0){
                                                ShowWindow(hPage0, SW_SHOW);
                                                ShowWindow(hPage1, SW_HIDE);
                                        }
                                        else{
                                                ShowWindow(hPage0, SW_HIDE);
                                                ShowWindow(hPage1, SW_SHOW);
                                        }
                                        break;
                                }
                        }
                        return FALSE;
                case WM_COMMAND:
            switch (LOWORD(wParam)) {
                                case IDOK:{
#ifdef GET_WIN  //      tabctl.cppに追加
                                        GetWindow2Save(hDlg);
                                        GetWindows2Save(hDlg);
                                        EnumChildWindow2Save(hDlg);
                                        EnumWindow2Save();
                                        FindWindow2Save();
                                        FindWindowEx2Save(hDlg);
#endif
                                        EndDialog(hDlg, TRUE);
                                        return TRUE;
                                }
                                case IDCANCEL:
                                        EndDialog(hDlg,FALSE);
                                        return FALSE;
                                default:
                                        return FALSE;
                        }
                        default:
                                return FALSE;
        }
        return TRUE;
}

//      タブコントロールの0ページ目

LRESULT CALLBACK Page0Proc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
        TCHAR buf[32];
        switch (msg) {
        case WM_INITDIALOG:
                SetWindowText(GetDlgItem(hDlg, IDC_EDIT1), _TEXT("山田太郎"));
                return TRUE;
        case WM_COMMAND:
                switch (LOWORD(wParam)) {
                case IDC_EDIT1:
                        if (HIWORD(wParam) == EN_UPDATE){       //      エディットボックスが変更された場合
                                GetDlgItemText(hDlg, IDC_EDIT1, (TCHAR*)buf, sizeof(buf) / sizeof(TCHAR));
                                SetWindowText(GetDlgItem(GetParent(hDlg), IDC_LABEL1), buf);
                        }
                        break;
                default:
                        return FALSE;
                }
        default:
                return FALSE;
        }
        return TRUE;
}

//      タブコントロールの1ページ目

LRESULT CALLBACK Page1Proc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
        switch (msg) {
        case WM_INITDIALOG:
                SendMessage(GetDlgItem(hDlg, IDC_RADIOBUTTON101), BM_SETCHECK, BST_CHECKED, 0);
                SendMessage(GetDlgItem(hDlg, IDC_RADIOBUTTON111), BM_SETCHECK, BST_CHECKED, 0);
                return TRUE;
        case WM_COMMAND:
                switch (LOWORD(wParam)) {
                case IDC_RADIOBUTTON101:
                        if (HIWORD(wParam) == BN_CLICKED){
                                SetWindowText(GetDlgItem(GetParent(hDlg), IDC_LABEL103), _TEXT("男"));
                        }
                        return FALSE;
                case IDC_RADIOBUTTON102:
                        if (HIWORD(wParam) == BN_CLICKED){
                                SetWindowText(GetDlgItem(GetParent(hDlg), IDC_LABEL103), _TEXT("女"));
                        }
                        return FALSE;
                case IDC_RADIOBUTTON111:
                        if (HIWORD(wParam) == BN_CLICKED){
                                SetWindowText(GetDlgItem(GetParent(hDlg), IDC_LABEL113), _TEXT("子供"));
                        }
                        return FALSE;
                case IDC_RADIOBUTTON112:
                        if (HIWORD(wParam) == BN_CLICKED){
                                SetWindowText(GetDlgItem(GetParent(hDlg), IDC_LABEL113), _TEXT("大人"));
                        }
                        return FALSE;

                default:
                        return FALSE;
                }
        default:
                return FALSE;
        }
        return TRUE;
}

#ifdef GET_WIN  //      tabctl.cppに追加

void GetWindow2Save(HWND hWnd){
        FILE* fp;
        _tfopen_s(&fp, _TEXT("GetWindow.txt"), _TEXT("w"));
        HWND hChild = GetWindow(hWnd, GW_CHILD);
        while (hChild){
                TCHAR title[128];
                TCHAR className[128];
                GetWindowText(hChild, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得
                GetClassName(hChild, className, sizeof(className) / sizeof(TCHAR));
#ifdef _WIN64
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.16I64x %0.16I64x\n"), title, className, (UINT64)hChild, (UINT64)hWnd);
#else
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x %0.8x\n"), title, className, (DWORD)hChild, (DWORD)hWnd);
#endif
                hChild = GetWindow(hChild, GW_HWNDNEXT);
        }
        fclose(fp);
}

void GetWindows2Save(HWND hWnd, int level){
        static FILE* fp = 0;
        if (level == 0){
                _tfopen_s(&fp, _TEXT("GetWindows.txt"), _TEXT("w"));
        }
        HWND hChild = GetWindow(hWnd, GW_CHILD);
        while (hChild){
                TCHAR title[128];
                TCHAR className[128];
                GetWindowText(hChild, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得
                GetClassName(hChild, className, sizeof(className) / sizeof(TCHAR));
                for (int n = 0; n<level; n++){
                        _ftprintf(fp, _TEXT("\t"));
                }
#ifdef _WIN64
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.16I64x %0.16I64x\n"), title, className, (UINT64)hChild, (UINT64)hWnd);
#else
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x %0.8x\n"), title, className, (DWORD)hChild, (DWORD)hWnd);
#endif
                GetWindows2Save(hChild, level + 1);
                hChild = GetWindow(hChild, GW_HWNDNEXT);
        }
        if (level == 0){
                fclose(fp);
        }
}

BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam){
        FILE* fp = (FILE*)lParam;
        TCHAR title[128];
        TCHAR className[128];
        GetWindowText(hWnd, title, sizeof(title) / sizeof(TCHAR));
        GetClassName(hWnd, className, sizeof(className) / sizeof(TCHAR));
#ifdef _WIN64
        _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.16I64x\n"), title, className, (UINT64)hWnd);
#else
        _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x\n"), title, className, (DWORD)hWnd);
#endif
        return true;
}

void EnumChildWindow2Save(HWND hWnd){
        FILE* fp;
        _tfopen_s(&fp, _TEXT("EnumChildWindow.txt"), _TEXT("w"));
        EnumChildWindows(hWnd, EnumWndProc, (LPARAM)fp);
        fclose(fp);
}

void EnumWindow2Save(void){
        FILE* fp;
        _tfopen_s(&fp, _TEXT("EnumWindow.txt"), _TEXT("w"));
        EnumWindows(EnumWndProc, (LPARAM)fp);
        fclose(fp);
}

void FindWindow2Save(void){
        FILE* fp;
        _tfopen_s(&fp, _TEXT("FindWindow.txt"), _TEXT("w"));
        {
                HWND hWnd = FindWindow(_TEXT("SystemTray_Main"), NULL);
                TCHAR title[128];
                TCHAR className[128];
                GetWindowText(hWnd, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得
                GetClassName(hWnd, className, sizeof(className) / sizeof(TCHAR));
#ifdef _WIN64
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.16I64x\n"), title, className, (UINT64)hWnd);
#else
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x\n"), title, className, (DWORD)hWnd);
#endif
        }
        fclose(fp);
}

void FindWindowEx2Save(HWND hParent){
        FILE* fp;

        _tfopen_s(&fp, _TEXT("FindWindowEx.txt"), _TEXT("w"));
        HWND hWnd = 0;
        while (hWnd = FindWindowEx(hParent, hWnd, _TEXT("Button"), NULL)){
                TCHAR title[128];
                TCHAR className[128];
                GetWindowText(hWnd, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得
                GetClassName(hWnd, className, sizeof(className) / sizeof(TCHAR));
#ifdef _WIN64
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.16I64x\n"), title, className, (UINT64)hWnd);
#else
                _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x\n"), title, className, (DWORD)hWnd);
#endif
        }
        fclose(fp);
}

#endif

resource.h

#define IDC_TABCNTRL 300

#define IDC_EDIT1       200
#define IDC_LABEL1      210

#define IDC_GROUPBOX100         100
#define IDC_RADIOBUTTON101      101
#define IDC_RADIOBUTTON102      102
#define IDC_LABEL103            103

#define IDC_GROUPBOX110         110
#define IDC_RADIOBUTTON111      111
#define IDC_RADIOBUTTON112      112
#define IDC_LABEL113            113

resource.rc

#include <windows.h>
#include "resource.h"

TAB_DLG DIALOG DISCARDABLE 0, 0, 205, 185
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SETFONT
CAPTION "タブコントロール+ウィンドウハンドルの取得"
FONT 9,  "MS Shell Dlg"
{
        CONTROL "", IDC_TABCNTRL, "SYSTABCONTROL32", WS_CHILD | WS_VISIBLE | TCS_SINGLELINE | TCS_TABS, 7, 7, 120, 120

        CONTROL "" , IDC_LABEL1  ,"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY,134,7,64,14
        CONTROL "男", IDC_LABEL103, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 134, 27, 64, 14
        CONTROL "子供", IDC_LABEL113, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 134, 48, 64, 14

        DEFPUSHBUTTON  "OK", IDOK, 9, 154, 50, 14
        PUSHBUTTON  "キャンセル", IDCANCEL, 70, 154, 50, 14

}

DLG1 DIALOG DISCARDABLE  0, 0, 121, 76
STYLE WS_BORDER | WS_CHILD
FONT 9, "MS Shell Dlg"
{
        EDITTEXT        IDC_EDIT1, 7, 13, 104, 14, ES_AUTOHSCROLL
}

DLG2 DIALOG DISCARDABLE 0, 0, 129, 147
STYLE  WS_BORDER | WS_CHILD
FONT 9, "MS Shell Dlg"
{
        CONTROL "性別", IDC_GROUPBOX100, "BUTTON", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 7, 7, 85, 35
        CONTROL "男", IDC_RADIOBUTTON101, "BUTTON", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP, 14, 21, 32, 14
        CONTROL "女", IDC_RADIOBUTTON102, "BUTTON", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 53, 21, 32, 14

        CONTROL "料金", IDC_GROUPBOX110, "BUTTON", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 7, 56, 85, 35
        CONTROL "子供", IDC_RADIOBUTTON111, "BUTTON", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP, 14, 70, 32, 14
        CONTROL "大人", IDC_RADIOBUTTON112, "BUTTON", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 53, 70, 32, 14
}

ソースファイルと実行ファイルのダウンロード

ダウンロード gethwnd.zip(48.7kByte)

ZIPファイルに含まれるファイル
gethwnd.exe
gethwnd.cpp
resource.h
resource.rc