■ Windowを常に最前面に表示する
SYNTAX
DESC
オーバーラップウィンドウ
ポップアップウィンドウ
子ウィンドウのいずれかを拡張スタイル付きで作成します
拡張スタイルが指定できること以外は CreateWindow 関数と同じ
HWND hWnd = CreateWindowEx(
// Style に "WS_EX_TOPMOST" を指定
WS_EX_TOPMOST,
// 後は同じ
...
■ 透明なWindow.をつくる
typedef BOOL __stdcall SETLAYER( HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags );
SETLAYER *SetLayeredWindowAttributes;
HINSTANCE hDllInst;
// USER32.DLLからWindows2000で拡張された関数を取得する
hDllInst = LoadLibrary("user32.dll");
if( hDllInst == NULL ){
MessageBox( NULL, "USER32.DLL の読み込みエラー","Error", MB_OK );
return( FALSE );
}
SetLayeredWindowAttributes =
(SETLAYER *)GetProcAddress( hDllInst, "SetLayeredWindowAttributes" );
if( SetLayeredWindowAttributes == NULL ){
MessageBox( NULL, "SetLayeredWindowAttributes()関数のポインタが取得できませんでした。
Windows2000ではない可能性があります","Error", MB_OK );
return( FALSE );
}
// 作成した Window を透明にする
HWND hWnd = CreateWindow( ... );
long sty = GetWindowLong( hWnd, GWL_EXSTYLE );
sty |= 0x00080000;
SetWindowLong( hWnd, GWL_EXSTYLE, sty );
SetLayeredWindowAttributes( hWnd, 0, 128, 2 );