【发布时间】:2013-07-19 18:32:07
【问题描述】:
我的代码如下。
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
问题:做什么?
【问题讨论】:
-
关于您的实现的几点说明:您使用的是
OPENFILENAMEA,但调用的是GetOpenFileName(与GetOpenFileNameA相比)。保持一致,并且由于您使用的是非 ASCII 字符,因此您不妨对两者都使用 UNICODE 版本(尾随W)。lpstrFilter的字符串文字有一个多余的 NUL 终止符。字符串文字已经以零结尾,即"\0"表示字符数组{ '\0', '\0' }。 -
谢谢!但是,感谢我们心爱的编译器,我已经注意到了其中的一些错误。