AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erstellen

Ein Thema von Thomas233 · begonnen am 30. Aug 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#1

Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erstellen

  Alt 30. Aug 2005, 22:45
Hallo,

ich würde gerne eine NonVCL-Anwendung erstellen die das Anwendungsfenster aus einer Dialogvorlage erstellt.

Ich habe mir deswegen mal Assabards NonVCL-Tutorial angeschaut und bin so ähnlich wie dort beschrieben vorgegangen.

Zuerst starte ich also MS Visual C mit dem ich die Dialogvorlage erstellt habe (als rc-Datei). Dann passte ich die Datei entsprechend an und schmiss den ganzen MFC-Blödsinn raus damit ich die Datei mit dem Ressourcen-Compiler von Delphi entsprechend umwandeln konnte. Folgendes wandelte ich dann auch um (ohne Probleme):
Code:
//main2.rc -> Umgewandelt in main2.res
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

100 DIALOGEX 0, 0, 249, 191
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
    WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Route Installer for Bve"
FONT 8, "Arial"

BEGIN
    CONTROL        "",101,"Static",SS_BLACKFRAME,9,22,109,85
    EDITTEXT       102,128,22,114,57,ES_AUTOHSCROLL | NOT
                    WS_BORDER
    LTEXT          "<AUTHOR>",103,128,86,113,8
    LTEXT          "<URL>",104,128,99,113,8
    CTEXT          "<ROUTE>",105,9,3,233,16
    GROUPBOX       "Setup",106,9,118,231,27
    LTEXT          "<BVE>",107,16,130,134,9
    PUSHBUTTON     "...",108,156,128,16,12
    PUSHBUTTON     "Install now...",109,178,126,58,15
    GROUPBOX       "Installation process",110,9,154,231,26,NOT
                    WS_VISIBLE
    CONTROL        "Progress1",111,"msctls_progress32",
                    NOT WS_VISIBLE | WS_BORDER,15,164,220,11
    PUSHBUTTON     "OK", IDOK, 61, 65, 40, 14
    PUSHBUTTON     "Abrechen", IDCANCEL, 160, 65, 40, 14
END
So, nun öffnete ich Delphi und erstellte eine neue Anwendung, da ich nichts geeignetes für die NonVCL lieh ich mir dazu eine Konsolenanwendung aus und schmiss den ganzen Konsolen-Blödsinn raus.
Daraus entstand dann folgender Programmcode in der DPR-Datei:

Delphi-Quellcode:
program routeinstaller2;

uses
  windows,
  messages;

{$WARNINGS OFF}
{$R main2.res}

var
  hdlg: DWORD = 0;

function dlgfunc(hwnd: hwnd; umsg: dword; wparam: wparam;
 lparam: lparam): bool; stdcall;
begin
  result := true;
  case umsg of
    WM_INITDIALOG:
      begin

      end;
    WM_CLOSE:
      EndDialog(hWnd, 0);
    WM_DESTROY:
      begin
        PostQuitMessage(0);
      end;
    {WM_COMMAND:
      if hiword(wparam) = BN_CLICKED then begin
        case loword(wparam) of
          IDCANCEL,
          IDOK:
            sendmessage(hwnd,WM_CLOSE,0,0);
        end;
      end;}

  else result := false;
  end;
end;

begin
  hdlg := DialogBox(hInstance, MAKEINTRESOURCE(100), 0, @dlgfunc);
end.
Trotz einiger Variationen konnte ich nach dem kompilieren & starten der Anwendung kein entsprechendes Anwendungsfenster entdecken, das Programm beendete sich auch gleich nach dem Start ohne mein Zutun.

Liegt es vielleicht am neuen Delphi oder habe ich woanders etwas falsch gemacht ?

Ich wäre euch echt dankbar wenn ihr mir hierbei (wieder mal) helfen könntet.

Vielen Dank !

Mit freundlichen Grüßen,
Thomas Tschofenig
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 30. Aug 2005, 23:12
Zitat:
[...] habe ich woanders etwas falsch gemacht
Code:
[b]begin[/b]
  [color=#ff0000][b]InitCommonControls;[/b][/color]
  hdlg := DialogBox(hInstance, MAKEINTRESOURCE(100), 0, @dlgfunc);
[b]end.[/b]
...nicht vergessen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 30. Aug 2005, 23:19
InitCommonControls; -> "Undefinierter Bezeichner"

Muss etwa in die uses-Klausel noch was rein ?

Seltsam, seltsam...

Trotzdem danke erstmal !

Mit freundlichen Grüßen,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 30. Aug 2005, 23:31
InitCommonControls ist in der unit CommCtrl.

// Wass ich noch erklären wollte, so etwas kommt vor wenn du auf dem Dialog Controls erstellt hat, die auf die Common Controls zugreifen z.B. die ProgressBar.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 07:34
Zitat von Thomas233:
Zuerst starte ich also MS Visual C mit dem ich die Dialogvorlage erstellt habe (als rc-Datei). Dann passte ich die Datei entsprechend an und schmiss den ganzen MFC-Blödsinn raus damit ich die Datei mit dem Ressourcen-Compiler von Delphi entsprechend umwandeln konnte.
Es gibt eine Batchdatei, die beim Visual Studio 6 dabei ist und evtl. auch bei deiner MS VC-Version dabei sein sollte. Diese Batch ("VcVars32.bat") kannst du starten, und dann kann auch der Compiler von Borland auf den MFC-Blödsinn zugreifen und dein Ressourcenskript kompilieren.

Das mache ich so, und ich spare mir damit jede Menge Arbeit, wenn ich das Skript dann doch noch mal im Editor des Visual Studio 6 bearbeiten muss/möchte.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 09:33
Zitat von MathiasSimmack:
Das mache ich so, und ich spare mir damit jede Menge Arbeit, wenn ich das Skript dann doch noch mal im Editor des Visual Studio 6 bearbeiten muss/möchte.
Ich nehme einfach den RC aus dem PSDK ... auch cool, wa? ... erspart mir die gleiche Arbeit und das Starten besagter Batchdatei

@Thomas233: Nimm mal lieber Luckies Tutorials. Meins ist so veraltet und existiert auch nur noch, weil ich zu faul war es zu entfernen ...
Auf die Common Controls bin ich ja garnicht eingegangen. Übrigens, wenn man ein Richedit benutzt, muß man auch vorher eine DLL laden (je nach Richedit-Version)
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 12:33
Hallo,

ah, deswegen. Danke.

Das mit dem Ressourcen-Skript ist kein Problem, ich schmeisse einfach nach jeder Änderung das MFC-Zeug raus, ist kein besonderer Aufwand. Ich behalte die rc-Datei ausserdem ja eh für spätere Änderungen.

@MathisSimmack:
Hmm..kann mir eigentlich auch noch vorstellen das da irgendwas gekürtzt wird (bzw. die Verweise auf die Header geändert werden), denn was sollte Delphi mit der MFC anfangen ? Oder liege ich da falsch ?

@Olli:
Ach deswegen wollt`s so nicht

@turboPascal:
Danke !

Hab da gleich wieder drei Fragen:
1) Kann man den Dialog irgendwie einfärben (im Skript oder nachträglich)?
2) Wenn ich Text darstellen möchte, was eignet sich dann am besten dafür ? Ich hab ein Edit genommen, ist aber nicht die optimale Lösung weil da keine Zeilenümbrüche gehen. Ein Memo wäre da optimal (ich mag aber jetzt nicht extra deswegen eines entwickeln *g*
3) Ich möchte nachträglich ein Bitmap auf dem Dialog anzeigen (in einem bestimmten Bereich. Momentan habe ich deswegen ein Bild-Control aus MS VC genommen und es auf dem Dialog platziert (leer gelassen). Könnte es so funktionieren oder gäbe es eine bessere Lösung ?

Bin mit NonVcl leider noch nicht so vertraut.

Vielen Dank im Vorraus !

Liebe Grüße,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 13:07
Zitat von Thomas233:
1) Kann man den Dialog irgendwie einfärben (im Skript oder nachträglich)?
Du kannst WM_ERASEBKGND abfangen, den Dialog zeichnen und dann TRUE zurückgeben. Ist aber nicht ganz trivial weil dann ggf. die 3D-Ränder nicht mehr passen - schau' dir dazu auch WM_GETCTLCOLOR an.

Zitat von Thomas233:
2) Wenn ich Text darstellen möchte, was eignet sich dann am besten dafür ? Ich hab ein Edit genommen, ist aber nicht die optimale Lösung weil da keine Zeilenümbrüche gehen. Ein Memo wäre da optimal (ich mag aber jetzt nicht extra deswegen eines entwickeln *g*
Ein EDIT kann auch mehrere Zeilen, du musst nur ES_MULTILINE setzen.

Zitat von Thomas233:
3) Ich möchte nachträglich ein Bitmap auf dem Dialog anzeigen (in einem bestimmten Bereich. Momentan habe ich deswegen ein Bild-Control aus MS VC genommen und es auf dem Dialog platziert (leer gelassen). Könnte es so funktionieren oder gäbe es eine bessere Lösung ?
Soweit ich weiß gibt's für STATIC ein SS_BITMAP - da kann man direkt über den Namen eine Bitmap-Ressource einbinden.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 14:55
Zitat:
Du kannst WM_ERASEBKGND abfangen, den Dialog zeichnen und dann TRUE zurückgeben. Ist aber nicht ganz trivial weil dann ggf. die 3D-Ränder nicht mehr passen - schau' dir dazu auch WM_GETCTLCOLOR an.
Ok, wird gemacht.

Zitat:
Ein EDIT kann auch mehrere Zeilen, du musst nur ES_MULTILINE setzen.
Achso. Muss ich das bereits im Visual C Editor machen ? Welches Zeichen wird dann als Zeichenumbruch verwendet ?

Zitat:
Soweit ich weiß gibt's für STATIC ein SS_BITMAP - da kann man direkt über den Namen eine Bitmap-Ressource einbinden.
Lässt sich das Bitmap auch nachträglich (mit Delphi) irgenwie laden ? Es steht nähmlich erst zur Laufzeit fest was da geladen werden sollte...

Vielen Dank Volker !

Mit freundlichen Grüßen,
Thomas Tschofenig
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Mit Delphi 2005 NonVCL-Anwendung aus Dialogvorlage erste

  Alt 31. Aug 2005, 15:04
Zitat von Thomas233:
Zitat:
Ein EDIT kann auch mehrere Zeilen, du musst nur ES_MULTILINE setzen.
Achso. Muss ich das bereits im Visual C Editor machen ?
Genau.

Zitat von Thomas233:
Welches Zeichen wird dann als Zeichenumbruch verwendet ?
Normal: CR/LF bzw. #13#10. Wenn du KEINEN horizontalen Scrollbalken angibst, dann sollte der Text auch automatisch umgebrochen werden.

Nachtrag: direkt im Resource-Skript allerdings "\r\n" (C-Notation)

Zitat von Thomas233:
Zitat:
Soweit ich weiß gibt's für STATIC ein SS_BITMAP - da kann man direkt über den Namen eine Bitmap-Ressource einbinden.
Lässt sich das Bitmap auch nachträglich (mit Delphi) irgenwie laden ? Es steht nähmlich erst zur Laufzeit fest was da geladen werden sollte...
Du lädst die Bitmap mit LoadBitmap oder LoadImage und schickst sie dann an das Control:
SendDlgItemMessage(hDlg, 123, STM_SETIMAGE, IMAGE_BITMAP, hBitmap); - hDlg = Fensterhandle des Dialogs
- 123 = ID des Static-Controls
- hBitmap = Bitmap-Handle, Rückgabewert von LoadBitmap/LoadImage
Macht man normalerweise bei WM_INITDIALOG.

Ich denke, dass man für die Ressourcenverwaltung dann selbst zuständig bist (also abschließend ein DeleteObject mit dem Handle machen).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz