【C++/Win32】Windowsフォームのコントロールの操作方法について

この記事は約4分で読めます。

今更感満載ですがリファレンスを見るのが面倒なので各コントロール使い方のまとめです。引数の hWnd は各コントロールのウィンドウハンドルを設定します。随時更新予定です。

コンボボックス

リストに表示されるアイテムの最小数を設定する

デフォルトの最小値は30です。

/// <summary>
/// コンボボックスのリストに表示されるアイテムの最小数を設定します。
/// </summary>
static inline bool ComboBoxSetMinVisible(HWND hWnd, int minVisible) {
    return SendMessage(hWnd, CB_SETMINVISIBLE, WPARAM(minVisible), 0);
}

選択した文字列を取得する

戻り値は文字列の長さを返します。

/// <summary>
/// コンボボックスのテキストを取得します。
/// </summary>
static inline LRESULT ComboBoxGetText(HWND hWnd, std::wstring& text) {
    size_t bufferSize = ::GetWindowTextLength(hWnd) + 1;
    auto buffer = std::make_unique(bufferSize);
    GetWindowText(hWnd, &buffer[0], bufferSize);
    text = &buffer[0];
    return text.length();
}

リストに挿入する

index は文字列を挿入するゼロから始まるインデックス。-1 の場合、文字列はリストの最後に追加する。エラーが発生した場合、戻り値はCB_ERR(-1)。新しい文字列を格納するための十分なスペースがない場合、戻り値はCB_ERRSPACE(-2)。

/// <summary>
/// コンボボックスのリストに挿入します。
/// </summary>
static inline LRESULT ComboBoxInsertString(HWND hWnd, int index, std::wstring& text) {
    return SendMessage(hWnd, CB_INSERTSTRING, index, LPARAM(text.c_str()));
}

リストボックス

文字列を追加する

エラーが発生した場合、戻り値はLB_ERR(-1)。新しい文字列を格納するための十分なスペースがない場合、戻り値はLB_ERRSPACE(-2)。

/// <summary>
/// リストボックスに文字列を追加します。
/// </summary>
static inline LRESULT ListBoxAddString(HWND hWnd, const std::wstring& text) {
    return SendMessage(hWnd, LB_ADDSTRING, 0, LPARAM(text.c_str()));
}

チェックボックス

チェック状態を取得する

/// <summary>
/// チェックボックスのチェック状態を取得します。
/// </summary>
static inline LRESULT CheckBoxGetCheck(HWND hWnd) {
    return SendMessage(hWnd, BM_GETCHECK, 0, 0);
}

チェック状態を設定する

戻り値は常にゼロを返す。

/// <summary>
/// チェックボックスのチェック状態を設定します。
/// </summary>
static inline LRESULT CheckBoxSetCheck(HWND hWnd,int check) {
    return SendMessage(hWnd, BM_SETCHECK, (WPARAM)check, 0);
}

コメント

タイトルとURLをコピーしました