最終更新日 2024-09-25
チュートリアル⑥ 候補が1つなら…
概要
さて、チュートリアル⑤のソースにさらに1つ加えることで、完成させましょう。
最後に1つ加える内容とは、
- リストの候補がすでに「1つだけ」なら、まだその単語候補を選んでいなくても、
(1つしかないわけですから)対応する詳細メッセージを出せそうなら出す
というものです。
リスト候補が1つなら、詳細が出せそうなら表示してしまう
チュートリアル④やチュートリアル⑤のソースに対して、以下を加えるだけで、
選択肢が1つの時は、「詳細が出せそうなら出す」といった形へと辻褄を合わせることができることでしょう。
struct AUTOCOMPLETELIST {
LPTSTR wstring_ptr_list[1000]; // やり取りするのは1000個まで
size_t list_size;
};
extern "C" __declspec(dllexport) AUTOCOMPLETELIST* OnQueryListBoxCustomAdded(HWND hWnd, AUTOCOMPLETELIST *pAutoCompleteOriginalList) {
// リストサイズが1の時
if (pAutoCompleteOriginalList->list_size == 1) {
int ix = 0;
int iItemHeight = SendMessage(hWnd, LB_GETITEMHEIGHT, ix, 0); // 最初の項目のアイテムの高さ
String^ strItemText = gcnew String(pAutoCompleteOriginalList->wstring_ptr_list[ix]); // 最初の項目のテキスト
ACHelpForm::f->Update(hWnd, ix, strItemText, iItemHeight);
}
return NULL;
}
たったこれだけの追記で、下図のように「アイテムを選択していなくても、説明文が表示される」ようになります。
