Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Position einer MessageBox

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Position einer MessageBox (1547 mal gelesen)
Goofy007
Mitglied
Vermessungstechniker


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 02. Jan. 2006 10:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Forum,

Kann man die Position einer Messagebox verändern?
Oder kommt die immmer in der Bildschirmmitte?

Ich verwende nach einem Zoom Mittelpunkt eine msgbox. Die wird nun genau über das gezoomte Element gezeichnet. Das will ich nicht.
Ich möchte die msgbox an einer von mir definierten Position haben. Geht das ?

mfg didi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 02. Jan. 2006 19:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Goofy007 10 Unities + Antwort hilfreich

Hi Didi,

also ne Userform wäre einfacher, also schonmal festhalten ... ;-)

Den Code hab ich erstmal von hier.

Hab' dann zwei Zeilen geändert, siehe *** Kommentare *** und dann gings unter Acad.
Ob das allerdings soooo 100%-ig war/ist, weiss ich nicht, kenn mich mit API nicht großartig aus, aber vielleicht weiss ja wer, ob das so in etwa richtig sein könnte.

Gehen 'ging' bei mir also sowas in der Art:

Code:

Option Explicit

Private Declare Function GetWindowPlacement Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long
Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" ( _
    ByVal hwnd As Long, _
    ByVal lpText As String, _
    ByVal lpCaption As String, _
    ByVal wType As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long
   
Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Private Type WINDOWPLACEMENT
        Length As Long
        flags As Long
        showCmd As Long
        ptMinPosition As POINTAPI
        ptMaxPosition As POINTAPI
        rcNormalPosition As RECT
End Type

Private Const MB_DEFBUTTON1 = &H0&
Private Const MB_DEFBUTTON2 = &H100&
Private Const MB_DEFBUTTON3 = &H200&
Private Const MB_ICONASTERISK = &H40&
Private Const MB_ICONEXCLAMATION = &H30&
Private Const MB_ICONHAND = &H10&
Private Const MB_ICONINFORMATION = MB_ICONASTERISK
Private Const MB_ICONQUESTION = &H20&
Private Const MB_ICONSTOP = MB_ICONHAND
Private Const MB_OK = &H0&
Private Const MB_OKCANCEL = &H1&
Private Const MB_YESNO = &H4&
Private Const MB_YESNOCANCEL = &H3&
Private Const MB_ABORTRETRYIGNORE = &H2&
Private Const MB_RETRYCANCEL = &H5&

'****** nicht nötig ?! ******
''''Private Const gcClassnameMSExcel = "XLMAIN"

Private Const WM_PAINT = &HF

Private Const strBoxTitle = "Information"

Private lngxlhWnd As Long

Public Sub prcShowBox()
    ' ******* nicht nötig *******
    ''''lngxlhWnd = FindWindow(gcClassnameMSExcel, Application.Caption)

    'stattdessen
    '**** Acad kennt die HWND-Prop selbst******
    lngxlhWnd = ActiveDocument.hwnd
   
    SetTimer lngxlhWnd, 0, 1, AddressOf prcTimer
    MessageBox lngxlhWnd, "Hallo hier bin ich.", strBoxTitle, MB_OK Or MB_ICONINFORMATION
End Sub

Private Sub prcTimer(ByVal hwnd As Long, ByVal nIDEvent As Long, _
    ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Call prcKillTimer
    Call prcSetWindowPos
End Sub

Private Sub prcKillTimer()
    KillTimer lngxlhWnd, 0
End Sub

Private Sub prcSetWindowPos()
    Dim WinEst As WINDOWPLACEMENT
    Dim lngBoxhWnd As Long
    lngBoxhWnd = FindWindow("#32770", strBoxTitle)
    If lngBoxhWnd <> 0 Then
        WinEst.Length = Len(WinEst)
        GetWindowPlacement lngBoxhWnd, WinEst
        ' 100,100 = Position auf dem Bildschirm
        MoveWindow lngBoxhWnd, 100, 100, _
            WinEst.rcNormalPosition.Right - WinEst.rcNormalPosition.Left, _
            WinEst.rcNormalPosition.Bottom - WinEst.rcNormalPosition.Top, WM_PAINT
    End If
End Sub



Viel Glück, Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Goofy007
Mitglied
Vermessungstechniker


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 03. Jan. 2006 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nancy,

herlichen Dank für deine Antwort.
Sieht ja recht kompliziert aus! Die Idee mit einer eigenen Userform hatte ich auch schon. Aber ich weis noch nicht so recht was ich nun wirklich machen soll. Von der API hab ich leider auch keine Ahnung.

Kannst du mir sagen wie Systemabhängig diese API-Dinger sind.
Läuft das unter allen Windows-Systemen, bzw. was passiert bei einem Windows update? Sind die DLLs immer abwärtskompatibel?

mfg Didi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Projektingenieur Mechanik (m/w/d)

Die VAHLE Group entwickelt hochwertige Energie-, Datenübertragungs- und Automatisierungssysteme, die bei mobilen Industrieanwendungen weltweit im Einsatz sind. Dabei sind Qualität, Dynamik, Innovation und Passion die Grundpfeiler unseres Handelns. Im Jahr 1912 brachte Paul Vahle die erste Kupfer-Stromschiene auf den Markt und legte damit den Grundstein für ein Unternehmen mit heute über 750 Mitarbeiter:innen, das seine Produkte und Dienstleistungen in 52 Ländern weltweit anbietet....

Anzeige ansehenTeamleitung, Gruppenleitung
startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 03. Jan. 2006 11:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Goofy007 10 Unities + Antwort hilfreich

Mahlzeit Didi,

also da fragst Du ehrlichgesagt die Falsche, weiss ich auch nicht genau;-)
Kann nur soviel sagen, was ich probiert hatte, es lief mit dem Code vom Link unter:
Win98/Excel2000
sowie der leicht modifizierte Code unter:
Win2000/Acad2005

Was nicht lief war Win98/Acad2000, was aber IMHOIn my humble oppinion (Meiner Meinung nach) weniger an der Windows Version liegt, sondern wohl eher an der alten vbaide vom 2000'er, also am ollen VB5.

Vielleicht weiss ja noch jemand bisschen mehr dazu.

Gruss Nancy 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz