Dialog verschieben
-
Martin Richter schrieb:
Mit MoveWindow oder SetWindowPos

Warum beides!
-
Ich habe einmal so
::MoveWindow(hWnd,800,800,100,100,TRUE)probiert
und einmal mit SetWindowPos. Dazu habe ich haber den Quellcode nicht mehr.
Ich hatte es mit beidem probiert, weil ich keinen Erfolg hatte.
Zum testen habe ich auch einmal mit::GetWindowRect(hWnd,&rect)die Koordinaten nach einer Verschiebung von Hand ausgelesen. Es sind dann immer noch die, die ich über MoveWindow gesetzt habe.
Weißt Du oder jemand anderst irgend ein Rat?Oli_1977
-
Wenn MoveWindow in dieser Form nicht geht, dann stimmt das Handle nicht.
-
Ja sicher geht es mit diesen Funktionen.
Check doch erst mal ob das Handle überhaupt gültig ist.
-
Ich kann aber mit
ShowWindow(hWnd,SW_RESTORE);den Diloag in den Vordergrund bringen.
Ich habe folgenden Code um das Fenster in den Vordergrund zu bringen
hWnd = ::FindWindow(TEXT("TApplication"),TEXT("smartision ScreenCopy")); if(hWnd){ ::SetForegroundWindow(hWnd); ::ShowWindow(hWnd,SW_RESTORE); RECT rect; ::GetWindowRect(hWnd,&rect); }Also sollte das Handle stimmen.
hWnd wird mit NULL initialisiert.Oli_1977
-
Return code von MoveWindow?
-
Abfrage
BOOL erg = ::MoveWindow(hWnd,800,800,100,100,TRUE);ergibt 1.
Oli_1977
-
kA dann verfrickelst du irgendwo was, zeig mal ein Minimalbeispiel.
-
Jo!
hWnd ist wahrscheinlich 0!Lass dir anzeigen was GetLastError zurückgibt.
-
Kurzes Code Beispiel
Wnd = NULL; hWnd = ::FindWindow(TEXT("TApplication"),TEXT("smartision ScreenCopy")); if(hWnd){ ::SetForegroundWindow(hWnd); ::ShowWindow(hWnd,SW_SHOW); RECT rect; ::GetWindowRect(hWnd,&rect); ::SetWindowPos(hWnd,HWND_TOPMOST,200,200,0,0,SWP_NOSIZE); e = GetLastError(); }else{ ShellExecute(NULL,_T("open"),PFAD_BILDSCHRIRM_FOTOGRAFIEREN,_T(""),_T("C:\\Program Files\\ScreenCopy\\"),SW_SHOW | SW_SHOWNORMAL ); hWnd = ::FindWindow(TEXT("TApplication"),TEXT("smartision ScreenCopy")); if (hWnd) { RECT rect; ::GetWindowRect(hWnd,&ttt); DWORD e; BOOL erg = ::SetWindowPos(hWnd,HWND_TOPMOST,200,200,0,0,SWP_NOSIZE);//::MoveWindow(hWnd,200,200,500,500,FALSE); e = GetLastError(); ::GetWindowRect(hWnd,&rect); } }Rückgabewert von GetLastError ist 0.
Oli_1977