AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit nonvcl Menu

Ein Thema von EWeiss · begonnen am 30. Nov 2008
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Problem mit nonvcl Menu

  Alt 30. Nov 2008, 15:43
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
Miniaturansicht angehängter Grafiken
ohne_titel-1_212.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 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