1
我必須使用Windows窗體創建自定義邊框窗口。目前我正在使用WM_NCCALSIZE來修改邊框的大小,而WM_NCPAINT用於自定義繪圖。 我意識到,當我在處理WM_NCCALSIZE消息時不調用基WndProc時,滾動條將不會被繪製。 那麼,如果手動處理WM_NCCALSIZE,我可以擁有一個原生的普通滾動條嗎?我該怎麼做?自定義邊框Windows窗體和滾動條可見性
我必須使用Windows窗體創建自定義邊框窗口。目前我正在使用WM_NCCALSIZE來修改邊框的大小,而WM_NCPAINT用於自定義繪圖。 我意識到,當我在處理WM_NCCALSIZE消息時不調用基WndProc時,滾動條將不會被繪製。 那麼,如果手動處理WM_NCCALSIZE,我可以擁有一個原生的普通滾動條嗎?我該怎麼做?自定義邊框Windows窗體和滾動條可見性
你可以做的是首先調用base.WndProc(ref m)
然後處理消息來修改邊框的大小。
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
...
case WM_NCCALCSIZE:
{
base.WndProc(ref m);
//Work your magic...
}
default: base.WndProc(ref m);
}
}
是的,我可以。但我在互聯網上搜索過,沒有人叫基地方法。當我們這樣做時,我不知道它是否會造成開銷或其他問題? – binhnx218
這實際上取決於基本實現與WM_NCCALCSIZE做什麼,但我懷疑你應該看到任何可衡量的效果。如果它給你想要的結果,那就去吧:) – Rotem
謝謝。雖然我真的想要一個不需要調用基本方法的解決方案(它只調用本地DefWndProc過程),但我認爲這是一個可接受的解決方案。 你可以寫你的評論作爲答案,我會接受它:) – binhnx218