L
es hat mir gereicht.
ich scheiß auf diese verfuckte ms-funktion!! (sorry, das musste raus...)
hab mir meine eigene funktion geschrieben:
#include <windows>
using namespace std;
/*Info:
MyMenuHelp ist eine Hilfsfunktion, die die WM_MENUSELECT Nachricht verarbeitet.
Parameter:
WPARAM wParam - wParam von WM_MENUSELECT
HWND hStausBar - gültiges Handel der Statuszeile
UINT* MenuID_Array - Array der MenüIDs
UINT* ResID_Array - Array der StringtableResourceIDs (in gleicher Reinfolge wie MenuID_Array)
int iCount - Anzahl der Elemente im Array
Anhand von wParam wird das entsprechende MenuItem aus dem MenuID_Array herausgesucht
und dann aus der dazugehörigen ResourceID in ResID_Array ein String mittels LoadString() geladen,
der dann in der Statuszeile (hStausBar) angezeigt wird.
(Gibt bei Erfolg true zurück, im Fehlerfall false.)
*/
#define HELPSTRING_BUFFER_SIZE 1024
bool MyMenuHelp(WPARAM wParam, HWND hStausBar, HINSTANCE hInstance,
UINT* MenuID_Array, UINT* ResID_Array, int iCount)
{
static char * AlterStatustext;
static bool bFirstCall = true;
if(bFirstCall)
{
bFirstCall = false;
int len = GetWindowTextLength(hStausBar)+1;
AlterStatustext = new char[len];
GetWindowText(hStausBar, AlterStatustext, len);
}
if(HIWORD(wParam) == 0xFFFF)//Menü wird geschlossen
{
bFirstCall = true;
SetWindowText(hStausBar, AlterStatustext);
delete [] AlterStatustext;
}
UINT MenuID = LOWORD(wParam);
int iPos = 0;
bool bNotFound = true;
while(iPos < iCount)
{
if(MenuID_Array[iPos] == MenuID)
{
bNotFound = false;
break;
}
iPos++;
}
if(bNotFound) return false;
else
{
char* HelpString = new char[HELPSTRING_BUFFER_SIZE];
LoadString(hInstance, ResID_Array[iPos], HelpString, HELPSTRING_BUFFER_SIZE-1);
SetWindowText(hStausBar, HelpString);
delete [] HelpString;
}
return true;
}
implementiert sieht das ganze dann so aus:
case WM_MENUSELECT:
{
static UINT MenuID_Array[] = {IDM_ABOUT,
IDM_NEWGAME,
IDM_CANCELGAME,
IDM_OPTIONS,
IDM_QUIT,
IDM_NETSTART,
IDM_NETJOIN,
IDM_FASTHELP,
IDM_SKATHELP};
static UINT ResID_Array[] = {IDMH_ABOUT,
IDMH_NEWGAME,
IDMH_CANCELGAME,
IDMH_OPTIONS,
IDMH_QUIT,
IDMH_NETSTART,
IDMH_NETJOIN,
IDMH_FASTHELP,
IDMH_SKATHELP};
MyMenuHelp(wParam, hStausBar, hInstance, MenuID_Array, ResID_Array, 9);
return 0;
}
so. jetzt hab ich mir meinen schlaf aber rätlich verdient.
lw