Witam,
tworzę pewien generator, w którym przechodzi się przez kolejne okna dialogowe, aż trafia się do głównego.
Problem nr1:
Główne okno dialogowe posiada około 30 checkboxów, editów, przycisków i comboboxów.
Przy uruchomieniu programu, w momencie kliknięcia po sobie kilku kontrolek, (losowo, choć czasem występuje określona kombinacja) wyłącza się główny dialog, lub zawiesza się on, razem z kontrolką w pozycji wciśniętej.
Kod jednej z kontrolek w oknie głównym (wszystkie są zbudowane podobnie)
case COS:
{
fstream plik( "Saved\\plik.txt", ios::in );
string o1, o2;
while( !plik.eof() ) {
getline( plik, o1 );
o2 += o1;
}
o2 += "tekst";
LPCSTR o3 = o2.c_str();
SetWindowText( UEG, o3 );
plik.close();
savef();
}
break;
Problem nr2:
W jednym z dialogów (przedostatni przed głównym) jest możliwość wyboru obrazka.
Po ścieżce obrazka i cudzysłowie już nic się nie zapisuje do pliku z kolejnych dialogów.
Dodatkowo w głównym dialogu kliknięcie którejkolwiek kontrolki powoduje zawias, taki jak w problemie 1.
Kod odpowiadający za wybór obrazka :
fstream plik( "Saved\\plik.txt", ios::out | ios::app );
OPENFILENAME owostr;
char SciezkaPliku[ MAX_PATH ] = "";
ZeroMemory( & owostr, sizeof( owostr ) );
owostr.lStructSize = sizeof( OPENFILENAME );
owostr.lpstrFilter = "Pliki graficzne (*.png; *.gif; *.bmp; *.jpg; *.jpeg; *.tiff)\0*.png;*.gif;*.bmp;*.jpg;*.jpeg;*.tiff\0";
owostr.nMaxFile = MAX_PATH;
owostr.lpstrFile = SciezkaPliku;
owostr.lpstrDefExt = "jpg";
owostr.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if( GetOpenFileName( & owostr ) == 0 ) {
plik.close();
EndDialog( hwndDlg2, 0 );
return DialogBox( hInst, MAKEINTRESOURCE( DIALOG2 ), NULL,( DLGPROC ) DlgMain2 );
}
plik << " obrazek=\"" << SciezkaPliku << "\"";
plik.close();
Polecenia kończące dany dialog :
EndDialog( danydialog, 0 );
return DialogBox( hInst, MAKEINTRESOURCE( kolejneokno ), NULL,( DLGPROC ) funkcjakolejnego );
Ani kompilator, ani debugger nie pokazują żadnych błędów.
Mój jedyny pomysł na rozwiązanie problemów to podzielić program na kilka mniejszych (1 program - 1 dialog). Po dialogu zakańczałbym proces i uruchamiał kolejny program (czyli dialog).
Mam nadzieję, że wszystko dobrze opisałem. W razie czego proszę pisać to dorzucę potrzebny fragment kodu.