मैं कुछ परेशानी खिड़की का विस्तार विंडोज 10 पर DwmExtendFrameIntoClientArea
का उपयोग कर फ्रेम हो रही है नीचे दी गई छवियों व्यवहार मैं हो रही है दिखाने:DwmExtendFrameIntoClientArea अजीब व्यवहार
सफेद शीर्षक पट्टी रंग है ऊपर से बढ़ाया गया है, जबकि किनारों से और नीचे यह खिड़की के रंगीन किनारे को फैलाता है।
अगर मैं मार्जिन -1
करने के लिए सभी सेट फ्रेम सभी तरह का विस्तार करने, खिड़की सफेद से भरा है और पूरी तरह से अपने रंग धार खो देता है:
यह परिणाम है बहुत असंगत, मैं गया था खिड़की के सभी किनारों पर सफेद रंग को विस्तारित करने की उम्मीद है, जिस तरह से विंडोज 8 में रंगीन फ्रेम बढ़ाया जाता है, या ग्लास विंडोज 7 और Vista में बढ़ाया जाता है।
मैंने ऑनलाइन खोज करने की कोशिश की है, लेकिन मुझे कोई भी समान समस्या नहीं मिली है।
यहाँ है कोड मैं उपयोग कर रहा हूँ:
#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);
}
मैं कुछ गलत कर रहा हूँ या यह सिर्फ विंडोज 10 के साथ एक मुद्दा है? किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद!
संपादित करें: मैंने जो कोड पोस्ट किया है वह एरो लाइट और विंडोज 10 पर उच्च विपरीत विषयों दोनों के साथ पूरी तरह से काम करता है, लेकिन डिफ़ॉल्ट विंडोज 10 थीम के साथ नहीं।
लगभग एक अच्छा सवाल है। सिवाय, सवाल गुम है। कृपया समझाएं, अपेक्षित परिणाम क्या होना चाहिए। – IInspectable
मुझे उम्मीद है कि यह शीर्षक बार के सफेद रंग को विस्तारित करने के लिए, विंडोज 8 पर रंगीन फ्रेम कैसे बढ़ाया गया है, या विंडोज 7 और विस्टा पर ग्लास। वर्तमान में परिणाम असंगत है और सिर्फ बदसूरत लग रहा है। – YmFzZTY0
कृपया इस जानकारी को शामिल करने के लिए [संपादित करें] (http://stackoverflow.com/posts/34414751/edit)। – IInspectable