#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
OPENFILENAME ofn;
//文件打开对话框主要通过GetOpenFileName函数实现
//其参数为OPENFILENAME指针类型
//此处定义一个OPENFILENAME类型的变量ofn
char szFile[MAX_PATH];
//定义保存打开文件路径的char数组
//数组长度为MAX_PATH
//MAX_PATH是Windows操作系统中的路径最长长度常量为260
ZeroMemory(&ofn, sizeof(ofn));
//OPENFILENAME是种结构体
//ZeroMemory将结构体置零
//对比memset函数
ofn.lStructSize = sizeof(ofn);
//结构体本身能够知道自己的大小,为什么很多WINAPI结构体中都有存储结构体大小的变量?
//Windows发展的历史原因。
ofn.lpstrFile = szFile;
//ofn.lpstrFile指针指向szFile
ofn.lpstrFile[0] = TEXT(‘\0’);
//相当于szFile[0] = ‘\0’
//也就是置零
//ofn.lpstrFile和szFile[MAX_PATH]是如何取得值的?
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT(“文本文档(*.txt)\0*.txt\0所有文件\0*.*\0”);
//文件类型过滤器
//’\0’将其分隔
//每两段为一组,前面部分为显示值,后面部分为过滤。
ofn.nFilterIndex = 1;
//默认过滤文件类型索引
//此处的索引数字从1开始
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
//OFN_EXPLORER——新界面
//OFN_PATHMUSTEXIST——文件路径必须存在
//OFN_FILEMUSTEXIST——文件必须存在
if(GetOpenFileName(&ofn))
MessageBox(NULL, szFile, NULL, MB_OK);
return 0;
}