1

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;
4

1 に答える 1

3

今、私はそれを見ます:I creating a child window ...

MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

WS_CHILD が CS_DROPSHADOW を防止する ウィンドウに一時的なポップアップ コントロールを作成し、CS_DROPSHADOW を使用してポップアップの一時的な性質を強化したい場合、WS_CHILD と一緒に使用することはできません。CS_DROPSHADOW を無視するだけです。コントロールを WS_POPUP にして、開いたときに必要な場所に配置する必要があります。

それにもかかわらず、WNDCLASSEX wcex のため、HWND CreateWindow の代わりに HWND PageWnd = CreateWindowEx を使用してください。

その単純さ: WNDCLASS は CreateWindow に対応し、WNDCLASSEX は CreateWindowEx に対応します。

MSDN から: 「CreateWindowEx 関数は、拡張ウィンドウ スタイルを使用してオーバーラップ ウィンドウ、ポップアップ ウィンドウ、または子ウィンドウを作成します。それ以外の場合、この関数は CreateWindow 関数と同じです。」</p>

于 2013-02-11T13:11:09.613 に答える