【发布时间】:2013-02-11 13:03:52
【问题描述】:
我创建了一个 CS_DROPSHADOW 样式的子窗口,但没有显示阴影。
我试着打电话给SystemParametersInfo(SPI_SETDROPSHADOW, 0, (PVOID) TRUE, 0);,但也没有用。
谁能给我解释一下怎么回事?
WNDCLASSEX wcex;
HBRUSH bgBrush = CreateSolidBrush(RGB(171,181,201));
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_DBLCLKS;
wcex.lpfnWndProc = KolmusProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIconW(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = bgBrush;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = L"Kolmus";
wcex.hIconSm = LoadIconW(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
RegisterClassEx(&wcex);
wcex.style = CS_DROPSHADOW;
wcex.lpfnWndProc = PageProc;
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszClassName = L"Page";
RegisterClassEx(&wcex);
HWND hWnd = CreateWindow(L"Kolmus", L"Kolmus", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
HWND PageWnd = CreateWindow(L"Page", L"", WS_CHILD | WS_VISIBLE, 30, 30, 200, 200, hWnd, NULL, hInstance, NULL);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
【问题讨论】:
-
您根本无法在子窗口上获得阴影,不要费心尝试。
-
是否可以创建一个不是子窗口的窗口,并且它的位置将相对于另一个窗口来确定? (作为子窗口,其位置相对于父窗口确定)。
标签: winapi window-style