⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 popfile.c

📁 C#一个实例源代码
💻 C
字号:
#include <windows.h>
#include <commdlg.h>

static OPENFILENAME ofn;

//////////////////////////////////////////////////
void PopFileInitialize(HWND hwnd)
{
	static TCHAR szFilter[]=TEXT("Text Files(*.TXT)\0*.txt\0")\
	                    	TEXT("ASCII Files(*.ASC)\0*.asc\0")\
	                     	TEXT("ALL Files(*.*)\0*.*\0");

	ofn.lStructSize      =sizeof(OPENFILENAME);
	ofn.hwndOwner        =hwnd;
	ofn.hInstance        =NULL;
	ofn.lpstrFilter      =szFilter;
	ofn.lpstrCustomFilter=NULL;
	ofn.nMaxCustFilter   =0;
	ofn.nFilterIndex     =0;
	ofn.lpstrFile        =0;

	ofn.nMaxFile         =MAX_PATH;
	ofn.lpstrFileTitle   =0;
	ofn.nMaxFileTitle    =MAX_PATH;
	ofn.lpstrInitialDir  =0;
	ofn.lpstrTitle       =0;
	ofn.Flags            =0;
	ofn.nFileOffset      =0;
	ofn.nFileExtension   =0;
	ofn.lpstrDefExt      =TEXT("txt");
	ofn.lCustData        =0L;
	ofn.lpfnHook         =0;
	ofn.lpTemplateName   =0;

}

////////////////////////////////////////////////////////
BOOL PopFileOpenDlg(HWND hwnd,PTSTR pstrFileName,PTSTR pstrTitleName)
{
	ofn.hwndOwner=hwnd;
	ofn.lpstrFile=pstrFileName;
	ofn.lpstrFileTitle=pstrTitleName;
	ofn.Flags=OFN_HIDEREADONLY|OFN_CREATEPROMPT;

	return GetOpenFileName(&ofn);
}
//////////////////////////////////////////////////////////
BOOL PopFileRead(HWND hwndEdit,PTSTR pstrFileName)
{
	BYTE    bySwap;
	DWORD   dwBytesRead;
	HANDLE  hFile;
	int     i,iFileLength,iUniTest;
	PBYTE   pBuffer,pText,pConv;

	if(INVALID_HANDLE_VALUE==(hFile=(CreateFile(pstrFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL))))
		return FALSE;


	iFileLength=GetFileSize(hFile,NULL);
	pBuffer=malloc(iFileLength+2);

	ReadFile(hFile,pBuffer,iFileLength,&dwBytesRead,NULL);
	CloseHandle(hFile);
	pBuffer[iFileLength]='\0';
	pBuffer[iFileLength+1]='\0';

	iUniTest=IS_TEXT_UNICODE_SIGNATURE|IS_TEXT_UNICODE_REVERSE_SIGNATURE;

	if(IsTextUnicode(pBuffer,iFileLength,&iUniTest))
	{
		pText=pBuffer+2;
		iFileLength-=2;
		if(iUniTest&IS_TEXT_UNICODE_REVERSE_SIGNATURE)
		{
			for(i=0;i<iFileLength/2;i++)
			{
				bySwap=((BYTE*)pText)[2*i];
				((BYTE*)pText)[2*i]=((BYTE*)pText)[2*i+1];
				((BYTE*)pText)[2*i+1]=bySwap;
			}
		}
		pConv=malloc(iFileLength+2);


#ifndef UNICODE

		WideCharToMultiByte(CP_ACP,0,(PWSTR)pText,-1,pConv,iFileLength+2,0,0);

#else
		lstrcpy((PTSTR)pConv,(PTSTR)pText);
#endif
	}
	else
	{
		pText=pBuffer;
		pConv=malloc(2*iFileLength+2);

#ifdef UNICODE
		MultiBytetoWideChar(CP_ACP,0,pText,-1,(PTSTR)pConv,iFileLength+1);

#else
		lstrcpy((PTSTR)pConv,(PTSTR)pText);
#endif

	}
	SetWindowText(hwndEdit,(PTSTR)pConv);
	free(pBuffer);
	free(pConv);
	return 1;
}

////////////////////////////////////////////////////////
PopFileSaveDlg(	HWND hwnd,PTSTR pstrFileName,PTSTR pstrTitleName)
{
		ofn.hwndOwner      =hwnd;
		ofn.lpstrFile      =pstrFileName;
		ofn.lpstrFileTitle =pstrTitleName;
		ofn.Flags          =OFN_OVERWRITEPROMPT;

		return GetSaveFileName(&ofn);
}
//////////////////////////////////////////////////////////
BOOL PopFileWrite(HWND hwndEdit,PTSTR pstrFileName)
{
	DWORD   dwBytesWritten;
	HANDLE  hFile;
	int     iLength;
	PTSTR   pstrBuffer;
	WORD    wByteOrderMark=0xFEFF;

	if(INVALID_HANDLE_VALUE==(hFile=CreateFile(pstrFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL)))
	return 0;

	iLength=GetWindowTextLength(hwndEdit);
	pstrBuffer=(PTSTR)malloc((iLength+1)*sizeof(TCHAR));
	
	if(!pstrBuffer)
	{
		CloseHandle(hFile);
		return 0;
	}

#ifdef  UNICODE
	WriteFile(hFile,&wBytesOrderMark,2&dwBytesWritten,NULL);
#endif

	GetWindowText(hwndEdit,pstrBuffer,iLength+1);

	WriteFile(hFile,pstrBuffer,iLength*sizeof(TCHAR),&dwBytesWritten,NULL);
	if(iLength*sizeof(TCHAR)!=(int)dwBytesWritten)
	{
		CloseHandle(hFile);
		free(pstrBuffer);
		return 0;
	}
	CloseHandle(hFile);
	free(pstrBuffer);
	return 1;
}













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -