Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [nonVCL] Problem mit Fenster (https://www.delphipraxis.net/82822-%5Bnonvcl%5D-problem-mit-fenster.html)

xZise 20. Dez 2006 09:03


[nonVCL] Problem mit Fenster
 
Ich habe ein Problem, bzw. ein Tester, mit dem Fenster der FileLink-GUI.

Also es erscheinen keine Komponenten...

Vielleicht wisst ihr, woran es liegt?

Ich kann hier (Schule) keinen Code anbieten, aber eigentlich könnt ihr folgenden benutzen:
Delphi-Quellcode:
program FileLink;

uses
  Windows, Messages, CommCtrl;

const
  btnInstall = 5;
  lblStatus = 3;
  lblStatusLabel = 4;

var
  hwndButton, hwndStatusLabel, hwndStatus : DWORD;

{$R FileLink.res}

function WndProc(hWnd: HWND; msg: UINT; wParam: wParam; lParam: LParam) : lresult; stdcall;
var
  font: HFONT;
begin
  result := 0;

  case msg of
    WM_CREATE : begin      

      hwndButton := CreateWindowEx(0, 'BUTTON', 'Installieren',
          WS_VISIBLE or WS_CHILD, 8, 46, 99, 25, hWnd, btnInstall, hInstance,
          nil);
      hwndStatusLabel := CreateWindowEx(0, 'STATIC', 'Status', SS_CENTER or WS_VISIBLE or WS_CHILD, 8, 8, 99, 13, hWnd, lblStatusLabel, HInstance, nil);
      hwndStatus := CreateWindowEx(0, 'STATIC', 'Nicht installiert', SS_CENTER or WS_VISIBLE or WS_CHILD, 8, 27, 99, 13, hWnd, lblStatus, HInstance, nil);

      font := CreateFont(-12, 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,         DEFAULT_PITCH, 'MS Sans Serif');
      if font <> 0 then begin
        SendMessage(hwndStatus, WM_SETFONT, Integer(font), Integer(true));
        SendMessage(hwndStatusLabel, WM_SETFONT, Integer(font), Integer(true));
        SendMessage(hwndButton, WM_SETFONT, Integer(font), Integer(true));
      end;
    end;

    WM_CTLCOLORSTATIC:
      begin
        case GetDlgCtrlId(lParam) of
          lblStatus: begin
            SetTextColor(wParam, RGB(0,200,0))
            SetBkColor(wParam, GetSysColor(COLOR_3DFACE));
          end;
          else Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
        end;
      end;
    WM_DESTROY : PostQuitMessage(0);
    else result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;

var
  wc: TWndClassEx = (
    cbSize         : SizeOf(TWndClassEx);
    Style          : CS_HREDRAW or CS_VREDRAW;
    lpfnWndProc    : @WndProc;
    cbClsExtra     : 0;
    cbWndExtra     : 0;
    hbrBackground  : COLOR_APPWORKSPACE;
    lpszMenuName   : nil;
    lpszClassName  : ClassName;
    hIconSm        : 0;
  );
  icc : TInitCommonControlsEx = (
    dwSize : sizeof(TInitCommonControlsEx);
    dwICC : ICC_INTERNET_CLASSES;
  );
  msg: TMsg;

begin
    wc.hInstance := hInstance;
    wc.hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(2));
    wc.hCursor := LoadCursor(0, IDC_ARROW);
    wc.hbrBackground := GetSysColorBrush(COLOR_3DFACE);

    InitCommonControlsEx(icc);

    RegisterClassEx(wc);

    CreateWindowEx(WS_EX_TOOLWINDOW or WS_EX_APPWINDOW, 'WndClass', 'FileLink', WS_CAPTION or WS_VISIBLE or WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 119, 103, 0, 0, hInstance, nil);

    while GetMessage(msg,0,0,0) do begin
      TranslateMessage(msg);
      DispatchMessage(msg);
    end;

    ExitCode := msg.wParam;
end.

Luckie 20. Dez 2006 09:08

Re: [nonVCL] Problem mit Fenster
 
Verrätst du uns auch noch, was das Problem ist?

MathiasSimmack 20. Dez 2006 10:00

Re: [nonVCL] Problem mit Fenster
 
Steht als Kommentar im Quelltext. :lol:

Luckie 20. Dez 2006 10:06

Re: [nonVCL] Problem mit Fenster
 
Meine Güte, wer sucht denn in den Kommentaren nach der Problembeschreibung. :roll:

MathiasSimmack 20. Dez 2006 10:07

Re: [nonVCL] Problem mit Fenster
 
Ich hab´s auch nur durch Zufall gesehen. ;)

Luckie 20. Dez 2006 10:23

Re: [nonVCL] Problem mit Fenster
 
Zum einen kompiliert der Code gar nicht mal und zum anderen wird da bei mir gar nichts weiß.

Luckie 20. Dez 2006 11:11

Re: [nonVCL] Problem mit Fenster
 
So geht es:
Delphi-Quellcode:
    WM_CTLCOLORSTATIC:
    begin
      case GetDlgCtrlID(lParam) of
        IDC_STC_BANNER:
        begin
          SetTextColor(wParam, RGB(0,255,0));
          result := GetStockObject(WHITE_BRUSH);
        end;
      else
        Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
      end;
    end;

xZise 20. Dez 2006 15:24

Re: [nonVCL] Problem mit Fenster
 
Ne, ne ;) Das Problem ist behoebn ^^
Ich hatte woanders den Quelltext her, weil es der gleiche ist.

Es geht darum, dass er nicht die Buttons (und ich glaube auch Statics) erstellt.

Luckie 20. Dez 2006 19:05

Re: [nonVCL] Problem mit Fenster
 
Zitat:

Zitat von xZise
Es geht darum, dass er nicht die Buttons (und ich glaube auch Statics) erstellt.

Siehst du Mathias, so viel zur Fehlerbeschreibung als Kommntar im Sourcecode. :roll:

DGL-luke 20. Dez 2006 19:22

Re: [nonVCL] Problem mit Fenster
 
also ich weeß ja nit, meine augen sind auch nicht die besten, aber ich seh da beim besten willen nirgends einen kommentar im quelltext?! :shock:

Nils_13 20. Dez 2006 19:27

Re: [nonVCL] Problem mit Fenster
 
Zitat:

Zitat von DGL-luke
also ich weeß ja nit, meine augen sind auch nicht die besten, aber ich seh da beim besten willen nirgends einen kommentar im quelltext?! :shock:

Ich auch nicht und vorhin stand auch überhaupt keins da.

Neutral General 20. Dez 2006 19:30

Re: [nonVCL] Problem mit Fenster
 
Er soll seine Frage nochmal konkret hinschreiben.. Aber die Kommentare standen am Anfang wirklich im Quelltext.. hat er aber anscheinend irgendwie wegeditiert oder so... :gruebel:

xZise 20. Dez 2006 19:49

Re: [nonVCL] Problem mit Fenster
 
1. Frage siehe 1. Post
Zitat:

Zitat von xZise
Also es erscheinen keine Komponenten...

2. Frage siehe 8. Post
Zitat:

Zitat von xZise
Ich hatte woanders den Quelltext her, weil es der gleiche ist.

3. Ja habe ich wegeditiert, weil die nichts mit der Frage zu tun hatten
4. Wäre es vielleicht möglich auf die von mir gestellte Frage zu antworten, statt darüber zu rätseln, wass da stand und was da nicht stand.

(Code)

Luckie 20. Dez 2006 22:09

Re: [nonVCL] Problem mit Fenster
 
Befindet sich in der Ressource ein Manifest oder liegt im Anwendungsverzeichnis ein Manifest? Falls ja, dann musst du InitCommonControls aus der Unit CommCtrl aufrufen. Was anderes fällt mir nicht ein. Aber genau dein Fall hatte ich jetzt auch schon mal und das war die Lösung.

xZise 21. Dez 2006 17:15

Re: [nonVCL] Problem mit Fenster
 
Zitat aus dem 1.Posting:
Zitat:

Zitat von xZise
Delphi-Quellcode:
uses
  Windows, Messages, CommCtrl;
 {...}
    InitCommonControlsEx(icc);

Und das Manifest gibt es extra, allerdings ist es so, dass ich nicht weiß, ob ich das richtig gemacht habe :P Aber ich habe es angenommen, da es an meheren PCs funktioniert (Klassisch/XP-Style).

Luckie 21. Dez 2006 19:23

Re: [nonVCL] Problem mit Fenster
 
Nicht ..Ex., sondern nur InitCommonControls. Anonsten häng mal das komplette Programm an, so wie es bei dir nicht läuft.

MathiasSimmack 22. Dez 2006 08:36

Re: [nonVCL] Problem mit Fenster
 
Normalerweise spricht auch nichts gegen "InitCommonControlsEx", wenn da nicht dieser Bug von Borland wäre ... immer noch ... :roll: Mal schauen, wie viele Jahre ich dieses Thema weiterhin anschneiden kann. :stupid:

Luckie 22. Dez 2006 08:38

Re: [nonVCL] Problem mit Fenster
 
Deswegen, sicher ist sicher. Komm auf die nächsten Delphi-Tage und du kannst dir direkt einen von Borland zur Brust nehmen. ;)

Luckie 16. Jul 2007 20:33

Re: [nonVCL] Problem mit Fenster
 
Was war noch mal der Bug? Ich versuche gerade dein SysLink zum Laufen zu bringen, aber ich bekomme nur ein leeres Fenster. GetlastError sagt nach dem Aufruf von:
Delphi-Quellcode:
    if(CoInitializeEx(nil, COINIT_APARTMENTTHREADED) = S_OK) then
    try
      // für SysLink-Control
      InitCommonControlsEx(icc);
      Writeln(GetLastError);
Zitat:

Das angegebene Modul wurde nicht gefunden.
:gruebel:

MathiasSimmack 16. Jul 2007 21:09

Re: [nonVCL] Problem mit Fenster
 
Work-around: "InitCommonControls" vorher aufrufen.
Fix: Unit patchen (so wie in den Tutorials gezeigt)

Luckie 16. Jul 2007 21:29

Re: [nonVCL] Problem mit Fenster
 
Danke geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 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