#define WIN32_LEAN_AND_MEAN #include #include using namespace std; static BOOL (WINAPI*SetShellWindow)(HWND); static BOOL (WINAPI*SetShellWindowEx)(HWND, HWND); int main() { HINSTANCE shell32 = GetModuleHandle(TEXT("user32")); // or LoadLibrary() SetShellWindow = (BOOL(WINAPI*)(HWND)) GetProcAddress(shell32, "SetShellWindow"); SetShellWindowEx = (BOOL(WINAPI*)(HWND,HWND)) GetProcAddress(shell32, "SetShellWindowEx"); HMODULE hinst = GetModuleHandle(0); HWND hwnd = CreateWindowEx(0, TEXT("#32770"), TEXT("TEST1"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, 100, 100, 300, 200, 0, 0, hinst, 0); BOOL ret = SetShellWindow(hwnd); cout << "first call to SetShellWindow(hwnd): " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = SetShellWindow(hwnd); cout << "second call to SetShellWindow(hwnd): " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = SetShellWindow(0); cout << "reset shell window by SetShellWindow(0): " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = SetShellWindow(hwnd); cout << "third call to SetShellWindow(hwnd): " << (ret? "SUCCESS": "FAILURE") << "\n"; SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd,GWL_EXSTYLE)|WS_EX_TOPMOST); ret = GetWindowLong(hwnd,GWL_EXSTYLE)&WS_EX_TOPMOST? TRUE: FALSE; cout << "SetWindowExStyle(hwnd, WS_EX_TOPMOST): " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = DestroyWindow(hwnd); cout << "DestroyWindow(hwnd): " << (ret? "SUCCESS": "FAILURE") << "\n"; HWND hwnd2 = CreateWindowEx(WS_EX_TOPMOST, TEXT("#32770"), TEXT("TEST2"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, 150, 250, 300, 200, 0, 0, hinst, 0); ret = SetShellWindow(hwnd2); cout << "SetShellWindow(hwnd2) with WS_EX_TOPMOST: " << (ret? "SUCCESS": "FAILURE") << "\n"; HWND hwnd3 = CreateWindowEx(0, TEXT("#32770"), TEXT("TEST3"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, 200, 400, 300, 200, 0, 0, hinst, 0); ret = SetShellWindow(hwnd3); cout << "SetShellWindow(hwnd3): " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = SetWindowPos(hwnd3, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); cout << "SetWindowPos(hwnd3, HWND_TOPMOST): " << (ret? "SUCCESS": "FAILURE") << "\n"; HWND hwnd4 = CreateWindowEx(0, TEXT("#32770"), TEXT("TEST4"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, 250, 500, 300, 200, 0, 0, hinst, 0); cout << "SetWindowPos(hwnd3, hwnd4: " << (ret? "SUCCESS": "FAILURE") << "\n"; ret = SetShellWindow(hwnd4); cout << "SetShellWindow(hwnd4): " << (ret? "SUCCESS": "FAILURE") << "\n"; HWND hwnd5 = CreateWindowEx(0, TEXT("#32770"), TEXT("TEST5"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, 300, 600, 300, 200, 0, 0, hinst, 0); ret = SetWindowPos(hwnd3, hwnd5, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); UpdateWindow(hwnd3); UpdateWindow(hwnd4); GdiFlush(); cout << "SetWindowPos(hwnd3, hwnd5): " << (ret? "SUCCESS": "FAILURE") << "\n"; MSG msg; while(GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }