Menupunkte lassen sich nicht öffnen auf fremden PC's, wieso ?
-
Hallo,
Ich programmiere unter BCB6 mein OS ist WinXP SP2.
Ich habe vor kurzem ein paar Prgramme geschrieben, welche alle ein Menu haben. Ich kann diese Menupunkte auf meinen Rechner ohne Probleme öffnen, jetzt hab ich einen Freund meine Programme gegeben doch der kann die Menupunkte nicht öffnen, der rest des Programms läuft reibungslos.Könnte mir evtl. jemand sagen wieso das nicht funktioniert und evtl. auch sagen wie ich das Problem behoben komme?
PS:
1. öffnet sich das Menü?
Ja das popupmenu öffnet sich, wenn er es anklickt...2. was passiert, wenn er auf die Menüpunkte klickt?
ABER will er ein einzelnen menupunkt anklicken( zb. Öffnen ), dann passiert einfach nix.3. was ist das für ein Menü?(Popup,Systemmenü...)
es ist ein menu das ich im resource file erstellt habe, denke mal du meinst popup.( wc.lpszMenuName = "USERMENU"; ).4. wie hast du das Menü gemacht?(Code?)
////////////////////////////////////////////////////////////////////////////////
// MENUUSERMENU MENU DISCARDABLE
BEGINPOPUP "File"
BEGINMENUITEM "Change start channel", ID_MENUITEM_CHANEL
MENUITEM SEPARATOR
MENUITEM "Quit Warcraft - AutoLogger", ID_MENUITEM_QUIT
ENDMENUITEM "Help", ID_MENUITEM_HELP
MENUITEM "About", ID_MENUITEM_ABOUT
END5. was ruft das Menü auf?(vlt hat dein Kumpel die Dateien bzw Programme nicht)
es ruft lediglich nur eine MessageBox auf, zwei DialogBoxen die auch im .rc file stecken, und ein punkt der einfach nur ne SendMessage postet.Gruß Tobi
-
Hm, was hat der denn für ein OS?
Oh, schon gut, habs grad in dem anderen Thread gesehen, WinXP.. Hm
-
jo hm... hat sonst immer einwandfrei funktioniert ...
-
Zeig mal deine WndProc und Message Schleife, ich könnte wetten es liegt an den Nachrichten Behandlungen, bei dir gehts weil du entsprechende VC kacke hast und bei deinem Kumpel nicht, weil er es nicht hat.
-
Du willst aber net die ganze WndProc sehen oder?
//--- Main --------------------------------------------------------------------- WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { HWND hParent; WNDCLASS wc; MSG msg; try { // try to initial wc class wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE( ID_ICON_APPLICATION ) ); wc.hCursor = LoadCursor( 0, IDC_ARROW ); wc.hbrBackground = reinterpret_cast< HBRUSH >( GetStockObject( BLACK_BRUSH ) ); wc.lpszMenuName = "USERMENU"; wc.lpszClassName = szAppName; if( !( RegisterClass( &wc ) ) ) { throw 0 ; } } catch( ... ) { MessageBox( 0, "The window couldn't registered by windows!", "Shutdown Error", MB_OK | MB_ICONERROR ); return 0; } try { // try to create the window hParent = CreateWindowEx( 0, szAppName, szAppTitle, WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 355, 300, 0, 0, hInstance, 0 ); if( hParent == 0 ) { throw 0; } else { ShowWindow( hParent, nCmdShow ); UpdateWindow( hParent ); } } catch( ... ) { MessageBox( 0, "The window couldn't created!", "Shutdown Error", MB_OK | MB_ICONERROR ); return 0; } while( GetMessage( &msg, 0, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } return( msg.wParam ); }
-
Ok ich kann mich irren, da es recht mager noch alles hier ist, aber ich tippe drauf, das ind der WM_COMMAND die ID´s der Menuitems auf dem Fremdrechner nicht bekannt sind, besser wer es vieleicht, das Menu nicht in der WNDCLASSEX zu setzten als Name, sondern unter WM_CREATE mit Identifizierer dem Window hinzu zufügen, ich schätze hier auf den Konflickt, das eben die Commands auf dem Fremdrechner nicht identifizierbar sind.
-
orr lol schrieb:
Ok ich kann mich irren, da es recht mager noch alles hier ist, aber ich tippe drauf, das ind der WM_COMMAND die ID´s der Menuitems auf dem Fremdrechner nicht bekannt sind
Nicht bekannt sind? Wie soll das denn gehen, die werden doch mit kompiliert...
Poste mal Deinen WM_COMMAND-Handler.
-
CodeFinder schrieb:
orr lol schrieb:
Ok ich kann mich irren, da es recht mager noch alles hier ist, aber ich tippe drauf, das ind der WM_COMMAND die ID´s der Menuitems auf dem Fremdrechner nicht bekannt sind
Nicht bekannt sind? Wie soll das denn gehen, die werden doch mit kompiliert...
Poste mal Deinen WM_COMMAND-Handler.
Habe mich abgespeckt ausgedrückt, oder finde das richtige Wort nicht, klar sind werte durch dem Kompiler vorhanden, nur ist es wohl kein Integer, sprich über #define gesetzter wert für das menu, ich rechne damit, das keine Integer verwendet werden, und genau an dieser stelle können solche Probleme entstehen.
OK, er kann das Menu so schon zufügen, aber eben am besten mit Integer defines, wobei er es dann mit MAKEINTRESOURCE halt zufügt, und die ID´s eben klare Werte haben.
-
kann es unter anderem daran liegen, wenn ich im header file des #define, #ifndef und endif vergessaen hab?
-
Das sind nur Precompiler Comandos, je nach dem was du defined, ich rechne mal mit der Standart Header def, welche den Header ansich kenzeichnet, ne dann eigentlich nicht, wenn aber gewisse unterscheindungs defines sind, zu versionen oder sonst was, kann es schon mal probleme geben, aber nicht bei diesem von dir
-
orr lol schrieb:
... ich schätze hier auf den Konflickt, das eben die Commands auf dem Fremdrechner nicht identifizierbar sind.
Und warum läufts auf seinem Rechner ? Der Fehler hier ist die Fehlerbeschreibung.
-
Ich wiederhole mich eigentlich ungern, aber:
CodeFinder schrieb:
Poste mal Deinen WM_COMMAND-Handler.