#include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { OPENFILENAME ofn; //在内存中开辟一块空间,存放用户选取的文件名 char szFile[MAX_PATH];//MAX_PATH是系统定义的一个宏值为260,Windows操作系统文件路径的最大长度 ZeroMemory(&ofn,sizeof(ofn));//将这个结构体变量定义为0 ofn.lStructSize = sizeof(ofn);//获取结构体的大小 ofn.lpstrFile = szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到GetOpenFileName函数中。 ofn.lpstrFile[0] = TEXT('/0');//效果等价于ZeroMemory(szFile,sizeof(szFile)); ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = TEXT("所有文件(*.*)/0*.*/0Text(*.TXT)/0*.TXT/0"); ofn.nFilterIndex = 1;//默认选择的过滤器,索引从1开始 // 指向接收选择的文件的文件名和扩展名的缓冲(不带路径信息)。这个成员可以是NULL。 ofn.lpstrFileTitle = NULL; //指定lpstrFileTitle缓冲的大小,以TCHARs为单位。对于ANSI版本,是字节的个数;对于Unicode版本,是字节的个数。如果lpstrFileTitle是NULL,这个成员被忽略。 ofn.nMaxFileTitle = 0; //指向以空字符结束的字符串,可以在这个字符串中指定初始目录。 ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;//OFN_PATHMUSTEXIST路径必须存在,OFN_FILEMUSTEXIST文件必须存在 if (GetOpenFileName(&ofn)) { MessageBox(NULL,szFile,"",MB_OK); } return 0; }