[ sucur @ 16.09.2006. 17:55 ] @
Dakle problem je sa upisom u fajl.
Dakle gao global sam deklarisao FILE *file1, *file2;
Unutar win procedure:
file1 = fopen("test.ini", "a+");
...
fclose(file1);
Ovaj kod se poziva kada se zatvara dialog prozor na kojem su promijenjeni neki parametri i nakon njegovog zatvranja, te se promjene zapisuju u fajl, koliko god puta usao i mjenjao ono radi kako treba. Medjutim problem nastaje kada koristim file2.
Dakle file2 koristim unutar jednog dialoga, gdje takodje zapisuje neke stvari u drugi fajl2.ini, al0 unutar dialog procedure. I prvi put kada pokrenem taj dialog i vrsim zapis-save koliko god puta ono je ok, a cim napustim taj dialog i ponovo se vratim u njega, svako sledece snimanje nece da se upise u fajl, sto je jos gore, nakon ulaska u taj dialog, nece vise ni da radi file1, koji je do tada radio savrseno, bez obzira koliko puta izasao ili usao u njegovu dialog proceduru i snimao izmejene !!
U cemu je problem ???
[ sucur @ 16.09.2006. 18:15 ] @
Evo sam uspjeo da smanjim kod koji je problematican, dakle kada kliknem na browse dugme dialoga, onda mi se sve to pojebe.
Code:
case IDC_BROWSE:
        ni.info.ofn.lStructSize = sizeof(OPENFILENAME);
        ni.info.ofn.hwndOwner = hwnd;
        ni.info.ofn.hInstance = hInst;
        ni.info.ofn.Flags = OFN_FILEMUSTEXIST;
        ni.info.ofn.lpstrDefExt = "*.*";
        ni.info.ofn.lpstrFile = ni.info.ofnfilelocation;
        ni.info.ofn.lpstrFileTitle = ni.info.ofnfilename;
        ni.info.ofn.lpstrTitle = "File Browser!";
        ni.info.ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
        ni.info.ofn.nMaxFile = MAX_PATH;
        ni.info.ofn.nMaxFileTitle = 100;
        GetOpenFileName(&ni.info.ofn);
        SendMessage(ni.hwnd.itemFrom, WM_SETTEXT, NULL, (LPARAM)ni.info.ofnfilename);
        break;


A evo kako klasa izgleda:

Code:
class NEWITEMINFO
{
public:
    NEWITEMINFO(){;};
    ~NEWITEMINFO(){;};
    OPENFILENAME ofn;
    char writing[500];
    char ofnfilename[100];
    char ofnfilelocation[MAX_PATH];
    char myfilename[100];
    int nCategory;
};


hInst je takodje globalna HINSTANCE, hwnd prozor dialoga, a ni.hwnd.itemFrom je edit kontrola sa dialoga.
Dakle sta ovdje moze da pravi gorespomenute probleme ?
Napominjem, prvi put kada udjem u taj dialog, mogu dakle pozivati koliko god hocu browse, i snimati u fajl, dugmetom save, i sve je ok, al' cim napustim, taj dialog, sve se pobrlja, a ako ga napustim, a da nisam kliknuo na browse, onda je sve ostalo normalno.
Evo i Exit koda:

Code:
case IDCANCEL:
        ZeroMemory(ni.info.ofnfilename, 100);
        ZeroMemory(ni.info.ofnfilelocation, MAX_PATH);
        ZeroMemory(ni.info.myfilename, 100);
        EndDialog(hwnd, 0);
        break;
[ sucur @ 17.09.2006. 14:32 ] @
Pa zar niko nista o ovome nezna ?!
Sta je problem sa ovim glupim OPENFILENAME-om, pa nakon njegovog poziva ni jedan upis u datoteku nece da radi ??
[ NrmMyth @ 17.09.2006. 14:55 ] @
Postoji nesto sto se naziva "trenutnim direktorijem", to je upravo onaj direktorij koji se 'lijepi' na relativnu putanju, koju si ti predstavio u fopen().

Primjer:
Code:
file1 = fopen("test.ini", "a+");

Ako ti je trenutni direktorij "C:\mojprog\", onda je isto kao da si napisao:
Code:
file1 = fopen("C:\\mojprog\\test.ini", "a+");


Razni dijalozi tipa OpenFileDialog, OpenFolderDialog (ovo su .NET klase, ali shvatit ces bit) mjenjaju trenutni direktoriji i tu nastaje problem da ti se izmjene relativne putanje u programu..

Shvacas?

[ sucur @ 17.09.2006. 15:48 ] @
E da, hvala ti na ovome ;)
[ NrmMyth @ 17.09.2006. 21:35 ] @
Bilo je to?
[ sucur @ 17.09.2006. 23:40 ] @
Ma da, to mi je bilo na kraju pameti. Al' sad je rijeseno ;)