Español
Fuente/ Codesnippets

Hyperlinks Messagebox Opción

 
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
 
27.12.2009  
 



EndProcedure en el Code geändert en ENDPROC.


4 kB
Hochgeladen:27.12.2009
Ladeanzahl92
Descargar
 
27.12.2009  
 




Dietmar
Horn
Hab Yo ya antes Stunden igual en el XProfan-Manager y meiner Quellcodeammlung gebunkert, así una solche "Perle" el Allgemeinheit no verlorengeht ...
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
27.12.2009  
 




H.Brill
IF: EndProcedure en el Code geändert en ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?
Hoffentlich kommt como no irgendwann veces una Mischmasch
fuera, el keiner mehr compilieren kann.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
27.12.2009  
 




Andreas
Miethe


H.Brill, Beitrag=55597, Zeitpunkt=27.12.2009
IF: EndProcedure en el Code geändert en ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?


Stereo ???

Delphi,Java,C,VB usw.usf.

Como muss uno ya aufpassen, dass uno no durcheinander kommt
 
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  
 




Jörg
Sellmeyer
H.Brill, Beitrag=55597, Zeitpunkt=27.12.2009
IF: EndProcedure en el Code geändert en ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?
Hoffentlich kommt como no irgendwann veces una Mischmasch
fuera, el keiner mehr compilieren lesen kann.


Como es IF doch ya largo angekommen
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.12.2009  
 




Andreas
Miethe


Hier todavía una bunteres Ejemplo con Temporizador para automatisches Schliessen.
KompilierenMarcaSeparación
 $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&
Struct PAINTSTRUCT = hdc&,fErase&,rcPaint!Rect,fRestore&,fIncUpdate&,rgbReserved#(32)

Proc Disablexptheme

    Var Ux& = ImportDll("UxTheme.dll","")
    Parameters Wnd&
    Declare Word#
    Dim Word#,2

    If UX&

        Setwindowtheme(Wnd&, Word#, Word#)

    Endif

    Dispose Word#
    FreeDll UX&

Endproc

Proc ShadowProc

    Parameters wnd&,lparam&

    If (~GetDlgCtrlID(wnd&) >= &IDOK) AND (~GetDlgCtrlID(wnd&) <= &IDNO)

        Disablexptheme(wnd&)
        Declare x&,y&,w&,h&,Brush&,Pen&,OldBrush&,OldPen&
        Var Rect# = New(Rect)
        Brush& = ~GetStockObject(~BLACK_BRUSH)
        Pen&   = ~GetStockObject(~NULL_PEN)
        ~GetClientRect(wnd&,Rect#)
        ~MapWindowpoints(wnd&,~GetParent(wnd&),Rect#,2)
        x& = Rect#.left&+6
        y& = Rect#.top&+6
        w& = x&+(Rect#.right&-Rect#.left&)
        h& = y&+(Rect#.bottom&-Rect#.top&)
        OldBrush& = ~SelectObject(lParam&,Brush&)
        OldPen&   = ~SelectObject(lParam&,Pen&)
        ~Rectangle(lParam&,x&,y&,w&,h&)
        ~SelectObject(lParam&,OldBrush&)
        ~SelectObject(lParam&,OldPen&)
        ~DeleteObject(Brush&)
        ~DeleteObject(Pen&)

    EndIf

    Return 1

EndProc

Proc MB

    Parameters wnd&,msg&,wparam&,lparam&
    Declare Result&,W&,H&

    select msg&

        Caseof ~WM_INITDIALOG

        Var DC& = ~GetDC(wnd&)
        Var Rect# = New(Rect)
        Var icon& = SendMessage(~GetDlgItem(wnd&,&IDICON),~STM_GETICON,0,0)
        ~GetWindowRect(wnd&,Rect#)
        Dialog vergrössern und zentrieren
        W& = Rect#.right& - Rect#.left& + 20
        H& = Rect#.bottom& -Rect#.top& + 30
        ~Movewindow(wnd&,((%maxx/2)-(W&/2)),((%maxy/2)-(H&/2)),W&,H&,1)
        Static-Control, auf dem die Buttons liegen, anpassen
        ~GetClientRect(~GetDlgItem(wnd&,&IDSTATIC),Rect#)
        ~MapWindowpoints(~GetDlgItem(wnd&,&IDSTATIC),wnd&,Rect#,2)
        ~Movewindow(~GetDlgItem(wnd&,&IDSTATIC),Rect#.left&,Rect#.top&,w&,44,1)
        Dispose Rect#
        Bitmap für Hintergrund anlegen
        Pic& = Create("hNewPic",w&,h&,$FFFFFF)
        Farbverlauf ins Bitmap
        Startpaint Pic&
        GradientRect(%hdc,0,0,w&,h&,$8000,$FF,0)
        ~DrawiconEx(%hdc,20,20,Icon&,32,32,0,0,$3)

        If D&

            TextColor $FFFF,$FF
            Drawtext width(wnd&)-24,Height(wnd&)-20,Format$("%3.0f",D&)

        Endif

        EndPaint
        Brush& = ~CreatePatternBrush(Pic&)
        Bitmap für Static anlegen
        ein Static-Control ist erst ab Vista vorhanden !
        Pic1& = Create("hNewPic",w&,44,$0)
        Farbverlauf ins Bitmap
        Startpaint Pic1&
        GradientRect(%hdc,0,0,w&/2,44,$FF,$8000,0)
        GradientRect(%hdc,w&/2,0,w&,44,$8000,$FF,0)
        EndPaint
        Brush1& = ~CreatePatternBrush(Pic1&)
        B& = Create("CheckBox",wnd&,"Diese Meldung nicht wieder anzeigen",0,height(wnd&)-20,width(wnd&),18)
        Disablexptheme(B&)
        SendMessage(B&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
        ShowWindow(~GetDlgItem(wnd&,&IDICON),0)
        Result& = 1

        Caseof ~WM_PAINT

        Var ps# = New(PAINTSTRUCT)
        ~BeginPaint(wnd&,ps#)
        ~EnumChildWindows(wnd&,ProcAddr("ShadowProc",2),ps#.hdc&)
        ~EndPaint(wnd&,ps#)
        Dispose ps#

        Caseof ~WM_CTLCOLORSTATIC

        If lParam& = ~GetDlgItem(wnd&,&IDSTATIC)

            Return Brush1&

        else

            ~SetTextColor(wParam&,$FFFF)
            ~SetBkMode(wparam&,~Transparent)
            Return ~GetStockObject(~NULL_BRUSH)

        Endif

        Caseof ~WM_CTLCOLORDLG

        ~SetBkMode(wparam&,~Transparent)
        Return Brush&

        Caseof ~WM_CTLCOLORBTN

        ~SetBkMode(wparam&,~Transparent)
        Return ~GetStockObject(~NULL_BRUSH)

        Caseof ~WM_TIMER

        Dec D&
        Startpaint wnd&
        TextColor $FFFF,$FF
        Drawtext width(wnd&)-24,Height(wnd&)-20,Space$(10)
        Drawtext width(wnd&)-24,Height(wnd&)-20,Format$("%3.0f",D&)
        Endpaint

        If D& = 0

            sendmessage(wnd&,~wm_close,0,0)

        endif

        Return 0

        Caseof ~WM_COMMAND

        If lparam& = b&

            If Getcheck(B&)

                B1& = 1

            Endif

        Endif

        Result& = 1

        Caseof ~WM_NCDESTROY

        ~Killtimer(wnd&,1)
        ~DeleteObject(Brush&)
        ~DeleteObject(Pic&)
        ~DeleteObject(Brush1&)
        ~DeleteObject(Pic1&)
        ~UnhookWindowsHookEx(Hook&)
        Result& = 1

    Endselect

    Result& = ~CallWindowProc(OldProc&,wnd&,msg&,wparam&,lparam&)
    Return Result&

Endproc

Proc SetHook

    Parameters nCode&, wParam&, lParam&

    Select nCode&

        Caseof ~HC_ACTION

        Var pw# = New(CWPSTRUCT)
        pw# = lparam&

        If pw#.message& = ~WM_INITDIALOG

            If D& : ~Settimer(pw#.hwnd&,1,1000,0):Endif

                OldProc& = ~SetWindowlong(pw#.hwnd&,~GWL_WNDPROC,ProcAddr("MB",4))
                Dispose pw#

            Endif

        EndSelect

        Return ~CallNextHookEx(Hook&, nCode&, wParam&, lParam&)

    EndProc

    Proc PRF_Messagebox

        Set("Fastmode",1)
        Parameters  body$, title$, flags&
        Declare Result&
        Flags& = Flags& | ~MB_ICONQUESTION
        Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
        Result& = MessageBox(title$,body$, flags&)
        Set("Fastmode",0)
        Return Result&

    EndProc

    Proc GradientRect

        Parameters DC&,x%,y%,w%,h%,Color1&,Color2&,HV&
        Declare GradRect#,Trivertex#
        Dim GradRect#,8
        Dim Trivertex#,32
        Long Gradrect#,0 = 0,1
        Long Trivertex#,0 =x%,y%
        word Trivertex#,8=GETRVALUE(Color1&) << 8,GETGVALUE(Color1&) << 8,GETBVALUE(Color1&) << 8,0
        Long Trivertex#,16=w%,h%
        word Trivertex#,24=GETRVALUE(Color2&) << 8,GETGVALUE(Color2&) << 8,GETBVALUE(Color2&) << 8,0
        External("Msimg32.dll","GradientFill",DC&,Trivertex#,2,Gradrect#,1,HV&)
        Dispose Trivertex#
        Dispose Gradrect#

    EndProc

    Hier gehts los
    Declare Hook&,OldProc&
    Declare B&,B1&
    Declare X&,T&,Brush&,Pic&,Brush1&,Pic1&
    Declare D&
    TIMER auf 15 Sekunden setzen
    D& = 15
    Wenn D& = 0, dann kein Timer
    Nach 15 Sekunden verschwindet die Box automatisch
    cls
    Print PRF_Messagebox("Eine Frage...","Wirklich löschen ?",~MB_YESNOCANCEL | ~MB_ICONQUESTION)
    Print IF(
>B1&=1,"Nicht otra vez anzeigen","wieder anzeigen") Waitinput

8 kB
Kurzbeschreibung: VISTA
Hochgeladen:27.12.2009
Ladeanzahl122
Descargar
6 kB
Kurzbeschreibung: XP
Hochgeladen:27.12.2009
Ladeanzahl112
Descargar
 
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  
 




Jörg
Sellmeyer
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?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.12.2009  
 




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. ^ ^
 
27.12.2009  
 




Frank
Abbing
Den schwarzen Balken kann Yo bestätigen.
 
27.12.2009  
 




Jörg
Sellmeyer
So sieht el entonces de:


mb.jpg  
10 kB
Hochgeladen:27.12.2009
Ladeanzahl146
Descargar
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.12.2009  
 




Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

12.622 Views

Untitledvor 0 min.
Member 862464113.05.2024
Uwe Lang17.12.2018
Andre Rohland08.02.2018
Alibre27.11.2017
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie