Win32 api使用中调用GetOpenFileName打开文件对话框无响应的解决方法

本文介绍了在使用Win32 API的GetOpenFileName函数打开文件对话框时遇到的无响应问题及其解决方案。经过一番调试,发现问题根源在于消息函数的错误。修复消息函数处理后,问题得到解决。
摘要由CSDN通过智能技术生成

好久没有写代码了,偶尔兴起写了一下居然还BUG不断,简直不能忍受。短短的几行代码就调了一下午,最后才发现原来是消息函数的错误。

调用打开文件的代码

void OpenFileDlg(HWND hDlg, TCHAR *pszPathName)
{
	TCHAR szPathName[MAX_PATH];

	// lStructSize
	// 指定这个结构的大小,以字节为单位。
	// Windows 95/98和Windows NT 4.0:特意为Windows 95/98或Windows NT 4.0,及带有WINVER和_WIN32_WINNT >= 0x0500编译时,
	//  为这个成员使用OPENFILENAME_SIZE_VERSION_400。
	// Windows 2000及更高版本:这个参数使用sizeof (OPENFILENAME)。
	OPENFILENAME ofn = {sizeof (OPENFILENAME)};

	ofn.hwndOwner = hDlg;// 打开OR保存文件对话框的父窗口

	//过滤器 如果为 NULL 不使用过滤器
	//具体用法看上面  注意 /0
	ofn.lpstrFilter = TEXT("txt\0*.TXT\0");

	lstrcpy(szPathName, TEXT(""));
	ofn.lpstrFile = szPathName;
	ofn.nMaxFile = sizeof(szPathName);//存放用户选择文件的 路径及文件名 缓冲区
	ofn.lpstrTitle = TEXT("选择文件");//选择文件对话框标题

	ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;//如果需要选择多个文件 则必须带有  OFN_ALLOWMULTISELECT标志
	BOOL bOk = G
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值