Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dialog wird nicht angezeigt (ohne MFC)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.03.2009, 19:19 Uhr
Rucola



Hallo

Mein Dialog wird nicht angezeigt. Manchmal, vielleicht 1 von 10 mal wird der Dialog anzeigt. Das war zumindest in einer füheren Version/Variante dieses Programms so). Kann es sein, dass der Dialog gleich wieder beendet wird? Warum? Im Dialogeditor ist der Dialog als sichtbar (visible) deklariert.

In Visual Studio 6.0 eröffne ich ein WIN32 Projekt ohne MFC Unterstützung.
Dann erweitere ich die Menueleiste mit einem Menupunkt durch den ein Dialog aufgerufen werden soll.
Den Dialog erstelle ich mit dem Dialogeditor. IDD_SIMULATION

Der Dialogaufruf ist in der Windowsprozedur WndProc programmiert:


C++:
    switch (message) { …..
        case WM_COMMAND:
            switch(wmId) {…
                case IDM_ABOUT: DialogBox (…); break;
    
                case IDM_SIMULATION:
                    DialogBox(hInst, (LPCTSTR) IDD_SIMULATIOM, hWnd; (DLGPROC) Simulation);
                    break;
                case IDM_EXIT: DestroyWindow(hWnd); break;
                default: return DefWindoeProc(….);
            } break:
        case WM_PAINT…….




Ein modaler Dialog kann doch auf diese Art erzeugt werden?

Rucola

Dieser Post wurde am 03.03.2009 um 22:19 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.03.2009, 00:43 Uhr
~toxic
Gast


hi, zeig bitte mal den rest von dem code, sprich die initialisierung des dialogs, seine nachrichtenschleife usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: