Windowを透明にするには?

解決


ZUKI-MU  2005-07-26 21:12:24  No: 58459

環境はVC++.NETです。

以下ソース

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    WNDCLASSEX wc;
    HWND hWnd;

    g_hInst = hInst;

    /* Windowクラスの生成 */
    ZeroMemory(&wc, sizeof(wc));
    wc.cbSize           = sizeof(WNDCLASSEX); 
    wc.lpfnWndProc      = (WNDPROC)WndProc;
    wc.hInstance        = hInst;
    wc.hCursor          = LoadCursor(NULL, MAKEINTRESOURC(IDC_ARROW));
    wc.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName    = MYWNDCLASS;
    RegisterClassEx(&wc);

    /* Windowの生成 */
    if(!(hWnd = CreateWindowEx(WS_EX_LAYERED,
                               MYWNDCLASS,
                               NULL,
                               WS_OVERLAPPEDWINDOW,
                               CW_USEDEFAULT,CW_USEDEFAULT,
                               CW_USEDEFAULT, CW_USEDEFAULT,
                               NULL,
                               NULL,
                               hInst,
                               NULL)))
  {
    return false ;
  }

  /* Window を透明にセットする */
  SetLayeredWindowAttributes(hWnd, 0, 0, LWA_ALPHA);

         ShowWindow(hWnd, nCmdShow);

         while (GetMessage(&msg, NULL, 0, 0)) {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
         }
    return msg.wParam;
}

上記のソースのように、CreateWindowEx()の第一引数に
WS_EX_LAYEREDをセットし、SetLayeredWindowAttributes()を呼んでいます。

しかし、コンパイル時に、WS_EX_LAYERED,SetLayeredWindowAttributes,LWA_ALPHA
が定義されていない識別子としてエラーになります。

なぜでしょうか。どなたか御教授お願い致します。


Zero=Kelvin  2005-07-26 21:37:09  No: 58460

たしか、user32.libへのリンクおよびwinuser.hのインクルードが必要だったと思う。

あと
http://www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm
とか参照


ZUKI-MU  2005-07-26 22:22:23  No: 58461

Zero=Kelvinさん。ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加