sucur_87
Slavan
- Učlanjen(a)
- 15.09.2005
- Poruke
- 54
- Poena
- 309
Pozz narode, imam jedan problem koji mi citav dan zivce kida (win32 c++).
Dakle imam dvije globalne deklaracije static FILE *file1, *file2; za upise u dvije razlicite datoteke.
Prvi se nalazi u win32 proceduri i ona funkcionise odlicno, medjutim drugi se nalazi unutar dialog procedure tacnije u WM_COMMAND-u. E sada sve funkcionise odlicno, dok ne pozovem browse, nakon njega, ni jedan zapis u fajl nece da radi, pa cak i ovaj prvi koji nema nikakve veze sa file2 ?!!
Evo kod tog dialoga:
Dakle on zapisuje id, ime i lokaciju, kao i '\n', e sada sve dok samo zapisujem u fajl, ne dirajuci dugme WM_BROWSE, sve funkcionise, medjutim kada kliknem na browse i daberem neki fajl, ni jedan od ova dva zapisa ne funkcionise ?!!
Evo i deklaracija OPENFILENAME-a, koji se nalazi u win32 WM_CREATE, a klasa u kojoj se nalazi je globalna static NEWITEM ni;
Dakle imam dvije globalne deklaracije static FILE *file1, *file2; za upise u dvije razlicite datoteke.
Prvi se nalazi u win32 proceduri i ona funkcionise odlicno, medjutim drugi se nalazi unutar dialog procedure tacnije u WM_COMMAND-u. E sada sve funkcionise odlicno, dok ne pozovem browse, nakon njega, ni jedan zapis u fajl nece da radi, pa cak i ovaj prvi koji nema nikakve veze sa file2 ?!!
Evo kod tog dialoga:
Kod:
BOOL CALLBACK NewProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
ni.hwnd.itemTo = GetDlgItem(hwnd, IDC_TO);
ni.hwnd.itemFrom = GetDlgItem(hwnd, IDC_FROM);
ni.hwnd.itemName = GetDlgItem(hwnd, IDC_NAME);
break;
case WM_COMMAND:
switch LOWORD(wParam)
{
case IDOK:
ni.info.nCategory = SendMessage(ni.hwnd.itemTo, CB_GETCURSEL, NULL, NULL);
ZeroMemory(ni.info.myfilename, 100);
SendMessage(ni.hwnd.itemName, WM_GETTEXT, (WPARAM) 100, (LPARAM)ni.info.myfilename);
wsprintf(ni.info.writing, "%s %d %s %c", ni.info.ofnfilelocation, ni.info.nCategory, ni.info.myfilename, '\n');
file2 = fopen("sys.ini", "a+");
if(!(fprintf(file2, "%s", ni.info.writing)))
MessageBox(NULL, "Error writing file !", NULL, NULL);
if(file2)
fclose(file2);
SendMessage(ni.hwnd.itemFrom, WM_SETTEXT, NULL, (LPARAM)"Ok!");
SendMessage(ni.hwnd.itemName, WM_SETTEXT, NULL, (LPARAM)ni.info.myfilename);
break;
case IDC_BROWSE:
ZeroMemory(ni.info.ofnfilename, 100);
ZeroMemory(ni.info.ofnfilelocation, MAX_PATH);
if(!(GetOpenFileName(&ni.info.ofn)))
MessageBox(NULL, "GetOpenFileName function failed !", NULL, MB_OK);
SendMessage(ni.hwnd.itemFrom, WM_SETTEXT, NULL, (LPARAM)ni.info.ofnfilename);
break;
}
break;
}
return FALSE;
}
Evo i deklaracija OPENFILENAME-a, koji se nalazi u win32 WM_CREATE, a klasa u kojoj se nalazi je globalna static NEWITEM ni;
Kod:
ni.info.ofn.lStructSize = sizeof(OPENFILENAME);
ni.info.ofn.lpstrDefExt = "*";
ni.info.ofn.lpstrFile = ni.info.ofnfilelocation;
ni.info.ofn.nMaxFile = 400;
ni.info.ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
ni.info.ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXTENSIONDIFFERENT;
ni.info.ofn.lpstrTitle = "File Browser!";
ni.info.ofn.hInstance = hInst;
ni.info.ofn.hwndOwner = hwnd;
ni.info.ofn.lpstrFileTitle = ni.info.ofnfilename;
ni.info.ofn.nMaxFileTitle = 100;