Fuente/ Codesnippets | | | | - Página 1 - |
| | Andreas Miethe, URL=www.paules-pc-forum.de/forum/spezielles/123967-messagebox-con-option.html#post754182, ZEITPUNKT=26.12.2009
Messagebox con Opción Un kleine Spielerei con uno Messagebox y una Hook. Tal vez kanns sí alguien gebrauchen. $H Windows.ph
$H Messages.ph
#############################
Messagebox-Konstanten
DEF &IDOK 1
DEF &IDCANCEL 2
DEF &IDABORT 3
DEF &IDRETRY 4
DEF &IDIGNORE 5
DEF &IDYES 6
DEF &IDNO 7
DEF &IDICON 20
DEF &IDPROMPT $FFFF
DEF &IDSTATIC $CAFE
#############################
Struct CWPSTRUCT = lParam&,wParam&,message&,hwnd&
Struct Rect = left&,top&,right&,bottom&
Declarar Hook&,OldProc&
Declarar B&,B1&
Proc MB
Parámetros wnd&,msg&,wparam&,lparam&
Declarar Result&
seleccionar msg&
Caseof ~WM_INITDIALOG
Var Rect# = New(Rect)
~GetWindowRect(wnd&,Rect#)
~Movewindow(wnd&,Rect#.left&,rect#.top&,width(wnd&)+12,Height(wnd&)+40,1)
B& = Crear("CheckBox",wnd&,"Diese Meldung no otra vez anzeigen",0,height(wnd&)-18,width(wnd&),18)
SendMessage(B&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(~GetDlgItem(wnd&,&IDICON),~STM_SETIMAGE,~IMAGE_ICON,~LoadIcon(%hInstance,"EIMER"))
Result& = 1
Caseof ~WM_COMMAND
If lparam& = b&
If Getcheck(B&)
B1& = 1
Endif
Endif
Caseof ~WM_NCDESTROY
~UnhookWindowsHookEx(Hook&)
Result& = 1
Endselect
Result& = ~CallWindowProc(OldProc&,wnd&,msg&,wparam&,lparam&)
Volver Result&
ENDPROC
Proc SetHook
Parámetros nCode&, wParam&, lParam&
Select nCode&
Caseof ~HC_ACTION
Var pw# = New(CWPSTRUCT)
pw# = lparam&
If pw#.message& = ~WM_INITDIALOG
OldProc& = ~SetWindowlong(pw#.hwnd&,~GWL_WNDPROC,ProcAddr("MB",4))
Endif
EndSelect
Volver ~CallNextHookEx(Hook&, nCode&, wParam&, lParam&)
ENDPROC
Proc PRF_Messagebox
Conjunto("Fastmode",1)
Parámetros body$, title$, flags&
Declarar Result&
Flags& = Flags& | ~MB_ICONQUESTION
Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
Result& = MessageBox(title$,body$, flags&)
Conjunto("Fastmode",0)
Volver Result&
ENDPROC
cls
Imprimir PRF_Messagebox("Titel","Wirklich löschen ? ",~MB_YESNO)
Imprimir IF(B1&=1,"Nicht otra vez anzeigen","wieder anzeigen")
Waitinput
Gruss Andreas
Auch muy schön con Hyperlinks: [...]
Andreas Miethe, Beitrag=55999, Zeitpunkt=06.02.2010
Per Hook va una Menge $H Windows.ph
$H Messages.ph
Struct CWPSTRUCT = lParam&,wParam&,message&,hwnd&
Struct Rect = left&,top&,right&,bottom&
#############################
Messagebox-Konstanten
DEF &IDOK 1
DEF &IDCANCEL 2
DEF &IDABORT 3
DEF &IDRETRY 4
DEF &IDIGNORE 5
DEF &IDYES 6
DEF &IDNO 7
DEF &IDHELP 9
DEF &IDTRYAGAIN 10
DEF &IDCONTINUE 11
DEF &IDICON 20
DEF &IDPROMPT $FFFF
DEF &IDSTATIC $CAFE
#############################
Proc MB
Parámetros wnd&,msg&,wparam&,lparam&
Declarar Result&,W&,H&,b&
Result& = ~CallWindowProc(OldProc&,wnd&,msg&,wparam&,lparam&)
seleccionar msg&
Caseof ~WM_INITDIALOG
Var SRect# = New(Rect)
~GetWindowRect(wnd&,SRect#)
Diálogo vergrössern y zentrieren
W& = SRect#.right& - SRect#.left&
H& = SRect#.bottom& -SRect#.top& + 40
~Movewindow(wnd&,((%maxx/2)-(W&/2)),((%maxy/2)-(H&/2)),W&,H&,1)
Positionen el Controls 40 Pixel después de untern verchieben
~Getwindowrect(~GetDlgItem(wnd&,&IDSTATIC),SRect#)
~Mapwindowpoints(0,wnd&,SRect#,2)
~Movewindow(~GetDlgItem(wnd&,&IDSTATIC),0,SRect#.Top&+40,SRect#.Right&,SRect#.Bottom&,1)
Whileloop 1,11
If ~IsWindow(~GetDlgItem(wnd&,&Loop))
~Getwindowrect(~GetDlgItem(wnd&,&Loop),SRect#)
~Mapwindowpoints(0,wnd&,SRect#,2)
~Setwindowpos(~GetDlgItem(wnd&,&Loop),0,SRect#.Left&,SRect#.Top&+40,0,0,~SWP_NOSIZE | ~SWP_NOZORDER)
Endif
Endwhile
Position vom PROMPT holen
~Getwindowrect(~GetDlgItem(wnd&,&IDPROMPT),SRect#)
~Mapwindowpoints(0,wnd&,SRect#,2)
LINKS bajo PROMPT invertir
Link& = Control("SysLink","<a>Besuch mi Homepage</a>",$50000000,SRect#.Left&,SRect#.Bottom&+10,width(wnd&),18,wnd&,4000,0,0)
SendMessage(Link&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
Mail& = Control("SysLink","<a>Schick me una Mail</a>",$50000000,SRect#.Left&,SRect#.Bottom&+30,width(wnd&),18,wnd&,4001,0,0)
SendMessage(Mail&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
Disponer SRect#
Result& = 1
Caseof ~WM_NOTIFY
Link abfragen
If (Largo(lparam&,8) = -2) and (Largo(lParam&,0) = LINK&)
ShellExec("https://www.ampsoft.eu","open",~SW_SHOWNORMAL)
endif
If (Largo(lparam&,8) = -2) and (Largo(lParam&,0) = Mail&)
ShellExec("Mailto://","open",~SW_SHOWNORMAL)
endif
Result& = 1
Caseof ~WM_NCDESTROY
~UnhookWindowsHookEx(Hook&)
Result& = 1
Endselect
Volver Result&
ENDPROC
Proc SetHook
Parámetros nCode&, wParam&, lParam&
Select nCode&
Caseof ~HC_ACTION
Var pw# = New(CWPSTRUCT)
pw# = lparam&
If pw#.message& = ~WM_INITDIALOG
OldProc& = ~SetWindowlong(pw#.hwnd&,~GWL_WNDPROC,ProcAddr("MB",4))
Disponer pw#
Endif
EndSelect
Volver ~CallNextHookEx(Hook&, nCode&, wParam&, lParam&)
ENDPROC
Proc PRF_Messagebox
Conjunto("Fastmode",1)
Parámetros body$, title$, flags&
Declarar Result&
Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
Result& = MessageBox(title$,body$, flags&)
Conjunto("Fastmode",0)
Volver Result&
ENDPROC
Hier gehts los
Declarar Hook&,OldProc&
Declarar LINK&,Mail&
cls
Imprimir PRF_Messagebox("Eine Cuestión...","Wirklich löschen ?",~MB_YESNOCANCEL | ~MB_DEFBUTTON2 | ~MB_ICONQUESTION | ~MB_APPLMODAL)
Waitinput
|
| | | | |
| | | | | - Página 1 - |
| Andreas Miethe
| Jörg Sellmeyer, Beitrag=55605, Zeitpunkt=27.12.2009
Sehr schön! En me se allerdings, en lugar de des Textes en el Checkbox, sólo una schwarzer Balken adecuado. Ist eigentlich dein ~DeleteObject() de otra manera como el profane oder podría uno auch simplemente DeleteObject h & uso?
Relacionado con la schwarzen Balken verstehe Yo no, Yo habs sí extra bajo XP getestet y fotografiert.
~DeleteObject() oder profanes DeleteObject es wohl el Selbe. |
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 27.12.2009 ▲ |
| |
| | | H.Brill, Beitrag=55597, Zeitpunkt=27.12.2009
IF: EndProcedure en el Code geändert en ENDPROC.
Programmierste stereo -> PureBasic + XProfan ?
Also Yo tener kein PB y costumbre auch keins en a wissen, dass EndProcedure wohl una ENDPROC hätte voluntad debería. ^ ^ |
| | | | |
| | Frank Abbing | Den schwarzen Balken kann Yo bestätigen. |
| | | | |
| | Jörg Sellmeyer | So sieht el entonces de:
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 27.12.2009 ▲ |
| |
| | | | - Página 2 - |
| | Rolf Koch | Como siempre el Manifest, welche esta schwarzen Balken erscheinen lässt! |
| | | | |
| | Jörg Sellmeyer | En me ha Profano no Manifest-Expediente. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.12.2009 ▲ |
| |
| | Dieter Zornow | Ebenfalls schwarzer Balken |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 28.12.2009 ▲ |
| |
| | Andreas Miethe
| | | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 28.12.2009 ▲ |
| |
| | Jörg Sellmeyer | | | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.12.2009 ▲ |
| |
| | Paul Glatz | Como es posible el Texto el Buttons a ändern? |
| | | | |
| | | Na spätestens z.B. con FindWindowEx Buttons encontrar weils el Params ermöglicht y así viele Buttons ne MSG-Box no ha aber GetDlgItem va determinado auch... y luego sólo SetText. |
| | | | |
| | Paul Glatz | Aha. Im bunteren Ejemplo es el Texto sí gelb como kann Yo ihn una otro Farbe geben?
EDIT: Den Texto des Sí Buttons ändern: settext ~GetDlgItem(wnd&,&IDYES),"t1" |
| | | | |
|
Zum QuelltextTema opciones | 12.574 Views |
ThemeninformationenDieses Thema ha 9 subscriber: |