aşağıda görüntüleri alıyorum davranışı göstermek, Windows 10 üzerinde DwmExtendFrameIntoClientArea
kullanarak çerçeveleri pencere uzanan bazı sorun yaşıyorum:DwmExtendFrameIntoClientArea garip davranışlar
beyaz başlık çubuğu rengi Üst taraftan genişletilmiş, yandan ve alttan ise pencerenin renkli kenarını genişletir. Çerçeveler uzanmasına marjları -1
tüm ayarlanırsa
, pencere beyaz ile doldurulur ve tamamen kendi renkli yitirerek:
, çok tutarsız Bu sonuç idi Pencerenin her iki tarafında uzatılacak beyaz rengin, renkli çerçevenin Windows 8'de genişletilme şekline benzer şekilde veya camın Windows 7 ve Vista'da genişletilmesi bekleniyor.
İnternet'te arama yapmayı denedim, ancak benzer sorunları bulamadık. İşte
ben kod kullanıyorum edilir:#include <windows.h>
#include <dwmapi.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int main(int argc, char **argv)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
MSG msg;
HWND hwnd;
WNDCLASSW wc;
int message;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.lpszClassName = L"Window";
wc.hInstance = hInstance;
wc.hbrBackground = GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassW(&wc);
hwnd = CreateWindowW(wc.lpszClassName, L"Window",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100, 350, 250, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
while(1) {
message = GetMessageW(&msg, NULL, 0, 0);
if(message == -1)
{
char x[100];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), x, 100, NULL);
puts(x);
abort();
}
else if(message == 0) break;
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_ACTIVATE:
{
MARGINS m = {50, 50, 50, 50};
HRESULT hr = DwmExtendFrameIntoClientArea(hwnd, &m);
if(!SUCCEEDED(hr))
{
char x[100];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), x, 100, NULL);
puts(x);
abort();
}
break;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProcW(hwnd, msg, wParam, lParam);
}
Yanlış bir şey yapıyor veya Windows 10 ile bu sadece bir konudur muyum? Herhangi bir yardım için şimdiden teşekkür ederiz!
Düzenleme: Gönderdiğim kod, Windows 10'daki hem Aero Lite hem de yüksek kontrast temalarıyla mükemmel çalışır, ancak varsayılan Windows 10 temasıyla uyumlu değildir. Çerçeve istemci alanına uzatıldı zaman
Neredeyse iyi bir soru. Bunun dışında soru eksik. Lütfen, beklenen sonucun ne olduğunu açıklayınız. – IInspectable
Başlık çubuğunun beyaz rengini, renkli çerçevenin Windows 8'de nasıl genişletildiğine veya Windows 7 ve Vista'daki camlara benzer şekilde genişletmesini bekliyorum. Şu anda sonuç tutarsız ve sadece çirkin görünüyor. – YmFzZTY0
Lütfen bu bilgiyi eklemek için sorunuz [düzenle] (http://stackoverflow.com/posts/34414751/edit). – IInspectable