だから私は自分のプログラム内に次のような2番目のウィンドウを作成しました:
#define WINDOW_CLASS_NAME "WINCLASSFULL"
WNDCLASSEX winclass;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
some function {
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
// first fill in the window class stucture
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc =WndProc;
winclass.cbClsExtra = 0; //reserve data space
winclass.cbWndExtra = 0; //
winclass.hInstance = hInstance; //set instance of application
winclass.hIcon = NULL;
winclass.hCursor = LoadCursor(NULL, IDC_ARROW); //load cursor type
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); //set background brush
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME; //set Windows class name
winclass.hIconSm = NULL;
hWnd= CreateWindowEx(WS_EX_LAYERED, // extended style
WINDOW_CLASS_NAME, // class
"Demo", // title
WS_POPUP,
x,y,
width,height,
NULL,
NULL,
hInstance,// instance of this application
NULL))) // extra creation parms
}
今私の問題は、私が適用するかどうかです
255 は 1 ~ 255 の間の任意の値です
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),255,LWA_COLORKEY|LWA_ALPHA)
ウィンドウは完全に不透明で、後ろに何も見えません
これは完全に透過的です。
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),0,LWA_COLORKEY|LWA_ALPHA)
どうすれば入手することができますか
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),128,LWA_COLORKEY|LWA_ALPHA)
作業するには - つまり、ウィンドウが部分的に上に見えるようにします。その後ろの窓が部分的に見えます。ここで MSDN の doco を確認しましたが、明らかに不足しているものがあります Microsoft ライブラリを参照してください