002
04.03.2009, 22:12 Uhr
Rucola
|
Hallo
Ich stell' mal den Code hin. Einführend muss ich sagen, dass meine Erfahrung in API-Programmierung klein ist. Nach meinem Verstädnis habe keine Initialisierung für den Dialog geschrieben. Auch die Nachrichtenschleife habe ich nicht verändert. Die Aufrufe MessageBox dienen dazu zu prüfen ob das Programm an der entsprechenden Stelle vorbei kommt. Im Code sind 2 Dialoge programmiert. Beide erscheinen nicht.
Der Compiler gibt auch noch die folgende Fehlermeldung aus:
warning C4652: Compiler-Option 'Browser-Informationen erzeugen' steht in Konflikt mit der vorkompilierten Header-Datei; aktuelle Befehlszeilenoption setzt die in der vorkompilierten Header-Datei definierte Option ausser Kraft Linker-Vorgang läuft...
Ventilsimulation2_oMFC.exe - 0 Fehler, 1 Warnung(en)
zum C++ Code
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ZU ERLEDIGEN: Fügen Sie hier den Code ein. MSG msg; HACCEL hAccelTable;
// Globale Zeichenfolgen initialisieren LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_VENTILSIMULATION2_OMFC, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance);
// Initialisierung der Anwendung durchführen: if( !InitInstance( hInstance, nCmdShow ) ) { return FALSE; }
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_VENTILSIMULATION2_OMFC);
// Hauptnachrichtenschleife: while( GetMessage(&msg, NULL, 0, 0) ) { if( !TranslateAccelerator (msg.hwnd, hAccelTable, &msg) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } }
return msg.wParam; }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; static HINSTANCE hInstance ; PAINTSTRUCT ps; HDC hdc; HWND hDlg; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
switch( message ) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Menüauswahlen analysieren: switch( wmId ) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_SIMULATION: // Dialog aufrufen MessageBox(NULL,"IDM_SIMULATION","IDM_SIMULATION",MB_OK); DialogBox(hInst, (LPCTSTR)IDD_VENTILSIMULATION, hWnd, (DLGPROC)Simulation); break; case IDM_SIMULATION2: // Dialog aufrufen MessageBox(NULL,"IDM_SIMULATION2","IDM_SIMULATION",0); hDlg = CreateDialog(hInst,"Text2",hWnd,MB_OK); ShowWindow(hWnd, SW_SHOW); break; case IDM_EXIT: DestroyWindow( hWnd ); break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } break; case WM_PAINT: hdc = BeginPaint (hWnd, &ps); // ZU ERLEDIGEN: Hier beliebigen Code zum Zeichnen hinzufügen... RECT rt; GetClientRect( hWnd, &rt ); DrawText( hdc, szHello, strlen(szHello), &rt, DT_CENTER ); EndPaint( hWnd, &ps ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } return 0; }
// Nachrichtenbehandlungsroutine für "Info"-Feld. LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_INITDIALOG: return TRUE;
case WM_VSCROLL:
return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; }
// Nachrichtenbehandlungsroutine für "Simulation"-Feld. BOOL CALLBACK Simulation( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_INITDIALOG: // MessageBox(NULL,"WM_INITDIALOG","IDM_SIMULATION",MB_OK); return TRUE;
case WM_COMMAND: // if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) // { // EndDialog(hDlg, LOWORD(wParam)); // return TRUE; // }
switch(LOWORD (wParam)) { case IDOK: case IDCANCEL: case IDC_CALIB: case IDC_MANUAL: case IDC_SLIDER1: case IDC_Y: EndDialog(hDlg, 0); return TRUE; } break; } return FALSE; }
Rucola
P.S. wie bring ich obige Form mit dem Fenster hin? |