📄 textfile.c
字号:
iFileLength = GetWindowTextLength (hWndEdit);
lpBuffer = (LPTSTR) malloc ((iFileLength + 1) * sizeof (TCHAR));
if (!lpBuffer) //申请数据缓冲区失败
{
CloseHandle (hFile);
return 0;
}
GetWindowText (hWndEdit, lpBuffer, iFileLength + 1);
WriteFile (hFile, lpBuffer, iFileLength * sizeof (TCHAR),
&dwBytes, NULL);
CloseHandle (hFile) ;
free (lpBuffer) ;
if ((iFileLength * sizeof (TCHAR)) != (int) dwBytes)
{
MessageBox (hWnd, TEXT ("文件写入操作失败"),
TEXT ("文件操作演示程序"), MB_OK | MB_ICONERROR);
return 0;
}
else
{
wsprintf (szWndCaption, TEXT ("%s - %s"),
(szFileTitle[0] == '\0') ? UNTITLED : szFileTitle, szAppName);
SetWindowText (hWnd, szWndCaption) ;
bFileChange = FALSE;
return 1;
}
}
}
case IDM_FILE_SAVEAS:
//设置对话框结构变量ofn
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFileTitle;
ofn.Flags = OFN_OVERWRITEPROMPT;
//显示“另存为”对话框
if (GetSaveFileName (&ofn))
{
SendMessage (hWnd, WM_COMMAND, IDM_FILE_SAVE, 0);
}
else
{
MessageBox (hWnd, TEXT ("获取文件名失败"),
TEXT ("文件操作演示程序"), MB_OK | MB_ICONERROR);
}
return 0;
case IDM_EDIT_YA:
{
int b[N];
double a[N][2];
double d=1.0/N;
int i,j,g,p;
char c;
int k;
int sumn=0,sumb=0;
double range,subran;
double h;
//设置对话框结构变量ofn
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFileTitle;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
//显示“打开”对话框
if (GetOpenFileName (&ofn))
{
//打开指定文件
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);
if ((DWORD)hFile == -1)
{
MessageBox (hWnd, TEXT ("打开指定文件操作失败"),
TEXT ("文件操作演示程序"), MB_OK | MB_ICONERROR);
szFileName[0] = '\0';
szFileTitle[0] = '\0';
}
else //读取文件内容
{
iFileLength = GetFileSize (hFile, NULL);
lpBuffer = (LPTSTR)malloc (iFileLength+1);
ReadFile (hFile, lpBuffer, iFileLength, &dwBytes, NULL);
CloseHandle (hFile);
lpBuffer[iFileLength] = '\0';
for(i=0;i<N;i++)
{
b[i]=1;
a[i][0]=d*i;
a[i][1]=d*(i+1);
}
for(i=0;i<iFileLength;i++)
{
c=lpBuffer[i];
k=c-'a';
b[k]+=1;
for(j=0;j<N;j++)
sumn+=b[j];
range=a[k][1]-a[k][0];
subran=range/sumn;
a[0][0]=a[k][0];
a[N-1][1]=a[k][1];
for(g=0;g<N;g++)
{
h=a[0][0]+subran*sumb;
a[g][0]=h;
sumb+=b[g];
}
sumb=0;
for(p=0;p<N;p++)
{
sumb+=b[p];
h=a[0][0]+subran*sumb;
a[p][1]=h;
}
sumb=0;
sumn=0;
}
}
free (lpBuffer);
MessageBox (hWnd, TEXT ("压缩完毕,请存盘..."),
TEXT ("数据压缩程序"), MB_OK | MB_ICONINFORMATION); //设置对话框结构变量ofn
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFileTitle;
ofn.Flags = OFN_OVERWRITEPROMPT;
//显示“另存为”对话框
if (GetSaveFileName (&ofn))
{
hFile = CreateFile (szFileName, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, 0, NULL);
c=iFileLength;
WriteFile (hFile, &c, sizeof (char),
&dwBytes, NULL);
WriteFile (hFile, &a[k][0], sizeof (double),
&dwBytes, NULL);
CloseHandle (hFile) ;
}
else
{
MessageBox (hWnd, TEXT ("获取文件名失败"),
TEXT ("文件操作演示程序"), MB_OK | MB_ICONERROR);
}
}
}
return 0;
case IDM_EDIT_JIE:
{
double result;
int b[N];
double a[N][2];
double d=1.0/N;
int i,top,j,p,k,g;
double range,subran,h;
int sumn=0,sumb=0;
char c;
//设置对话框结构变量ofn
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFileTitle;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
//显示“打开”对话框
if (GetOpenFileName (&ofn))
{
//打开指定文件
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);
if ((DWORD)hFile == -1)
{
MessageBox (hWnd, TEXT ("打开指定文件操作失败"),
TEXT ("文件操作演示程序"), MB_OK | MB_ICONERROR);
szFileName[0] = '\0';
szFileTitle[0] = '\0';
}
else //读取文件内容
{
ReadFile (hFile, &c, sizeof(char), &dwBytes, NULL);
iFileLength=c;
lpBuffer = (LPTSTR)malloc (iFileLength+1);
ReadFile (hFile, &result, sizeof(double), &dwBytes, NULL);
CloseHandle (hFile);
}
}
for(i=0;i<N;i++)
{
b[i]=1;
a[i][0]=d*i;
a[i][1]=d*(i+1);
}
for(top=0;top<iFileLength;top++)
{
for(k=0;k<N;k++)
{
if(result>=a[k][0] && result<a[k][1])
break;
}
b[k]+=1;
c=k+'a';
lpBuffer[top]=c;
for(j=0;j<N;j++)
sumn+=b[j];
range=a[k][1]-a[k][0];
subran=range/sumn;
a[0][0]=a[k][0];
a[N-1][1]=a[k][1];
for(g=0;g<N;g++)
{
h=a[0][0]+subran*sumb;
a[g][0]=h;
sumb+=b[g];
}
sumb=0;
for(p=0;p<N;p++)
{
sumb+=b[p];
h=a[0][0]+subran*sumb;
a[p][1]=h;
}
sumb=0;
sumn=0;
}
lpBuffer[iFileLength] = '\0';
SetWindowText (hWndEdit, lpBuffer);
free(lpBuffer);
}
return 0;
case IDM_HELP_ABOUT:
MessageBox (hWnd, TEXT ("请输入十个以内小写英文字母,存盘后再进行压缩!"),
TEXT ("关于数据压缩演示程序"), MB_OK | MB_ICONINFORMATION);
return 0;
}
return 0;
case WM_CLOSE:
if (!bFileChange || IDCANCEL != QuerySaveFile (hWnd, szFileTitle))
DestroyWindow (hWnd) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
}
return DefWindowProc (hWnd, message, wParam, lParam);
} //函数 MainWndProc 结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -