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 DialogBox Anwendung mit WideChar's (peinlich) (https://www.delphipraxis.net/11075-dialogbox-anwendung-mit-widechars-peinlich.html)

neolithos 30. Okt 2003 17:09


DialogBox Anwendung mit WideChar's (peinlich)
 
:duck: Ich weiß es ist peinlich und ich kenn den Fehler schon, aber es ist leider lange her!!! :oops:

Delphi-Quellcode:
const
// -- Hauptdialog --
  dlgMain : PWideChar = PWideChar(100);


procedure Main;
begin
  if DialogBoxW(HInstance, dlgMain, GetDesktopWindow, @MainDlgProc) = -1 then
     Writeln(GetLastError);
//     MessageBoxW(0, 'Unable to load main window!', nil, MB_OK or MB_ICONERROR);
  readln;
end;
Warum erhalte ich den Windows-Fehler 1400?
Was habe ich vergessen? :pale:
Warum geht das in einem anderen Project? :gruebel:

neolithos 31. Okt 2003 01:35

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Altes Win3.1 Programm gefunden! *ätsch selber gelöst*

Man muss genauso wie bei Delphi-Applicationen eine kleines Fenster (genauer größe: 0 x 0) davor schalten.

Denn in der MSDN steht das bei DialogBox das Parent-Fenster nicht null oder ein ungültiges Fenster sein darf.

:roll:

neolithos 31. Okt 2003 01:38

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Das Fenster muss nicht zum selben Process gehören. Denke ich das sonst ein anderes Prog. von mir gar nicht funktionieren dürfte. :shock: :gruebel:

Weis das einer zufällig genau?
:nerd:

Luckie 31. Okt 2003 08:37

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Fehler 1400:
Zitat:

Zitat von PSDK
1400 Invalid window handle. ERROR_INVALID_WINDOW_HANDLE

Der zweite Parameter sieht mir etwas falsch aus:
Zitat:

Zitat von PSDK
lpTemplate
[in] Specifies the dialog box template. This parameter is either the pointer to a null-terminated character string that specifies the name of the dialog box template or an integer value that specifies the resource identifier of the dialog box template. If the parameter specifies a resource identifier, its high-order word must be zero and its low-order word must contain the identifier. You can use the MAKEINTRESOURCE macro to create this value.

Sprich da gehört die ID deines Dialoges aus der Ressourcendatei rein und zwar so:
Delphi-Quellcode:
MAKEINTRESOURCE(100)
Wenn der Dialog in der Ressource die ID 100 hat.

Und warum rufst du DialogBoxW explizit selber auf? Windows NT/2000/XP machen dies automatisch. Alle anderen Betriebssysteme dürften damit erst gar nichts anfangen können.

neolithos 31. Okt 2003 12:01

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Übrigens MakeIntResource macht nix anderes als den Zeigerwert einer Zeichenkette setzen.

Darum gehen solche konstrukte wie...

Delphi-Quellcode:
  dlgMain : PChar = PChar(100);
PInteger(@dlgMain)^ = 100 in dem fall.

DialogBoxW hatte ich verwendet weil ich eine UniCode-Version meines Programmes erstellen wollte!

Das wollte ich gerate mit diesem Programm erbroben.

Geht das anders besser?

Denn ich dachte DialogBox erstellt nur eine Ansi-Version...

Luckie 31. Okt 2003 12:26

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Unicode und Delphi sind zwei Welten für sich. In VC setzt man einfach den Schalter UNICODE und fertig ist. Unter Delphi dürfte das einige Probleme bereiten. Allerdings kenne ich nich da ganz und gar nicht aus. Assarbad weiß da mehr.

neolithos 31. Okt 2003 12:41

Re: DialogBox Anwendung mit WideChar's (peinlich)
 
Ich weis es jetzt warum genau der 1400-terter kam.

Folgendes:

Ich hatte ein ManiFest in meiner Resource.
D.h. die Button-Controls werden aus der CommCtrl genommen.
Dummerweise hatte ich kein InitCommonCtrls abgeschickt.



Trotzdem, sehr irreführende Fehlernummer! :x

Übergeordnetes Fenster entfernt und Ursprungscode (siehe Oben + InitCommonCtrls) hergestellt.
und es ging.


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