環境は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
が定義されていない識別子としてエラーになります。
なぜでしょうか。どなたか御教授お願い致します。
たしか、user32.libへのリンクおよびwinuser.hのインクルードが必要だったと思う。
あと
http://www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm
とか参照
Zero=Kelvinさん。ありがとうございました!
ツイート | ![]() |