我的代码如下。
OPENFILENAMEA open;
ZeroMemory(&open, sizeof(open));
open.lStructSize = sizeof(LPOPENFILENAMEA);
open.lpstrFilter = "Képek\0*.jpg;*.jpeg;*.gif;*.png;*.bmp\0\0";
open.nFileOffset = 1;
open.lpstrFile[0] = '\0';
open.nMaxFile = 2048;
open.lpstrTitle = "Képek kiválasztása..";
open.Flags = OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST;
OPENFILENAME selected = GetOpenFileName(open);
我的问题是,尝试构建时出现以下错误:
调用
error: cannot convert 'OPENFILENAME {aka tagOFNA}' to 'LPOPENFILENAMEA {aka tagOFNA*}' for argument '1' to 'BOOL GetOpenFileNameA(LPOPENFILENAMEA)'
时的GetOpenFileName
如果我用open参数作为ptr
GetOpenFileName(&open)
调用它,则会得到以下error: conversion from 'BOOL {aka int}' to non-scalar type 'OPENFILENAME {aka tagOFNA}' requested
问题:怎么办?
最佳答案
GetOpenFileName
返回BOOL
,而不是OPENFILENAME
。
如果用户选择文件并单击“确定”,则它将返回非零值。如果他们单击“取消”,它将返回0。
如果返回true,它将修改open
的内容以反射(reflect)用户选择的内容。
因此,您通常使用类似以下内容的代码:
if (GetOpenFileName(&open)) {
// use open.whatever to get data about the selected file
}
else
// The user clicked cancel -- typically do nothing.
关于c++ - C++如何初始化打开文件对话框(GetOpenFileName),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17763592/