est-ce qu'il y a un moyen de forcer
4 Réponses :
Vous pouvez utiliser l'API Win32 API apportwindowtotop a >. Il faut un HWND. p>
Vous pouvez également utiliser l'API SetWindowPos a> qui vous permet également de faire des choses comme faire la fenêtre une fenêtre de niveau supérieur. P>
La liaison Seccond est incorrecte, vous voulez dire MSDN.MicRosoft. Com / fr-US / Bibliothèque / MS633545% 28VS.85% 29.aspx Pourriez-vous également suggérer un exemple sur cette fonction?
@Levo: Merci, je ne dois pas l'avoir copié dans le presse-papiers correctement avant de coller.
SetWindowPos(that_window_handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); BringWindowToTop moves the window to the top of the Z-order (for now) but does not make it a topmost window.
Pouvez-vous donner un exemple s'il vous plaît?
@Levo: il suffit de remplacer la poignée de la fenêtre que vous souhaitez sur la place de que_window_handle code> dans l'extrait cippet ci-dessus.
Apportwindowtotop () n'a aucun effet si vous souhaitez apporter une fenêtre d'applications par derrière (ou minimisée) à l'avant. Le code suivant est-ce que cette affaire est fiable:
ShowWindow(hwnd, SW_MINIMIZE); ShowWindow(hwnd, SW_RESTORE);
Il est lent dans Win XP.
Travailler comme un charme!
BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) { wchar_t buff[255]; if (IsWindowVisible(hWnd)) { GetWindowText(hWnd, (LPWSTR) buff, 254); //wprintf(L"%s\n", buff); wstring ws = buff; if (ws.find(L"Firefox") != ws.npos) { ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } } return TRUE; } int main(){ BOOL enumeratingWindowsSucceeded = ::EnumWindows( EnumWindowsProc, NULL ); }