Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++ dialogi] Problemy z kontrolkami i zapisem do pliku

Ostatnio zmodyfikowano 2016-09-09 22:08
Autor Wiadomość
Commandos
Temat założony przez niniejszego użytkownika
[C++ dialogi] Problemy z kontrolkami i zapisem do pliku
» 2016-09-09 22:08:20
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)
C/C++
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 :
C/C++
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 :
C/C++
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.
P-151605
« 1 »
  Strona 1 z 1