2010-06-10 78 views
1

我想創造這樣一個自定義組合框(如在MS Word),如何在Win32中使用位圖創建組合框?

alt text http://img265.imageshack.us/img265/232/comboboxcustom.png

是否有任何的Win32 API調用(我不能使用MFC)得到這份工作做,(如?CHOOSECOLOR()或CHOOSEFONT()如果沒有任何,任何人都可以請告訴我如何做到這一點感謝您

問候,

編輯:? 創建自繪對話框!這是唯一的方法嗎? http://msdn.microsoft.com/en-us/library/bb775794%28VS.85%29.aspx#creating_square_meal

回答

1

你有一些選項來解決問題:

  1. 所有公共控件支持WM_SETFONT,所以如果你找到一個字體,其具有的所有行您需要的元素,您可以更改組合框控件的字體並使用相應的textes填充項目。
  2. ComboBoxEx控制它結合圖像與textes(見http://msdn.microsoft.com/en-us/library/bb775738(VS.85).aspx)。要小心,什麼部分的項目將被選中(只是嘗試它)。如果你可以稍微改變你對組合框控件的需求,你就可以使用它。
  3. 您可以使用所有者繪製組合框。那麼你是完全免費的,但是你的代碼可以更長時間,如果你使用Windows的非標準顏色shema或非默認的theams工作,你應該更加熟練。在這種情況下,我會建議你使用功能GetSysColor

你應該以自己的方式欺騙​​自己是最適合你的項目需求。

+0

好的,我認爲選項2是我需要的,我會研究它,非常感謝。 – Morpheus 2010-06-10 09:04:55

0

你可以從WTL::CComboBox派生。你必須要實現消息處理程序

  • WM_MEASUREITEM/OCM_MEASUREITEM做你的組合框項目
  • WM_DRAWITEM/OCM_DRAWITEM做繪圖本身的尺寸測量。你真的不需要位圖,你可以簡單地使用GDI進行繪製。
+0

謝謝。但我不能使用任何這些。只有原生的win32 API調用。 :( – Morpheus 2010-06-10 07:56:30

+0

順便說一句,這是不是說,這沒有一個API調用? – Morpheus 2010-06-10 07:57:54

+0

@Sebastian,我現在正在做WTL :: CComboBox,我設法做所有的東西,但我需要擁有者繪製你有什麼建議怎麼做? – ST3 2014-01-10 10:42:37

0

在Win32中,這被稱爲所有者繪製的組合框。在網上dicumentation一個很好的起始點是在這裏:

http://msdn.microsoft.com/en-us/library/bb775794%28VS.85%29.aspx#creating_owner_drawn

+0

謝謝。它使用圖標繪製這些自定義位圖,所以我可以更改組合框中圖標的大小嗎?(bcz,我想繪製相同的圖像上面的圖片,不只是作爲一個圖標) – Morpheus 2010-06-10 08:11:10

+0

你可以繪製什麼和你想要的,看看文檔 – 2010-06-10 08:35:59