Seite 1 von 9

Dialogresource mit PB 3.94 nutzen

Verfasst: 31.07.2005 01:57
von ts-soft
Hab mal eine sehr simple Dialogbox als ResourceSkript erstellt und ein Beispiel beigefügt, das diese benutzt. Zum erstellen gibt's diverse Tools, z.B. die IDE von PellesC.

Dialog.rc

Code: Alles auswählen

// Einfache AboutBox für PureBasic
// by TS-Soft
1000 DIALOG 0, 0, 109, 52
LANGUAGE LANG_NEUTRAL, 0
STYLE DS_CENTER | DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_DLGFRAME | WS_POPUP | WS_SYSMENU | WS_VISIBLE
FONT 9, "Arial"
CAPTION "Über..."
BEGIN
    CONTROL         "PureBasic 3.94  Beta 4                   Feel the ...Pure... Power", 1001, "Static", WS_GROUP | WS_VISIBLE, 19, 7, 102, 20
    CONTROL         "&Okay", 1002, "Button", BS_BOTTOM | BS_CENTER | BS_DEFPUSHBUTTON | BS_TOP | WS_MAXIMIZEBOX | WS_VISIBLE, 35, 30, 50, 15
END 
jetzt noch der Beispielcode:

Code: Alles auswählen

; Simples Beispiel für eine AboutBox als Resource
; erstellt von TS-Soft

;/############################################################################
Procedure GetResDialog(DialogId, *DialogProcedure)
  ProcedureReturn DialogBoxParam_(GetModuleHandle_(0), DialogId, 0, *DialogProcedure, 0)
EndProcedure
;/############################################################################


;/ Deklaration von Konstanten
; #define IDD_DLG1 1000
; #define IDC_LBL1 1001
; #define IDC_BTN1 1002
#IDD_DLG1 = 1000
#IDC_LBL1 = 1001
#IDC_BTN1 = 1002

; Beispiel einer DialogProcedure
Procedure DlgProc(hDlg, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_INITDIALOG
      MessageBeep_(#MB_ICONINFORMATION)
    Case #WM_CLOSE
      EndDialog_(hDlg, 0)
    Case #WM_COMMAND
      ID = wParam & $FFFF
      Select ID
        Case #IDC_BTN1
          EndDialog_(hDlg, #IDC_BTN1) ; 1002 als Rückgabewert bei okay
      EndSelect
  EndSelect
EndProcedure

; Aufruf der DialogResource
Select GetResDialog(#IDD_DLG1, @DlgProc())
  Case 0
    MessageRequester("Dialog-Test", "Dialog wurde geschlossen")
  Case #IDC_BTN1
    MessageRequester("Dialog-Test", "Benutzer hat Okay gedrückt zum beenden")
EndSelect
Einfach das obige Skript als Dialog.rc abspeichern und in der neuen IDE als Resource hinzugügen.
Diese Dialoge reagieren auch so wie man es von modalen Dialogen gewohnt ist :wink:

//Edit: Dialog.rc geändert

Verfasst: 31.07.2005 12:16
von FGK
Hallo ts-Soft

wollte dein Beispiel ausprobieren,

leider hagelt es bei mir Fehlermeldungen!
hier der Screenshot.

Bild

Was mach ich falsch?

Gruß

FGK

Verfasst: 31.07.2005 16:26
von hardfalcon
Du benutzt eine veraltete PB-Version, oder PB unter Linux/Amiga/MacOS

Verfasst: 31.07.2005 16:38
von Leo
hardfalcon hat geschrieben:Du benutzt eine veraltete PB-Version, oder PB unter Linux/Amiga/MacOS
Linux/AmigaOS benutzt er sicher nicht, wie man am Pfad sehen kann :allright:

Verfasst: 31.07.2005 16:52
von ts-soft
@FGK
Die Zeilen vom ResouceSkript scheinen nicht mit CRLF abgeschlossen zu sein, vielleicht liegts am Editor, am besten Billy's bestes Stück nehmen "Notepad.exe"
Hab die Sourcen und die Exe mal gezippt, kannste Dir hier laden (3,7 kibibyte): http://www.purebasic.ts-soft-online.de/dl/dialog.zip
Ich habs nur unter WinXP getestet, sollte aber unter Win9x genauso gehen.

Verfasst: 31.07.2005 17:25
von FGK
@ts-Soft

ich hab mir deine Zip gezogen und es mit deinem Source und deiner .rc
versucht

hier der Fehler-Requester. Besser aber noch nicht gut!

Bild

Ich denke obwohl Hardfalcon einfach wieder mal ohne richtig zu lesen gleich mal gepostet hat scheint er doch durch Zufall etwas Recht zubehalten. Ich denke fast es liegt an meinem PureBasic.
Ich benutze die Version 3.94 Beta 4 unter XP SP2
Deine Exe funktioniert so wie sie es sollte.
Hintergrund der ganzen Sache warum ich mich so dafür interessiere ist der ev. könnte man ganze Prog-GUI als Ressource vorbereiten und einfach mit eincompilieren (z.B. Config-Screens, Auswahlrequester usw.)
Wäre ne tolle Sache.

Gruß

FGK

Verfasst: 31.07.2005 17:45
von ts-soft
FGK hat geschrieben: Hintergrund der ganzen Sache warum ich mich so dafür interessiere ist der ev. könnte man ganze Prog-GUI als Ressource vorbereiten und einfach mit eincompilieren (z.B. Config-Screens, Auswahlrequester usw.)
Wäre ne tolle Sache.

Gruß

FGK
Warum es bei Dir nicht geht, ist mir ein Rätsel.
So wie Du es Dir vorstellst (wenn's klappen würde), so ist es ja auch gedacht. Z.B. TipOfTheDay als Resource, AboutBox usw. Mit ein bißchen Übung ist das erstellen solcher Resourcen ja auch nicht schwer. Vor allem werden diese Resourcen ja nur bei Bedarf von Windows geladen. Belegen also nicht ständig RAM.

Verfasst: 05.08.2005 21:28
von Falko
FGK hat geschrieben:@ts-Soft

ich hab mir deine Zip gezogen und es mit deinem Source und deiner .rc
versucht

hier der Fehler-Requester. Besser aber noch nicht gut!

Bild

Ich denke obwohl Hardfalcon einfach wieder mal ohne richtig zu lesen gleich mal gepostet hat scheint er doch durch Zufall etwas Recht zubehalten. Ich denke fast es liegt an meinem PureBasic.
Ich benutze die Version 3.94 Beta 4 unter XP SP2
Deine Exe funktioniert so wie sie es sollte.
Hintergrund der ganzen Sache warum ich mich so dafür interessiere ist der ev. könnte man ganze Prog-GUI als Ressource vorbereiten und einfach mit eincompilieren (z.B. Config-Screens, Auswahlrequester usw.)
Wäre ne tolle Sache.

Gruß

FGK

@ts-soft . Läuft bei mir ohne Probleme. Super Tip :allright:

@FGK. Ich Glaube nicht, das es was mit deinem OS zu tun hat. Ich selbst
habe WinXP - Pro - SP2 mit allen aktuellen Updates drauf.

Hast du mal die aktuellen Beta-Librarys in dein PB3.94 Beta 4 kopiert?

www.purebasic.com/beta ?

Es könnte evt. vielleicht hiermit zusammen hängen. Da ich vorher auch
Probs mit der Beta 3 hatte, habe ich nach Fred's Aufforderung PB nochmal
neu darüberinstalliert. Zu derzeit hatte ich auch diese Polink-Fehler, die
wohl daher kamen, das ich vor dem Update noch mit PB experimentiert
hatte und danach dann das Update ausgeführt hatte. Die Vermutung lag
dahin, das in PB noch Prozesse wie der Compiler oder ... gelaufen hatten
und beim Update, einige Teile nicht aktualisiert wurden.

Bei der Beta 4 habe ich es diesesmal so gemacht, das ich vor dem Update
den Rechner erst mal neu gestartet hatte, um sicher zu gehen, das danach nix von PB irgendwo im Speicher liegt. Danach das nochmal Update ausgeführt.
Vielleicht hilft's auch bei dir.

MfG Falko

Verfasst: 26.09.2005 12:29
von FGK
Hi ts-soft,

mich hat die Sache mit den Resourcen nicht in Ruhe gelassen.
Mir fehlen sinnvolle Rückmeldungen von anderen PB-Usern
ob sie dein Resourcen-Script unter PB eingebunden compiliern konnten oder nicht. Ich bin der Sache mal nachgegangen - ich vermute die
Fehlermeldungen kommen daher da die ganzen Konstanten für
den Dialog (z.B. DS_SETFONT |DS_MODALFRAME |DS_CENTER |WS_POPUP |WS_CAPTION ) nicht deklariert sind. Ich vermute du hast dir das Pelles C installiert? Ich hab mir es auch downgeloaded und mit Hilfe der IDE ein Resourcenscript erstellt welches ebenfalls wegen fehlender Includes nicht compiliert wird. Die Frage ist nun wie hast du es geschafft?
Wäre echt schön wenn wir mein Problem lösen könnten - diese Methode birgt so viel Potenzial daß ich nicht einfach so aufgeben will.

Gruß

FGK

Verfasst: 26.09.2005 12:48
von ts-soft
Ich bin da leider noch nicht hinter gekommen, warum es nur bei wenigen Funktioniert. Ich nehme mal an, das ich abgesehen von PellesC irgendwas installiert habe, was genutzt wird. Da gibt es nunmal sehr viele Möglichkeiten, vom Framework SDK bis was weiß ich.
Als Resource Editor hab ich übrigens noch was anderes für mich entdeckt: http://radasm.visualassembler.com/projects/ResEd.zip
Sobald ich Lust habe, werde ich in der Richtung weiter Experimentieren.
Würde gerne sowas wie TipOfTheDay als wiederverwendbare Resource erstellen. Bloß wenns dann nur bei mir geht :( bringt es ja nicht viel