我是StackOverflow的新手,所以原諒我在帖子中犯的任何愚蠢錯誤。基於Win32對話框的無邊界窗口,位圖背景和視覺樣式
我有一個問題,使用Win32 API(無MFC)和基於對話框的應用程序創建一個帶有位圖背景的無邊框窗口。我使用Visual Studio 2010中
如果我使用Windows XP的視覺風格,通過將共同控制的問題只發生LIB用下面的代碼片段:
我有一個簡單的對話框和內它是一個帶有位圖圖像的PictureControl,它將成爲窗口的背景。我希望這個圖像填充整個窗口,不需要調整大小或拖放,所以我只是把它放在屏幕上,並定義了對話框和圖片控制尺寸,在我的RC文件中是相同的,如下所示(都與尺寸356,210):
//Main Dialog
IDD_DIALOG_MAIN DIALOGEX 0, 0, 356, 210
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
//Picture Control
CONTROL 103,IDC_PB_SPLASH,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE,0,0,356,210
DEFPUSHBUTTON "OK",IDOK,152,169,50,14
END
現在的問題是,在我使用的視覺樣式時,圖像不填充對話框窗口的整個區域。在對話框的兩側都可以看到一個小的空白區域(如果刪除了SS_CENTERIMAGE,則它是右側的空白區域)。沒有視覺樣式就不會發生這種情況。下圖顯示了圖片的問題(圖像使用的有隻是一個例子,實際的背景圖像更復雜,所以只用毛筆繪畫不是一個選項)
沒有視覺樣式 http://postimg.org/image/hji8sa6j1/
使用Visual樣式 http://postimg.org/image/b733ig3gt/
對不起,我還沒有足夠的聲望發佈圖片。
有關如何使位圖填充整個窗口並啓用視覺樣式的任何建議? 我發現這個很好的答案https://stackoverflow.com/a/17713810/3022281由melak47製作無邊框窗口,但它不是基於對話框的。如果沒有其他工作,我想我必須去解決這個問題。
你想要一個模態或無模式對話框嗎? –
嗨@valter,如果你的模態意味着用戶不得不點擊按鈕繼續,它將是非模態的。 我使用以下代碼創建它: HWND hDlg; hDlg = CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_DIALOG_MAIN),0,DialogProc,0); ShowWindow(hDlg,nCmdShow); –