Habe kleine Probleme beim implementieren einer ListView.
Meine
DLL schickt folgende Message beim WM_LBUTTONDBLCLK.
Delphi-Quellcode:
var
MessageStructure: PNMHdr;
Delphi-Quellcode:
function TSkinListView.ListViewProc(WinHandle: hWnd; Msg: UINT; wP: WParam; lP: LParam): LRESULT;
begin
case Msg of
WM_LBUTTONDBLCLK:
begin
MessageStructure := PNMHdr(lP);
MessageStructure.hwndFrom := WinHandle;
MessageStructure.idFrom := DlgItemID;
MessageStructure.code := NM_DBLCLK;
SendMessageW(ListViewParent, WM_NOTIFY, DlgItemID, integer(MessageStructure));
Result := 0;
exit;
end;
end;
Result := CallWindowProc(Pointer(FPrevClientProc), WinHandle, Msg, wP, lP);
end;
in der Anwendung wird die Message so verarbeitet.
Delphi-Quellcode:
WM_NOTIFY:
begin
if(PNMHdr(lp)^.hwndFrom = PLList.Handle) then
begin
case PNMHdr(lp)^.code of
NM_DBLCLK:
begin
nItem := PLList.GetCursel(lP);
if nItem > 0 then
begin
LastPlayListTitle := nItem;
HiddenPLList.ListSelectPlus(HiddenPLList.Handle, nItem);
getAudioFile := HiddenPLList.ListGetText(HiddenPLList.Handle, nItem);
SKAERO_UpdateWindow(lP, False);
HiddenPLList.ListSetTopIndex(HiddenPLList.Handle, nItem);
// PLList.ListSetTopIndex(PLList.Handle, nItem);
BassChannelPlay;
end;
end;
end;
end;
end;
Das Problem ist ich kann die MessageStructure nicht füllen.
Error:
Zitat:
Erste Gelegenheit für
Exception bei $005544BE.
Exception-Klasse Zugriffsverletzung ($C0000005) mit Meldung '
access violation at 0x005544be: write of address 0x017a0090'. Prozess Soundmachine.exe (5252)
Was läuft falsch?
gruss