Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12.01.2011, 13:41   #1 (Direktlink)
Ist öfter hier
 
Benutzerbild von Martin_K
 
Registriert seit: 28.01.2010
Ort: bayerischer Untermain
Beiträge: 84
Standard MessageBox positionieren?

Gibts eigentlich ne Möglichkeit, eine simple Messagebox wie die Inputbox "@Inpu$" auf ne bestimmte Stelle am Schirm zu positionieren? Oder welche Ausgabeart nutzt ihr für diese Art von Abfragen?
__________________
---
Xprofan X2 auf nem ollen PIII mit Win 2000
Martin_K ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.01.2011, 13:43   #2 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Dialog erstellen und Edit rein. Input$ funktionierte zumindestens in meiner XProfan Version nicht korekt (kann zu einem Überlauf kommen).
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 12.01.2011, 13:46   #3 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

@Martin
Das habe ich mir mal selbst "gebastelt"
Zitat:
DECLARE font0% 'Globale Declarationen. Kann jeder ändern wie er mag.
font0%=CREATE("FONT","ARIAL",16,6,0,0,0)
'------------------------------------------------------------------------------
PROC INPUT_BOX
DEF LoadImage(6) ! "USER32","LoadImageA"
ADDHOTKEY 2000,65,4 'Tasten Alt+A
ADDHOTKEY 2010,83,4 'Tasten Alt+S
DECLARE win01&,win_back&,win_OK&,win_back$,win_OK$
DECLARE win01_EE%,win01_txt%,win01_tip%
win01_EE%=0
DECLARE eing&,eing$,eigen_dll&
eigen_dll&=USEDLL("SHELL32.DLL")
PARAMETERS handle&,win01_titel$,win01_txt$,breit%,hoch%
'handle& ist das Fenster, auf dem die Box erscheint
'win01_titel$ steht in der Titelzeile der Box
'win01_txt$ ist eine Textzeile in der Box
'breit% + hoch% sind die Masse der Box. Die Button passen sich der Grösse in der Positionierung an
Case breit% < 120:breit% = 120 'Mindestbreite 120 Pixel
Case hoch% < 70:hoch% = 70 'Mindeshöhe 70 Pixel
WindowStyle 2
win01&=CREATE("WINDOW",handle&,win01_titel$,(%MaxX/2-breit%),(%MaxY/2-hoch%),(breit%*2),(hoch%*2))
win01_txt%=CREATE("TEXT",win01&,win01_txt$,10,10,(breit%*2-30),20)
SetFont win01_txt%,font0%
eing&=CREATE("EDIT",win01&,eing$,10,35,(breit%*2-30),20)
'------------------------------------------------
win_back$ = create("ITextbutton",win01&," &Abbrechen ",eigen_dll&,"#329",10,(hoch%*2-70),100,30,2003,"R") 'Immer Erhöhen
win_back& = val(substr$(win_back$,1,"|"))
SetFont win_back&,font0%
win01_tip%=CREATE("TOOLTIP",%HWnd,win_back&," Diese Eingabe schließen")
'----------------------------------------------
win_OK$ = create("ITextbutton",win01&," &Speichern ",eigen_dll&,"#246",(breit%*2-120),(hoch%*2-70),100,30,2005,"R") 'Immer Erhöhen
win_OK& = val(substr$(win_OK$,1,"|"))
SetFont win_OK&,font0%
win01_tip%=CREATE("TOOLTIP",%HWnd,win_OK&," Die Eingabe speichern")
'----------------------------------------------
SETFOCUS(eing&)
WAITINPUT
WHILENOT win01_EE%
IF CLICKED(win_back&) | MenuItem(2000)
DesTroyWindow(win01&)
win01_EE%=1
SETFOCUS(%hwnd)
'end
ENDIF
'-------------------------------------
IF CLICKED(win_OK&) | MenuItem(2010)
eing$=GETTEXT$(eing&)
DesTroyWindow(win01&)
win01_EE%=1
SETFOCUS(%hwnd)
print eing$ 'steht nur als Beispiel
ENDIF
ENDWHILE
'################################################
'##############################################################
'Diese Procedur ist aus dem riesigen XProfan-Pool - keine Ahnung, von wem ?
proc showbutton 'damit das Icon auch immer wieder angezeigt wird, ohne diese Proc wird es in der Exe nicht mehr angezeigt
parameters hdl& ' handle des Static controls
showwindow(hdl&,0)
showwindow(hdl&,1)
endproc
'Parameter: Fenster, oder Dialoghandle, Buttontext, handle der iconresource, Iconname, x%,y%,w%,h%, ButtonID, Text Links, rechts oder Zentiert
subproc Create.ITextbutton
Parameters hwnd&,text$,source&,image$,x%,y%,w%,h%,id&,dct$
declare button&,st&,Imh&,hpos&,hwid&
Imh& = LoadImage(source&,addr(Image$),$1,24,22,$0) 'Icongröße = 24 x 22
if dct$ = upper$("R")
button& = Control("BUTTON",text$,$54010200,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)
elseif dct$ = upper$("L")
button& = Control("BUTTON",text$,$54010100,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)
elseif dct$ = upper$("C")
button& = Control("BUTTON",text$,$54010000,x%,y%,w%,h%,hwnd&,id&,eigen_dll&,$0100)
endif
hpos& = height(button&) - 20
hpos& = int(hpos&/2)
hwid& = width(button&) -23 ' 3 pixel vom Rand weg + Icongröße
if (dct$ = upper$("R")) or (dct$ = upper$("C"))
st& = control("Static","",$50000003,3,hpos&,20,20,button&,0,%Hinstance)
else
st& = control("Static","",$50000003,hwid&,hpos&,20,20,button&,0,%Hinstance)
endif
Sendmessage(st&,$170,Imh&,0) '170
showbutton(st&)
return str$(button&) + "|" + str$(st&)
endproc
'##########################################
ENDPROC
'------------------------------------------------------------------------
'AUFRUF der Procedur
CLS
INPUT_BOX %hwnd,"Hier der Titel der Input-Box","Das kann ein kurzer Text sein",00,00
'Sind die Parameter für Breite und Höhe zu klein, hier 0,0, werden die Mindestmasse eingesetzt
WAITINPUT
END
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist gerade online   Mit Zitat antworten
Alt 12.01.2011, 14:49   #4 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

Wie ich sehe benutzt du Profan X2 dann lies mal


Die Ressorcen zu den XProfan-Dialogen wurden "modernisiert

Diese Dialoge können nun zwei zusätzliche Parameter zur Positionsbestimmung nutzen:




text$ = input$([x%, y%,] Titel$, Text$, Vorgabe$)

zeile$ = listbox$([x%, y%,] Titel$, Typ%)

text$ = editbox$([x%, y%,] Titel$, Typ%)




x% und y% sind jeweils die Bildschirmkoordinaten der linken oberen Ecke des jeweiligen Dialoges.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 12.01.2011, 15:23   #5 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Blinzeln

@Dieter
Du hast ja Recht. Macht aber viel mehr Spass, sowas selbst zu schreiben und den eigenem Geschmack unterzuordnen. Icon usw...
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.01.2011, 15:49   #6 (Direktlink)
Ist öfter hier
 
Benutzerbild von Martin_K
 
Registriert seit: 28.01.2010
Ort: bayerischer Untermain
Beiträge: 84
Standard

@Bangkok, das mit der Aktualisierung hab ich mitbekommen - ich hab glaub ich einfach meine Frage falsch gestellt:
ich wollte wissen, ob man diese Messagebox mit den diversen Buttons: "@MessageBox(S1,S2,N)" auch irgendwie an eine von mir gewünschte Stelle des Schirms ausgeben kann, so wie es mit der "input$([x%, y%,] Titel$, Text$, Vorgabe$)" auch funktioniert?
__________________
---
Xprofan X2 auf nem ollen PIII mit Win 2000
Martin_K ist offline   Mit Zitat antworten
Alt 12.01.2011, 16:17   #7 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Hinter der Profan MessageBox steckt (soweit ich weiß) die Windows API MessageBox aus der User32.dll - und die bietet die Funktionalität der freien Positionierung nicht.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 12.01.2011, 16:18   #8 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

Die Messagebox gehört nicht dazu. Da müsstest du mal probieren das Fensterhandle zu finden und mit setwindowpos zu ändern, ich weiß nicht ob das geht. Oder wie Horst selbst erstellen, dürfte einfacher sein.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 12.01.2011, 16:20   #9 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Das geht nur mit Multithreading. MessageBox wartet in einer Schleife "in der User32.dll" auf den Buttonklick.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 12.01.2011, 16:25   #10 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Allerhöchstens ginge das über eine Subclassing Routine, da MessageBox intern die WindowProc aufruft, um Messages verarbeiten zu lassen.
Einfacher und übersichtlicher wäre es aber, einen frei positionierbaren Dialog selbst zu erstellen.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.01.2011, 16:38   #11 (Direktlink)
Ist öfter hier
 
Benutzerbild von Martin_K
 
Registriert seit: 28.01.2010
Ort: bayerischer Untermain
Beiträge: 84
Standard

Dank in die Runde.
__________________
---
Xprofan X2 auf nem ollen PIII mit Win 2000
Martin_K ist offline   Mit Zitat antworten
Alt 12.01.2011, 17:09   #12 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

mit XProfan X2 Multiprozessing könnte man das Handle finden, indem man vorher einen Prozess aufruft, wäre mir aber nur wegen der Position zu umständlich und zu aufwändig.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 12.01.2011, 17:22   #13 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Zitat:
Zitat von Bangkok Beitrag anzeigen
mit XProfan X2 Multiprozessing könnte man das Handle finden, indem man vorher einen Prozess aufruft, wäre mir aber nur wegen der Position zu umständlich und zu aufwändig.
Ne, das geht auch einfacher.

Code:
$H Windows.ph
$H Messages.ph

Struct CWPSTRUCT = lParam&,wParam&,message&,hwnd&
Declare Hook&,X&,Y&

Proc SetHook
  Parameters nCode&, wParam&, lParam&
  Select nCode&
    Caseof ~HC_ACTION
    Var pw# = New(CWPSTRUCT)
    pw# = lparam&
    If pw#.message& = ~WM_INITDIALOG
      ~SetWindowPos(pw#.hwnd&,0,X&,Y&,0,0,~SWP_SHOWWINDOW | ~SWP_NOSIZE)
    Endif
    Dispose pw#
  EndSelect
  Return ~CallNextHookEx(Hook&, nCode&, wParam&, lParam&)
EndProc

Proc PRF_Messagebox
  Set("Fastmode",1)
  Parameters  x&, Y&, body$, title$, flags&
  Declare Result&
  Flags& = Flags& | ~MB_ICONQUESTION
  Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
  Result& = ~MessageBox(%hwnd,Addr(title$),Addr(body$), flags&)
  Set("Fastmode",0)
  ~UnhookWindowsHookEx(Hook&)
  Return Result&
EndProc

cls
Print PRF_Messagebox(100,200,"Titel","Frage : Wirklich löschen ? ",~MB_YESNO)
waitinput
end
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 12.01.2011, 18:52   #14 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Geht nicht - stürzt zumindestens in XProfan9 ab.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 12.01.2011, 19:06   #15 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Diese Zeile ist noch nicht abgearbeitet
Code:
 
Result& = ~MessageBox(%hwnd,Addr(title$),Addr(body$), flags&)
, wenn diese Zeilen durch den Hook aufgerufen werden:
Code:
Proc SetHook
  Parameters nCode&, wParam&, lParam&
  Select nCode&
    Caseof ~HC_ACTION
    Var pw# = New(CWPSTRUCT)
    pw# = lparam&
    If pw#.message& = ~WM_INITDIALOG
      ~SetWindowPos(pw#.hwnd&,0,X&,Y&,0,0,~SWP_SHOWWINDOW | ~SWP_NOSIZE)
    Endif
    Dispose pw#
  EndSelect
  Return ~CallNextHookEx(Hook&, nCode&, wParam&, lParam&)
EndProc
Das kann mit Profan eigentlich nicht sicher funktionieren - oder?
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Messagebox mit Option Andreas Miethe Spezielles 7 27.12.2009 09:38
MessageBox zur Begrüßung Linda Visual Basic, Visual Basic.NET 4 24.10.2009 11:00
Bei Anruf MessageBox? danjal C/C++, Visual C++, Visual C++.NET 0 20.09.2005 13:56
Sophos Pop Up Aktualisieren Fenster positionieren Pitter Software - Allgemein 0 11.09.2005 14:02
Icon aus MessageBox als Bitmap? DerBeginner C/C++, Visual C++, Visual C++.NET 3 01.09.2005 12:00



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:42 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2