2011-10-23 83 views
3

我想添加一個簡單的文本按鈕到我的c + + win32應用程序。我使用CreateWindowEx函數創建按鈕,但無法弄清楚這樣做的正確風格。我想顯示一個純文本按鈕,並能夠在用戶點擊時收到消息。我想獲得的風格與windows 7系統音量控制中的文本按鈕相同(它表示「混音器」)。如果可能的話,我想顯示一個工具提示。C++ win32創建一個文本按鈕

enter image description here

回答

3

您可以使用BS_OWNERDRAW樣式創建一個「Button」類窗口並處理WM_DRAWITEM消息。在您的WM_DRAWITEM消息處理程序中,您可以簡單地顯示文本。

+0

你需要讓它只響應點擊文本和做熱門鏈接處理。 –

5

這混頻器控制看起來更像是一個比一個按鈕的超鏈接控制。如果這是您需要的,我會去控制SysLink控件。

3

實際上,該按鈕是一個所有者繪製按鈕 - 它監聽鼠標移動消息,當您將鼠標懸停在它上面時,它強調文本(syslink控件不具有此行爲)。否則,它是一個股票按鈕。

+0

爲什麼你選擇所有者繪製按鈕而不是SysLink?據推測,你可以說服SysLink團隊添加熱追蹤支持?或者是否有所有者繪製按鈕的一些優點?也許是可訪問性。 –

+0

一個好處是,它可以讓你立即解決你的問題*而不是向SysLink團隊提交功能請求,然後看着他們推遲幾個月的決定,直到他們最終意識到他們沒有時間去做之後所有和迴應請求與「對不起,我們耗盡時間」,現在你已經創造了一個完全可避免的緊急情況在你的最終:現在你必須在最後一分鐘修復一個錯誤。 –

+0

謝謝雷蒙德,這正是我會給出的答案。問題中的按鈕大約有150-200行代碼,其中絕大多數用於處理停用主題的情況。 –