Zitat von
GeorgPeifer:
Die Control ID 65535 ist allerdings offenbar unter GetDlgItem(ColorDialog1.Handle,65535) dem Label "Grundfarben" zugeordnet.
Wenn du dir mit einem Resource Explorer wie ResHacker die COMDLG32.DLL anschaust, wirst du sehen das die STATIC's "Grundfarben" und "Benutzerdefinerte Farben" die Control ID -1 haben. So kommt halt der Wert 65535 zu stande.
Hab dir mal ein kleines Beispiel geschrieben wie du im OnShow Ereignis von TColorDialog die Fensterhandles ermitteln und den Text ändern kannst.
Delphi-Quellcode:
procedure TForm1.ColorDialog1Show(Sender: TObject);
const
BASIC_COLORS = '
Basic Colors:' + #0;
CUSTOM_COLORS = '
Custom Colors:' + #0;
var
ChildHWnd: HWND;
begin
// Fensterhandle für "Grundfarben" ermitteln
// ist das erste Control auf dem Dialog
ChildHWnd := GetWindow((Sender
as TColorDialog).Handle, GW_CHILD);
// Handle gefunden?
if IsWindow(ChildHWnd)
then
begin
// "Grundfarben" in "Basic Colors" ändern
SendMessage(ChildHWnd, WM_SETTEXT, 0, Longint(PChar(BASIC_COLORS)));
// Fensterhandle für "Benutzerdefinierte Farben" finden
// ist das dritte Control
ChildHWnd := GetWindow(ChildHWnd, GW_HWNDNEXT);
// Zweites Control gefunden?
if IsWindow(ChildHWnd)
then
begin
// weiter machen... um drittes Control zu ermitteln
ChildHWnd := GetWindow(ChildHWnd, GW_HWNDNEXT);
// Handle gefunden?
if IsWindow(ChildHWnd)
then
// "Benutzerdefinierte Farben" in "Custom Colors" ändern
SendMessage(ChildHWnd, WM_SETTEXT, 0, Longint(PChar(CUSTOM_COLORS)));
end;
{end if}
end;
{end if}
end;
{end procedure}
Getestet habe ich das nur unter Windows XP. Ich denke aber mal, das sich seit Windows 95 daran nichts geändert hat.