请问如何使用OPENFILENAME结构?

eivanlee 2004-05-10 05:35:07
在W32 Application项目中,想使用OPENFILENAME,GetOpenFileName打开一个文件,为何编译时总是说undeclared identifier?已包含<windows.h>了啊?
...全文
330 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
eivanlee 2004-05-11
  • 打赏
  • 举报
回复
多谢.
这也是我比较郁闷的地方.
项目中的很多宏定义都不知道是在哪里/怎么定义的.
我在找找吧.
快乐鹦鹉 2004-05-11
  • 打赏
  • 举报
回复
看看这一段:windows.h中的
#if defined(RC_INVOKED) && !defined(NOWINRES)

#include <winresrc.h>

#else

#if defined(RC_INVOKED)
/* Turn off a bunch of stuff to ensure that RC files compile OK. */
#define NOATOM
#define NOGDI
#define NOGDICAPMASKS
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NORASTEROPS
#define NOSCROLL
#define NOSOUND
#define NOSYSMETRICS
#define NOTEXTMETRIC
#define NOWH
#define NOCOMM
#define NOKANJI
#define NOCRYPT
#define NOMCX
#endif
------------------
可见,需要定义RC_INVOKED这个东西后,NOGDI才会被定义。我查了一下windows.h,没有定义RC_INVOKED的地方。
eivanlee 2004-05-11
  • 打赏
  • 举报
回复
回复人: happyparrot(快乐鹦鹉)
你说的不错.由于项目已经定义了NOGDI,所以编译时没有包含commdlg.h.
那么该如何取消对NOGDI的定义(不改变windows.h文件),从而包含commdlg.h呢?

之所以有此考虑,是因为我从MSDN下载了一个Sample(MTTTY,Win32串口操做源码),他也用到OPENFILENAME,包含了windows.h,但并没有另外包含commdlg.h.
快乐鹦鹉 2004-05-11
  • 打赏
  • 举报
回复
经查,windows.h中是这么写的:
#ifndef NOGDI
#include <commdlg.h>
-----------------
上面那段是说明哪些操作系统支持OPENFILENAME,需要什么库和头文件支持。
eivanlee 2004-05-11
  • 打赏
  • 举报
回复
自己定义RC_INVOKED当然可以,但这样做到底是什么意思呢?
守田人 2004-05-11
  • 打赏
  • 举报
回复
在include <windows.h>前自己写
#define RC_INVOKED
eivanlee 2004-05-10
  • 打赏
  • 举报
回复
但是windows.h中已经包含了commdlg.h啊,为什么要再次包含?


OPENFILENAME
Windows NT Yes
Win95 Yes
Win32s Yes
Import Library -
Header File commdlg.h
Unicode WinNT
Platform Notes None
-----------------
什么意思???

快乐鹦鹉 2004-05-10
  • 打赏
  • 举报
回复


OPENFILENAME
Windows NT Yes
Win95 Yes
Win32s Yes
Import Library -
Header File commdlg.h
Unicode WinNT
Platform Notes None

快乐鹦鹉 2004-05-10
  • 打赏
  • 举报
回复
要包含commdlg.h
#include <commdlg.h>

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧