Dialogresource mit PB 3.94 nutzen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Dialogresource mit PB 3.94 nutzen

Beitrag 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
Zuletzt geändert von ts-soft am 26.09.2005 13:20, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag 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
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Du benutzt eine veraltete PB-Version, oder PB unter Linux/Amiga/MacOS
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten