|
| |

VB & Windows API| SetWindowPos mit MDIForm und normaler Form (kein MDI child) | |  | | Autor: jacky ryan | | Datum: 24.02.12 20:20 |
| Hallo,
nach mehreren Stunden erfolgloser Google-Sucherei hoffe ich, dass mir einer von euch helfen kann.
Ich habe ein Programm mit einer MDIForm und mehreren MDI-Childs und mehreren "nicht"-MDI-Childs. Wenn ich nun möchte das eine "nicht"-MDI-Child-Form im Vordergrund ist, schaffe ich es nicht, dass die MDIForm im Hintergrund bleibt.
Folgender Code:
MDIForm1.frm:
Private Sub MDIForm_Load()
Form1.Show
End Sub Form1.frm (kein MDI-Child):
Option Explicit
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As _
Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const HWND_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOP = 0
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Sub Command1_Click()
Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, HWND_FLAGS)
End Sub
Private Sub Command2_Click()
Call SetWindowPos(Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, HWND_FLAGS)
End Sub Wenn ich auf Command1 klicke ist Form1 zunächst im Vordergrund. Ich kann dann wie erwartet das Fenster eines anderen Programms öffnen, Form1 bleibt aber im Vordergrund. Wenn ich nun Form1 anklicke taucht die MDIForm1 aber auch wieder auf! Und genau das will ich verhindern, die MDIForm1 soll im Hintergrund bleiben.
Die MDIForm1 zu minimieren geht nicht, weil der Benutzer eventuell noch mit der MDIForm1 arbeiten will.
Geht das irgendwie?
Vielen Dank für eure Hilfe,
Jacky 0 |  |
| Re: SetWindowPos mit MDIForm und normaler Form (kein MDI child) | |  | | Autor: jacky ryan | | Datum: 24.02.12 20:51 |
| Ich habe soeben noch was rausgefunden:
Es reicht auch wenn es 2 normale Forms sind, es hat nix mit der MDI zu tun. Zudem tritt der Effekt nur auf, wenn auf der Form im TOPMOST auf die Titelleiste geklickt wird (üblicherweise zum verschieben). Wenn in die Form selbst geklickt wird passiert nichts! Ein Bug? 0 |  |
| Re: SetWindowPos mit MDIForm und normaler Form (kein MDI child) | |  | | Autor: jacky ryan | | Datum: 27.02.12 22:54 |
| Wie gesagt, an der MDI liegt es gar nicht.
Die Fenster scheinen einen Zusammenhang zu haben, wenn man die Titelzeile anklickt.
Hintergrund:
Ich möchte aus besagtem Programm (MDI+childs+non_childs) über shell() ein anderes, unabhängiges Programm öffnen. Das Fenster des anderen Programms wird üblicherweise maximiert. Nun soll eine Liste mit Namen angezeigt werden, welche man sich herauskopieren und im anderen Programm einfügen kann. Diese Liste kommt momentan vom VB6-Programm. Um nicht jedesmal hin- und herzuklicken wäre es schön, wenn ein kleines Fenster mit der Liste im Vordergrund bleibt. Dummerweise taucht aber der Rest des VB6-Programms auch auf, wenn man sich einen Namen herauskopieren möchte.
Irgendwelche Ideen? 0 |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
| |
|
Copyright ©2000-2026 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|