2010-04-11 132 views
4

我正在嘗試爲CComboBox的衍生產品創建自定義下拉菜單。該下拉菜單將是一個日曆控件加上一些「熱點」,例如CComboBox的自定義下拉列表

Image Hosted by ImageShack.us http://img59.imageshack.us/img59/394/calctrl.png

所以我想實現這一目標是有一個簡單CWnd派生類充當父到日曆控件的最佳方法,並將其繪製熱點本身。

該窗口需要是一個彈出窗口 - 我認爲 - 而不是一個子窗口,以便它不被剪切。但是,這樣做會導致對話框(上ComboBox控件放置)停下來是最高(?前景)的窗口,導致其框架正在制定不同:

alt text http://img693.imageshack.us/img693/3474/35148785.png

這敗壞了錯覺,以爲下拉是組合框的一部分,因爲它在這一點上更像是一個模態對話框。 有關我如何使自定義下拉菜單的行爲與常規下拉菜單相似的任何建議?

我還需要注意哪些其他缺陷,例如,焦點和鼠標捕獲問題?

回答

0

當您創建彈出窗口時,您需要指定其所有者。當你激活它們時,擁有的彈出窗口將激活它們的主人。不指定所有者會導致您的窗口被激活,從而導致您看到的所有者發生變化。

+0

感謝您的回答。我在調用CreateEx時將組合框作爲下拉窗口的「父」來傳遞。當顯示下拉窗口時,它會導致對話框的改變。對SetOwner的顯式調用沒有任何區別。 – WalderFrey 2010-04-11 20:37:57

0

是的,我有這個問題一次。快速谷歌讓我懷疑我通過使用CreateWindowEx()並指定WS_EX_NOACTIVATE解決了這個問題。我有一些其他代碼可以通過使用WS_EX_TOOLWINDOW創建窗口而不是彈出窗口來實現相同的效果,但我不確定爲什麼會這樣做,我的直覺會說,使其成爲一個彈出窗口將是要走的路。