leider werden die Namen nicht addiert..
Menü wird erstellt die einträge auch addiert aber die namen kann ich nicht sehn..
Delphi-Quellcode:
//Hier wird der Text für den Menu Eintrag übergeben
// und für diesen Eintrag zugehörige icon als *.png File 16x16
function GetMenuTxt(ItemId: Integer; var Img: Cardinal): string;
var
sItem: string;
begin
with SkinEngine do
begin
case ItemId of
IDM_Close:
Result := 'Close SoundMachine';
IDM_About:
Result := 'About';
IDM_PRESET:
Result := 'Presets';
end;
case ItemId of
IDM_Close:
sItem := 'Close.png';
IDM_About:
sItem := 'About.png';
IDM_PRESET:
sItem := 'WMP.png';
end;
Img := AddResource(PAnsiChar(sExePath + 'Skin\' + sItem));
end;
end;
Delphi-Quellcode:
BASSVISKIND_WMP:
begin
nItem := LoWord(wP) - ID_VISUAL_FIRST + 1;
PlgFilename := ListGetText(GetMainItem(ID_PlugList), nItem);
PlgSelectedIndex := nItem;
NumPresets := BASSVIS_GetModulePresetCount(
@mVisParam, PChar(PlgFilename));
If NumPresets > 1 Then
begin
hPopupMenu := CreatePopupMenu; // Bitmap Popupmenu
if hPopupMenu <> 0 then
begin
AppendMenu(hPopupMenu, MF_OWNERDRAW, IDM_PRESET, '');
AppendMenu(hPopupMenu, MF_SEPARATOR, 105, '');
for IntI := 0 to NumPresets - 1 do
begin
WMPVisPreset := BASSVIS_GetModulePresetName(@mVisParam, IntI,
PChar(PlgFilename));
AppendMenu(hPopupMenu, MF_OWNERDRAW,
(IDM_PRESET + 1) + IntI, WMPVisPreset);
end;
GetCursorPos(p);
MenuWahl := TrackPopupMenuEx(hPopupMenu, TPM_RETURNCMD, p.X, p.Y, WinHandle, nil);
DestroyMenu(hPopupMenu);
if MenuWahl then
SendMessage(WinHandle, WM_COMMAND, Makelong(Word(MenuWahl), 0), 0);
end;
end else
PlgSelectedModule := 0;
end;
was hab ich vergessen ?
EDIT:
Habs jetzt geändert!
Delphi-Quellcode:
//Hier wird der Text für den Menu Eintrag übergeben
// und für diesen Eintrag zugehörige icon als *.png File 16x16
function GetMenuTxt(ItemId: Integer; var Img: Cardinal): string;
var
sItem: string;
begin
with SkinEngine do
begin
case ItemId of
IDM_Close:
Result := 'Close SoundMachine';
IDM_About:
Result := 'About';
IDM_PRESET..IDM_PRESET_LAST:
Result := WMPVisPreset[ItemId - IDM_PRESET];
end;
case ItemId of
IDM_Close:
sItem := 'Close.png';
IDM_About:
sItem := 'About.png';
IDM_PRESET..IDM_PRESET_LAST:
sItem := 'WMP.png';
end;
Img := AddResource(PAnsiChar(sExePath + 'Skin\' + sItem));
end;
end;
Delphi-Quellcode:
BASSVISKIND_WMP:
begin
nItem := LoWord(wP) - ID_VISUAL_FIRST + 1;
PlgFilename := ListGetText(GetMainItem(ID_PlugList), nItem);
PlgSelectedIndex := nItem;
NumPresets := BASSVIS_GetModulePresetCount(
@mVisParam, PChar(PlgFilename));
If NumPresets > 1 Then
begin
hPopupMenu := CreatePopupMenu; // Bitmap Popupmenu
if hPopupMenu <> 0 then
begin
for IntI := 0 to NumPresets - 1 do
begin
SetLength(WMPVisPreset, NumPresets);
WMPVisPreset[IntI] := BASSVIS_GetModulePresetName(@mVisParam, IntI,
PChar(PlgFilename));
AppendMenu(hPopupMenu, MF_OWNERDRAW,
(IDM_PRESET + IntI), WMPVisPreset[IntI]);
end;
GetCursorPos(p);
MenuWahl := TrackPopupMenuEx(hPopupMenu, TPM_RETURNCMD, p.X, p.Y, WinHandle, nil);
DestroyMenu(hPopupMenu);
if MenuWahl then
SendMessage(WinHandle, WM_COMMAND, Makelong(Word(MenuWahl), 0), 0);
end;
end else
PlgSelectedModule := 0;
end;
Jetzt werden die texte addiert allerdings bedingt durch IDM_PRESET_LAST = 120 als Const
habe ich nun mehr Einträge als ich verwende
Was gibt es da noch für eine möglichkeit.
EDIT:
Hat sich erledigt..
Habe bei IDM_PRESET_LAST zu wenig angegeben start 104 end 120 bei 20 plugins kann nicht funktionieren.
Raufgesetzt auf max 30 Plugins jetzt funktioniert es wie gewollt.
gruss Emil