Français
Source/ Codesnippets

Hyperlinks Messagebox Option

 
Andreas Miethe, URL=www.paules-pc-forum.de/forum/spezielles/123967-messagebox-avec-option.html#poste754182, ZEITPUNKT=26.12.2009
Messagebox avec Option
une kleine Spielerei avec einer Messagebox et einem Hook.
peut-être kanns oui quelqu'un 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&
Déclarer Hook&,OldProc&
Déclarer B&,B1&

Proc MB

    Paramètres wnd&,msg&,wparam&,lparam&
    Déclarer Result&

    sélectionner 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& = Créer("CheckBox",wnd&,"Diese annonce pas wieder 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

        Si lparam& = b&

            Si Getcheck(B&)

                B1& = 1

            Endif

        Endif

        Caseof ~WM_NCDESTROY

        ~UnhookWindowsHookEx(Hook&)
        Result& = 1

    Endselect

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

ENDPROC

Proc SetHook

    Paramètres nCode&, wParam&, lParam&

    Select nCode&

        Caseof ~HC_ACTION

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

        Si pw#.message& = ~WM_INITDIALOG

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

        Endif

    EndSelect

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

ENDPROC

Proc PRF_Messagebox

    Set("Fastmode",1)
    Paramètres  body$, title$, flags&
    Déclarer Result&
    Flags& = Flags& | ~MB_ICONQUESTION
    Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
    Result& = MessageBox(title$,body$, flags&)
    Set("Fastmode",0)
    Retour Result&

ENDPROC

cls
Imprimer PRF_Messagebox("Titel","Wirklich effacer ? ",~MB_YESNO)
Imprimer IF(B1&=1,"Nicht wieder anzeigen","wieder anzeigen")
Waitinput

Gruss
Andreas


aussi très joli avec Hyperlinks:  [...] 

Andreas Miethe, Beitrag=55999, Zeitpunkt=06.02.2010
Per Hook allez une la quantité
 $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

    Paramètres wnd&,msg&,wparam&,lparam&
    Déclarer Result&,W&,H&,b&
    Result& = ~CallWindowProc(OldProc&,wnd&,msg&,wparam&,lparam&)

    sélectionner msg&

        Caseof ~WM_INITDIALOG

        Var SRect# = New(Rect)
        ~GetWindowRect(wnd&,SRect#)
        Dialog vergrössern et 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 qui Controls 40 Pixel pour 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

            Si ~IsWindow(~GetDlgItem(wnd&,&Boucle))

                ~Getwindowrect(~GetDlgItem(wnd&,&Boucle),SRect#)
                ~Mapwindowpoints(0,wnd&,SRect#,2)
                ~Setwindowpos(~GetDlgItem(wnd&,&Boucle),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 sous PROMPT anlegen
        Link& = Contrôle("SysLink","<a>Besuch mon 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& = Contrôle("SysLink","<a>Schick mir une Mail</a>",$50000000,SRect#.Left&,SRect#.Bottom&+30,width(wnd&),18,wnd&,4001,0,0)
        SendMessage(Mail&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
        Dispose SRect#
        Result& = 1

        Caseof ~WM_NOTIFY

        Link abfragen

        Si (Long(lparam&,8) = -2) and (Long(lParam&,0) = LINK&)

            ShellExec("https://www.ampsoft.eu","open",~SW_SHOWNORMAL)

        endif

        Si (Long(lparam&,8) = -2) and (Long(lParam&,0) = Mail&)

            ShellExec("Mailto://","open",~SW_SHOWNORMAL)

        endif

        Result& = 1

        Caseof ~WM_NCDESTROY

        ~UnhookWindowsHookEx(Hook&)
        Result& = 1

    Endselect

    Retour Result&

ENDPROC

Proc SetHook

    Paramètres nCode&, wParam&, lParam&

    Select nCode&

        Caseof ~HC_ACTION

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

        Si pw#.message& = ~WM_INITDIALOG

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

        Endif

    EndSelect

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

ENDPROC

Proc PRF_Messagebox

    Set("Fastmode",1)
    Paramètres  body$, title$, flags&
    Déclarer Result&
    Hook& = ~SetWindowsHookEx(~WH_CALLWNDPROC, ProcAddr("SetHook",3), 0,~GetCurrentThreadId())
    Result& = MessageBox(title$,body$, flags&)
    Set("Fastmode",0)
    Retour Result&

ENDPROC

ici gehts à l'attaque
Déclarer Hook&,OldProc&
Déclarer LINK&,Mail&
cls
Imprimer PRF_Messagebox("Eine Frage...","Wirklich effacer ?",~MB_YESNOCANCEL | ~MB_DEFBUTTON2 | ~MB_ICONQUESTION | ~MB_APPLMODAL)
Waitinput
 
27.12.2009  
 



EndProcedure im Code geändert dans ENDPROC.


4 kB
Hochgeladen:27.12.2009
Downloadcounter92
Download
 
27.12.2009  
 




Dietmar
Horn
Hab je déjà avant Stunden juste im XProfan-Manager et dans meiner Quellcodeammlung gebunkert, avec cela une solche "Perle" qui Allgemeinheit pas 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 im Code geändert dans ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?
Hoffentlich venez là pas irgendwann la fois un Mischmasch
raus, den aucun plus compilieren peux.
 
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 im Code geändert dans ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?


Stereo ???

Delphi,Java,C,VB usw.usf.

là muss on déjà aufpassen, dass on pas durcheinander venez
 
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 im Code geändert dans ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?
Hoffentlich venez là pas irgendwann la fois un Mischmasch
raus, den aucun plus compilieren lesen peux.


voilà iF doch déjà longtemps arrivé
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.12.2009  
 




Andreas
Miethe


ici encore un bunteres Beispiel avec Minuteur pour automatisches Schliessen.
KompilierenMarqueSéparation
 $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 wieder anzeigen","wieder anzeigen") Waitinput

8 kB
Kurzbeschreibung: VISTA
Hochgeladen:27.12.2009
Downloadcounter122
Download
6 kB
Kurzbeschreibung: XP
Hochgeladen:27.12.2009
Downloadcounter112
Download
 
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
très joli! chez mir wird allerdings, statt des Textes dans qui Checkbox, seulement un schwarzer poutre angezeigt.
Ist eigentlich dein ~DeleteObject() autre chose comme cela profane ou bien pourrait on aussi simple DeleteObject h& verwenden?
 
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
très joli! chez mir wird allerdings, statt des Textes dans qui Checkbox, seulement un schwarzer poutre angezeigt.
Ist eigentlich dein ~DeleteObject() autre chose comme cela profane ou bien pourrait on aussi simple DeleteObject h& verwenden?


Relatif à la schwarzen poutre verstehe je pas, je habs oui extra sous XP getestet et fotografiert.

~DeleteObject() ou bien profanes DeleteObject ist wohl cela 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 im Code geändert dans ENDPROC.

Programmierste stereo -> PureBasic + XProfan ?


alors je hab ne...aucune PB et coutume aussi keins afin de savons, dass EndProcedure wohl un ENDPROC hätte volonté devoir. ^ ^
 
27.12.2009  
 




Frank
Abbing
Den schwarzen poutre peux je bestätigen.
 
27.12.2009  
 




Jörg
Sellmeyer
So sieht cela ensuite aus:


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




Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

12.664 Views

Untitledvor 0 min.
Member 862464113.05.2024
Uwe Lang17.12.2018
Andre Rohland08.02.2018
Alibre27.11.2017
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie