::GetOpenFileName/::GetSaveFileName

03/31/2010 11:46 Tyrar#1
da ich mich jetz endlich ma mit gui beschäftige (also nich nur aus resourcen, oder mit mfc), habe ich jetz ein problem!
wenn ich auf nen button klicke, und eine von den funktionen aufrufe, dann öffnet sich das fenster. aber wenn ich im menü die funktion mit den gleichen parametern aufrufe, dann passiert garnix :confused:

kann mir dabei irgendwer helfen?
03/31/2010 13:52 xNopex#2
Ein bisschen Quellcode würde helfen zu helfen :)
03/31/2010 14:55 Tyrar#3
Code:
void LoadArchive(HWND hWnd)
{
	OPENFILENAME ofn;
	ZeroMemory(&ofn, sizeof(OPENFILENAME));
	ofn.lStructSize = sizeof(OPENFILENAME);
	char szFile[260];
	ofn.hwndOwner = hWnd;
	ofn.lpstrFile = szFile;
	ofn.nMaxFile = 260;
	ofn.lpstrFilter = "CX4 Dateien (*.CX4)\0*.CX4\0";
	ofn.nFilterIndex = 1;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
	if(::GetOpenFileName(&ofn)==TRUE)
	{
		FILE* pFile = fopen((char*)ofn.lpstrFile,"rb");
		if(!pFile)
			return;
		nCount = 0;
		ListView_DeleteAllItems(hWnd_LstFiles);
		files.clear();
		while(1)
		{
			if(feof(pFile)) break;
			int nName;
			fread(&nName,1,sizeof(int),pFile);
			char* cName = new char[nName];
			fread(&cName,1,nName,pFile);
			int nData;
			fread(&nData,1,sizeof(int),pFile);
			char* cData = new char[nData];
			fread(&cData,1,nData,pFile);
			int nSize = GetDecompressedBufferSize(&cData);
			char* content = new char[nSize];
			if(DecompressBuffer(&cData,&content)==0)
				break;
			AddFileToList(cName,nSize,content);
		}
		fclose(pFile);
	}
}
der dialog öffnet sich wie gesagt nur bei nem button!
in der wndproc:
Code:
		case ID_MENU_FILE_OPEN:
			{
				LoadArchive(hWndMain);
			}break;
		case ID_BUTTON_OPEN:
			{
				LoadArchive(hWndMain);
			}break;
also 2 mal der gleiche aufruf!
nur der untere klappt!
03/31/2010 15:20 xNopex#4
Okay hast du schon geprüft, ob im switch-Vergleich die Vergleichsvariable auch wirklich ID_MENU_FILE_OPEN ist? Wäre jetzt der einfachste Fehler, wenn du das vergessen hättest davor zu setzen.
03/31/2010 15:23 Tyrar#5
Quote:
Originally Posted by xNopex View Post
Okay hast du schon geprüft, ob im switch-Vergleich die Vergleichsvariable auch wirklich ID_MENU_FILE_OPEN ist? Wäre jetzt der einfachste Fehler, wenn du das vergessen hättest davor zu setzen.
jo das is sie, ich hatte in der funktion auch ne message box direkt vor dem GetOpenFileName drin, die wurde bei beidem gecalled :(
03/31/2010 15:26 xNopex#6
Lustig :D Übergeb mal bei LoadArchive als Parameter NULL, vllt. ist dein Handle aus irgendeinem grund dort nicht valid.
03/31/2010 15:46 Tyrar#7
Quote:
Originally Posted by xNopex View Post
Lustig :D Übergeb mal bei LoadArchive als Parameter NULL, vllt. ist dein Handle aus irgendeinem grund dort nicht valid.
sollte eigendlich, is nen globales handle....
aber ich versuchs trotzdem mal xD

edit: komisch.... aufeinmal klappt es.... und ich habe an dem teil vom code nichts verändert (auch nichts was mit dem handle zutun hat)
04/02/2010 19:33 Bot_interesierter#8
Eventuell das file vorm Compilieren nicht gespeichert? Oder aus alten Objekt Datein gelinkt weil du nicht auf neu erstellen geklickt hast :P