2012-07-23 58 views
0

我已經繼承了一個項目(最初是爲Win95編寫的!),它有一些按鈕連接到從CWnd派生的父窗口。這些按鈕本身位於由CWnd派生的用戶定義的類中,因此它們不是「真正的」按鈕,而是由代碼行代碼定義的小窗口,並具有大量我一直在流汗的顯示問題幾個星期,看不到任何解決辦法。我可以將CBitmapButton附加到父CWnd而不是父CDialog嗎?

我們在前幾天斷定CBitmapButton看起來很不錯。顯示簡單,爲不同的按鈕狀態定義4個位圖。關於我所需要的全部是BN_CLICKED來啓動一個處理程序,而且我會很棒。

經過這一段時間,設置一個按鈕和一些位圖後,我能夠顯示CBitmapButton;看起來不太好,但我可以解決這個問題...現在的問題是我試圖建立一個消息映射來捕獲BN_CLICKED消息,但由於父窗口是從CWnd而不是CDialog派生的,所以我得到語法錯誤設置消息映射。閱讀主題上的MSDNs幾次,看來你只能將CBitmapButton掛接到CDialog派生類。這對我來說似乎很奇怪 - 我只想要一個按鈕,它應該能夠傳送一個簡單的「我被點擊了」給它所附屬的任何父母,但顯然不會註定會發生。

因此,有沒有人成功地將一個CBitmapButton附加到CWnd派生父代;如果是的話,那麼如何建立一個可以與這些事情一起工作的消息映射?或者,您將使用什麼方法來設置一個按鈕類,以便與CWnd父項一起工作,因爲CBitmapButton和CButton似乎需要CDialog作爲父項?

回答

1

不,它不要求你的父窗口應該總是CDiaglot,你甚至可以從CWnd繼承並在其中創建一個CButton/CBitmapButton。

您可以覆蓋CWnd派生類中的OnCommand消息並點擊按鈕單擊事件。

+0

發現我試圖附加按鈕(最終從CWnd派生)的父窗口表現不佳,並且攔截了用於該按鈕的消息。我給這個按鈕一個父窗口,允許消息傳遞(也是一個CWnd派生的,但沒有消息垃圾),並且按鈕的執行和預期的一樣。我沒有按照建議覆蓋OnCommand。謝謝! – Ken 2012-07-26 13:17:40

相關問題