W
Hmm genau genommen flackert nicht das Dialog Fenster sondern der gesammte Bildschirm. Daher tipp ich mal das der Handle nicht richtig ist.
Der fehler Bestätigt es auch nochmal
void BeschattenSim::Print(float dD, float dV,float P, float U_min, float M_Kraft, float V, float A, float S)
{
if (OnlineDialog== true) // Wenn Dialog offen
{
char Text[100];
bool fehler;
sprintf(Text, "V: \t\t %f" ,V );
fehler = SetDlgItemText(Online_dialog,IDC_ONLINE_V, Text );
if(fehler == false)
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL,
GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL );
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}
sprintf(Text, "A: \t\t %f" , A);
SetDlgItemText(Online_dialog,IDC_ONLINE_A, Text );
sprintf(Text, "S: \t\t %f" , S);
SetDlgItemText(Online_dialog,IDC_ONLINE_S, Text );
sprintf(Text, "U_Min: \t\t %f" , U_min);
SetDlgItemText(Online_dialog,IDC_ONLINE_U_MIN, Text );
sprintf(Text, "M_Kraft: \t %f" , M_Kraft);
SetDlgItemText(Online_dialog,IDC_ONLINE_M_KRAFT, Text );
sprintf(Text, "Delta S Fahrzeuge: \t %f" , dD);
SetDlgItemText(Online_dialog,IDC_ONLINE_DS, Text );
sprintf(Text, "Delta V Fahrzeuge: \t %f" , dV);
SetDlgItemText(Online_dialog,IDC_ONLINE_DV, Text );
sprintf(Text, "Pedale: \t\t\t %f" , P);
SetDlgItemText(Online_dialog,IDC_ONLINE_Pedale, Text );
sprintf(Text, "Durchlauf Nummer: %d" , RnR);
SetDlgItemText(Online_dialog,IDC_ONLINE_RNR, Text );
UpdateWindow(Online_dialog);
}
}
Fehler: Ungültiges Fensterhandle
Wie kann ich dem sinnvoll abhilfe schaffen??
würde jetzt einfach ganz naiv probieren im INIT des Dialogs den Lokalen Handle in einen Globalen speichern (natürlich nicht mit dem selben namen )
BOOL CALLBACK KIT_Online_dialog (HWND Online_Dialog, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
Online_dialog = Online_Dialog;
Sim.OnlineDialog= true;
Sim.Print(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0); // Initaliesieren mit Null werten
ShowWindow(Online_dialog,SW_SHOW);
return TRUE;
//EndDialog(hwndDlg,wParam);
case WM_COMMAND:
if ((wParam == IDOK)||(wParam == IDCANCEL))
{
Sim.OnlineDialog=false;
EndDialog(Online_dialog,wParam);
return TRUE;
}
// case WM_PAINT:
//ShowWindow(Online_dialog,SW_SHOWNA);
// return TRUE;
}
return FALSE;
}
Funktioniert im übrigen auch supi solange man vor dem Start der Sim das Fenster auch aufmacht ansonsten kommt wie zu erwarten der Fehler , das kein Fenster Handle vorhanden ist.
[Edit] das hab ich jetzt erstmal mit einem Flag abgefangen... [/Edit]