Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CueBanner funktioniert nicht (https://www.delphipraxis.net/102389-cuebanner-funktioniert-nicht.html)

Neutral General 27. Okt 2007 16:03


CueBanner funktioniert nicht
 
Hi,

Ich versuche gerade verzweifelt einem Edit (non-VCL) ein CueBanner zu verpassen.
Habe mir EM_SETCUEBANNER selbst definiert weil ich die CommCtrl.pas nicht einbinden will.

Delphi-Quellcode:
const
  EM_SETCUEBANNER = $1501;

var Str: PWideChar;
begin
  GetMem(Str,Length('Test')*SizeOf(WideChar));
  lstrcpyW(Str,'TEST');
  SendMessage(Handle,EM_SETCUEBANNER,0,lparam(Str));
  FreeMem(Str);
end;
Das funktioniert aber nicht. SendMessage liefert immer false. Edit_SetCueBanner funkioniert auch nicht.

Delphi-Quellcode:
Edit_SetCueBanner(Handle,'TEST');
Liefert auch false...

Mit der VCL funktioniert es aber...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit_SetCueBanner(Edit1.Handle,'TEST'); // geht...
end;
Ich weiß jetzt grad nicht so genau was ich falsch mache -.-

Gruß
Neutral General

Daniel 27. Okt 2007 18:25

Re: CueBanner funktioniert nicht
 
Hat Dein NonVCL-Projekt ein Manifest eingebunden, welches die Verwendung der Common-Controls V.6 erzwingt? Meines Wissens ist das nämlich nötig, um die Cue-Banner zu nutzen.

Neutral General 27. Okt 2007 18:27

Re: CueBanner funktioniert nicht
 
Nein. Ich habe kein Manifest eingebunden. Woher bekomme ich denn eins und wie binde ich das ein?

Daniel 27. Okt 2007 18:32

Re: CueBanner funktioniert nicht
 
Tante Google liefert hier Hilfestellung. Zum Beispiel auf der folgenden Seite wird's diskutiert:

http://www.activevb.de/tutorials/tut.../xpstyles.html

turboPASCAL 27. Okt 2007 18:52

Re: CueBanner funktioniert nicht
 
Zitat:

Zitat von Daniel
Tante Google liefert hier Hilfestellung. Zum Beispiel auf der folgenden Seite wird's diskutiert:

http://www.activevb.de/tutorials/tut.../xpstyles.html

Onkel DP kann das auch. ;)

mirage228 27. Okt 2007 20:38

Re: CueBanner funktioniert nicht
 
Zitat:

Zitat von turboPASCAL
Onkel DP kann das auch. ;)

Genau, ich verweise da mal an den exzellenten Artikel aus der Code-Lib :mrgreen:

http://www.delphipraxis.net/internal...ect.php?t=4036

mfG
mirage228

Neutral General 28. Okt 2007 13:39

Re: CueBanner funktioniert nicht
 
Hi,

Also ich bekomme jetzt beim starten meines Programms einen Runtime Error... Ich habs so gemacht:

MeinProgramm.exe.manifest

Zitat:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Firmenname.Programmname"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>Programmbeschreibung</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
(Habe mal alles erstmal so übernommen...)

manifest.rc:
Zitat:

1 24 MeinProgramm.exe.manifest
Jetzt habe ich meine manifest.res die ich dann so in mein Programm einbinde:

Delphi-Quellcode:
{$R manifest.res}
in einer Unit die in mein Projekt eingebunden ist steht außerdem folgendes:

Delphi-Quellcode:
procedure InitCommonControls; stdcall; external 'comctl32.dll';

initialization
  InitCommonControls;

:arrow:

Zitat:

---------------------------
Error
---------------------------
Runtime error 216 at FFFF0A51
---------------------------
OK
---------------------------
Was mache ich da denn falsch? ... :wall:

Gruß
Neutral General

Luckie 28. Okt 2007 16:53

Re: CueBanner funktioniert nicht
 
Und wo kommt der Fehler? 216 ist eine AccessViolation.

Neutral General 28. Okt 2007 17:02

Re: CueBanner funktioniert nicht
 
Hi Luckie,

Ich habe mal ein Beispiel:

Delphi-Quellcode:

// TNVCLButton constructor. Nachdem der Button erstellt ist

DefProc := TWNDProc(Pointer(GetWindowLong(Handle,GWL_WNDPROC)));

// Dann im eigentlichen Quelltext
Button1.Caption := 'bla';

// =>

procedure TNVCLButton.SetCaption(const Value: String);
begin
  SetWindowText(Handle,PChar(Value));
  FCaption := Value; // hier kommt man niemals an
end;

// =>

procedure TNVCLControl.WndProc(var Message: TMessage);
begin
  case Message.Msg of
    WM_COMMAND: begin
                  if hiWord(Message.WParam) = BN_CLICKED then
                    if Assigned(FOnClick) then
                      FOnClick(Self);
                end;
    WM_PAINT: begin
                if FVisible then
                  DoPaint;
              end;
  end;
// =>
  Message.Result := DefProc(FHandle,Message.Msg,Message.WParam,Message.LParam); // <--- Da knallts dann
end;
Wobei DefProc <> nil. Und ohne Manifest funktioniert es auch.

Gruß
Neutral General

Neutral General 30. Okt 2007 14:16

Re: CueBanner funktioniert nicht
 
Würde das ganze nochmal gerne aufgreifen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.
Seite 1 von 2  1 2      

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