diff --git a/sakura_core/dlg/CDialog.cpp b/sakura_core/dlg/CDialog.cpp index 05510a80aa..ee7ac7fa69 100644 --- a/sakura_core/dlg/CDialog.cpp +++ b/sakura_core/dlg/CDialog.cpp @@ -808,12 +808,10 @@ LRESULT CALLBACK SubEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, void CDialog::SetComboBoxDeleter(HWND hwndCtl, CRecent* pRecent) { - assert(pRecent); - assert((::GetWindowLongPtr(hwndCtl, GWL_STYLE) & 0b11) != CBS_DROPDOWNLIST); - + if (!pRecent || (::GetWindowLongPtr(hwndCtl, GWL_STYLE) & 0b11) == CBS_DROPDOWNLIST) + return; COMBOBOXINFO info = { sizeof(COMBOBOXINFO) }; if (!::GetComboBoxInfo(hwndCtl, &info)) return; - assert(info.hwndCombo != info.hwndItem); ::SetWindowSubclass(info.hwndItem, SubEditProc, 0, (DWORD_PTR)pRecent); } diff --git a/sakura_core/dlg/CDialog.h b/sakura_core/dlg/CDialog.h index 54df51a35d..a81d8fddbc 100644 --- a/sakura_core/dlg/CDialog.h +++ b/sakura_core/dlg/CDialog.h @@ -115,6 +115,11 @@ class CDialog void ResizeItem( HWND hTarget, const POINT& ptDlgDefalut, const POINT& ptDlgNew, const RECT& rcItemDefault, EAnchorStyle anchor, bool bUpdate = true); void GetItemClientRect( int wID, RECT& rc ); + + //! @brief コンボボックスに履歴削除・単語削除の機能を追加する + //! + //! @param hwndCtl コンボボックスのハンドル。CBS_DROPDOWNLISTスタイルのコンボボックスには対応していません。 + //! @param pRecent 紐づけるCRecentへのポインタ。nullptrは指定できません。 static void SetComboBoxDeleter( HWND hwndCtl, CRecent* pRecent ); public: