Autor Beitrag
Shadow
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 25.06.02 21:10 
Hey was geht?
Folgende Frage: Wie kann ich ohne dir Forms.pas in ein Fenster malen?
Ihr wisst schon was ich meine: Nur mit HWND und so... 8)

Dank im Vorraus

Shadow
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Di 25.06.02 23:15 
Moinsen!

Ich habe ein Buch von Andreas Kosch mit folgendem Code.
Selber habe ich das Programm auch schon gebastelt, doch ich gebe Dir mal den Originalcode. Samt Kommentare und Co.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
{ ****************************************************************
  Source File Name :  Generic.dpr
  Typ              :  Formular-unit
  Autor            :  Andreas Kosch
  Erstellt am      :  14.05.96
  Compiler         :  Delphi 3.0
  Betriebssystem   :  Windows 95
  Beschreibung     :  Generisches Win32-API-Programm
                      (hat Borland bei Delphi 97 anscheinend vergessen)
                      Hart - aber klein. GENERIC.EXE belegt nur
                      28 kByte auf der Festplatte - und das ohne
                      Package-DLLs !!!
  Revisionen       :  31.03.97 Ivory
                      07.06.97 Delphi 3.0 C/S
 **************************************************************** }

program Generic;

{$R GENRES.RES}

uses SysUtils, Windows, Messages;

const
  szClassName = 'DelGen';            // Name der Fensterklasse
  szTitle     = 'Das Grundgerüst';   // Fenstertitel

(* WindowProc ist die Fensterprozedur des generischen Fensters.
   Es wird nur eine einzige Windows-Botschaft ausgewertet, um
   das Programm über das Systemmenü schließen zu können. *)

function WindowProc(Window: HWnd; Message : UINT; wParam: WPARAM;
                    LParam: LPARAM): Longint; stdcall;
begin
  Result := 0;
  case Message of
    wm_Destroy: begin
                  PostQuitMessage(0); // Programm beenden
                  Exit;
                end;
  end;
  Result := DefWindowProc(Window, Message, WParam, LParam);
end;

(* Die Procedure WinMain registriert die Fensterklasse und
   erzeugt ein sichtbares Hauptfenster für das Programm. *)

procedure WinMain;
var
  aWindow     : HWnd;
  WindowClass : TWndClassEx;
  Message     : TMsg;
begin
  // InitApplication
  WindowClass.cbSize := SizeOf(TWndClassEx);
  WindowClass.Style := CS_HRedraw OR CS_VRedraw;
  WindowClass.hInstance := HInstance;
  WindowClass.lpfnWndProc := @WindowProc;
  WindowClass.cbClsExtra := 0;
  WindowClass.cbWndExtra := 0;
  WindowClass.hIcon := LoadIcon(hInstance, PChar('BIG'));
  WindowClass.hIconSm := LoadImage(hInstance, PChar('SMALL'),
                                   IMAGE_ICON, 16, 16, 0);
  WindowClass.hCursor := LoadCursor(0, idc_Arrow);
  WindowClass.hbrBackground := COLOR_WINDOW + 1;
  WindowClass.lpszMenuName := nil;
  WindowClass.lpszClassName := szClassName;
  // Rückgabewert 0 -> Fehlschlag
  if RegisterClassEx(WindowClass) = 0 then
    Halt(1);
  // InitInstance
  aWindow := CreateWindow(szClassName, szTitle, WS_OverlappedWindow,
                          CW_UseDefault, 0, CW_UseDefault, 0,
                          0, 0, HInstance, nil);
  // aWindow = 0 -> Fehlschlag
  if aWindow = 0 then
    Halt(2);
  // Aha - das Fensterhandle ist gültig -> zeigt dich !
  ShowWindow(aWindow, SW_SHOW);
  UpdateWindow(aWindow);
  // Message-Loop wartet auf das Programmende
  while GetMessage(Message, 0, 0, 0) do
  begin
    TranslateMessage(Message);
    DispatchMessage(Message);
  end;
  Halt(Message.wParam);
end;

begin
  WinMain;  // Ein sehr kurzes Hauptprogramm
end.


Grüße

Torsten
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Di 25.06.02 23:18 
Ach ja, die Zeile
{$R GENRES.RES}
kannst Du auskommentieren. In der Datei befinden sich lediglich zwei Icons. Werden nicht wirklich benötigt

Grüße

Torsten
Shadow
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.06.02 10:06 
Titel: NEEEEIN
Das kann ich doch alles. Ich meine Wie kann ich Canvas und Bitblt und soweiter benutzen? Zumbeispiel einen Kreis in diese Form malen???
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Mi 26.06.02 10:18 
Moinsen!

Sorry, da habe ich Dich wohl falsch verstanden.
Da muss ich mich selber erst einmal erkundigen.

Grüße

Torsten
mortus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 26.06.02 12:10 
Tach :)
du musst dir das handle des device context holen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
var dc:HDC;
begin
 dc:=GetDC(handle);
 ellipse(dc,10,10,100,100);
 //bsp: bitblt(dc,0,0,windowwidth,windowheight,dctmp,0,0,srccopy);
 ReleaseDC(handle,dc);
end;
Shadow
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.06.02 19:20 
Titel: Danke
Yo Danke Man.
Hätte ich doch Selber drauf kommen müssen, :oops:
Aber wie ändere ich jetzt die Stift farbe und so??
mortus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 27.06.02 14:04 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
pen:HPEN;
brush:HBRUSH;
begin
 pen:=CreatePen(PS_SOLID,1,$FF0000);
 brush:=CreateSolidBrush($0000FF);
 SelectObject(dc,brush);
 {oder zb SetBKMode(dc,TRANSPARENT) wenn der kreis nicht gefuellt  
 werden soll}
 SelectObject(dc,pen);
 Ellipse(dc,10,10,100,100);
 DeleteObject(pen);
 DeleteObject(brush);
end;


man sollte auch die handle der alten pens, brushes speichern.
schau dir dazu am besten mal die hilfe (Platform SDK) an.