1.首先我们看看最原始的程序,我们之后要做的工作就是将他的功能进行拓展。
上面这个是使用Delphi编译的一个简单程序。
2.我们使用VC来编写一个DLL,写入主循环。
// lvusyy.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include <COMMDLG.H>
#include <WINDOWS.H>
#pragma comment(lib,"comdlg32") //必须包含lib
//BOOL OpenMenuS(HWND hWnd);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
BOOL _stdcall OpenMenuS(HWND hWnd)
{
char filename[513]={'\0'};
DWORD dw=0;
char buf[65536]={'\0'}; //可以动态申请内存....
OPENFILENAME opfn;
ZeroMemory(&opfn,sizeof(opfn));//使用前清空内存
opfn.lStructSize=sizeof(opfn);//结构体的大小
opfn.Flags=OFN_FILEMUSTEXIST; //标志
opfn.lpstrFilter="Text File(*.txt)\0*.txt\0\0"; //过滤器
opfn.lpstrFile=filename;//返回的文件全路径
opfn.nMaxFile=512;//最大长度
if(!GetOpenFileName(&opfn)) // 获得打开的文件名
{
return 0;
}
HANDLE hfile=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); // 在内存当中映射文件
if (GetLastError()) // 如果发生错误
{
MessageBox(NULL,"CreateFileERRER","ERRER",MB_ICONERROR);
return 0;
}
if (!ReadFile(hfile,buf,65535,&dw,0)) // 读取文件
{ CloseHandle(hfile);
MessageBox(NULL,"ReadFileErr","ERRER",MB_ICONERROR);
return 0;
}
CloseHandle(hfile);
if(!SetWindowText(hWnd,buf)) // 设置
{
MessageBox(NULL,"SetWindowTextERR","ERRER",MB_ICONERROR);
return 0;
}
return 1;
}
BOOL _stdcall SaveMenuS(HWND hWnd)
{ char buf[65536]={'\0'};
OPENFILENAME opfm;
char