AGB  ·  Datenschutz  ·  Impressum  







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

GetMenuItemInfo -> falscher Parameter

Ein Thema von Luckie · begonnen am 26. Jan 2006 · letzter Beitrag vom 27. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 20:01
Ich bekomme bei diesem Code immer die obige fehlermeldung:
Delphi-Quellcode:
        hMenu := GetMenu(hDlg);
        hSubMenu := GetSubMenu(hMenu, 3);
        ZeroMemory(@mii, sizeof(TMenuItemInfo));
        if not GetMenuItemInfo(hSubMenu, 0, True, mii) then
          DisplayErrMsg(hApp, APPNAME, GetLastError);
        AppendMenu(mii.hSubMenu, MF_STRING, 0, 'Test');
Ich frage mich nur warum?

Noch etwas näheres zur Erklärung:

Code:
Benutzer | Ansicht | Extras | Hilfe
                              Sprache > Deutsch
                                        Englisch
Ich brauche das Handle vom Menüpunkt "Sprache", um dort dynamisch die Menüpunkte "Deutsch" und "Englisch" zu erstellen. Ob das mit AppenMenu geht, bin ich mir noch gar nicht mal so sicher, aber ich bekomme ja erst gar nicht das Handle auf den MenuIzem "Sprache".

Ich bin für jedwede Vorschläge offen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 20:46
Man sollte alles lesen:
Zitat:
Note that you must set MENUITEMINFO.cbSize to sizeof(MENUITEMINFO) before calling this function.


Aber mii.hSubMenu ist immer noch null. Der Menüpunkt "Sprache" ist als Popup deklariert in der Ressource. Und im PSDK steht:
Zitat:
hSubMenu
Handle to the drop-down menu or submenu associated with the menu item. If the menu item is not an item that opens a drop-down menu or submenu, this member is NULL. Set fMask to MIIM_SUBMENU to use hSubMenu.
Also sollte es das doch tun:
Delphi-Quellcode:
hMenu := GetMenu(hDlg);
hSubMenu := GetSubMenu(hMenu, 3);
ZeroMemory(@mii, sizeof(TMenuItemInfo));
mii.cbSize := sizeof(TMenuItemInfo);
mii.fMask := MIIM_SUBMENU;
GetMenuItemInfo(hSubMenu, 0, True, mii);
AppendMenu(mii.hSubMenu, MF_STRING, 0, 'Test');
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 22:58
Warum nicht so?
Code:
(0) (1)
File Help
     (0) Anderes
     (1) ---------
     (2) Sprache > Deutsch
                   Test
Delphi-Quellcode:
//..
  _hMenu := GetMenu(hwnd);
  _hSubMenu := GetSubMenu(_hMenu, 1);
  _hSubMenu := GetSubMenu(_hSubMenu, 2);
  AppendMenu(_hSubMenu, MF_STRING, 0815, 'Test');
  DrawMenuBar(hwnd);
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 23:02
Auf meine Anwendung angepass:
Delphi-Quellcode:
        hMenu := GetMenu(hDlg);
        hSubMenu := GetSubMenu(hMenu, 3);
        hSubMenu := GetSubMenu(hSubMenu, 0);
        AppendMenu(hSubMenu, MF_STRING, 0815, 'Test');
        DrawMenuBar(hDlg);
Aber auch jetzt ist nach dem zweiten Aufruf von GetSubMenu hSubMenu immer 0.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 23:14
Also bei mir klappt das ohne Probleme.
var hMenu : HMENU; Ist das so dekl. dann ändere doch mal invar _hMenu : HMENU; aber nicht in der DlgFuncProc als lokale Variable.

Miniaturansicht angehängter Grafiken
image__450.gif  
Angehängte Dateien
Dateityp: zip demo_881.zip (6,9 KB, 14x aufgerufen)
Dateityp: zip demo_2_140.zip (7,3 KB, 19x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: GetMenuItemInfo -> falscher Parameter

  Alt 26. Jan 2006, 23:55
hMenu ist als THandle deklariert, was anderes wird HMENU auch nicht sein. Ich gucke mir mal deine Demo an.

In deiner Demo existiert schon der erste Eintrag, nämlich "Deutsch". Ich habe da aber noch keinen. So, wenn ich da schon einen habe, dann geht es auch. Hm, Deutsch wird da auf alle Fälle auftauchen, könnte ich also so machen.

Vielen Dank für deine Mühe mit der Demo.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: GetMenuItemInfo -> falscher Parameter

  Alt 27. Jan 2006, 00:09
Bitte.

Eine Sprache würde ich gleich als "Programmsprache" integrieren. Es kann ja sein das versehentlich eine dll gelöscht wurde... erster Menüpunkt...


übrigens:

THandle = System.THandle = Cardinal
HMENU = type LongWord;

oder so.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: GetMenuItemInfo -> falscher Parameter

  Alt 27. Jan 2006, 00:11
Ursprünglich ist auch alles Deutsch. Aber wenn man auf Englisch umstellt, die deutsche DLL löscht und dann wieder auf deutsch würde alles leer bleiben. Ich habe es hetzt so gemacht, dass wenn DLL nicht vorhanden gar nichts passiert und die ursprüngliche Sprache nicht geändert wird. Aber wer eine mitgelieferte DLL löscht, ist selber schuld.

Trotzdem muss ich jetzt irgendwie tricksen, dass er die Deutsche DLL überspringt. Oder ich muss, wenn ich alle drinne habe, den ersten Dummy-Eintrag wieder löschen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: GetMenuItemInfo -> falscher Parameter

  Alt 27. Jan 2006, 00:12
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: GetMenuItemInfo -> falscher Parameter

  Alt 27. Jan 2006, 01:21
Es läuft.

Jetzt brauche ich nur noch die Sprach-DLL zu erzeugen und brauche nur noch die DLLs zu verteilen. Der Bneutzer muss sie dann nur noch in das entsprechende Verzeichnis kopieren und er hat die Sprache zur Auswahl.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:23 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