Einzelnen Beitrag anzeigen

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