error C2146: syntax error : missing ';' before identifier 'hdr'

istring 2009-11-07 09:44:52
Platform:
OS:win7
Windows SDK 7.0
VS2008

[Partial source code]
...
typedef struct _PSHNOTIFY
{
NMHDR hdr;
LPARAM lParam;
} PSHNOTIFY, *LPPSHNOTIFY;
...

这个NMHDR定义明明就在(Go to Definition )已经看的见,可为什么就是编译出错呢
...全文
2570 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
_神秘人_ 2012-07-06
  • 打赏
  • 举报
回复
#ifndef XXX
#define XXX

是XXX重复定义了,遇到同样的问题,把这个XXX换个名称就ok
Daniel_li 2012-06-25
  • 打赏
  • 举报
回复
我也遇到的同样的问题,而且是在之前编译正常通过的,后来重新安装了一下VS2005,结果在运行的时候就产生了和楼主一样的错误,有谁给个具体的解决办法呀?
cattycat 2009-11-09
  • 打赏
  • 举报
回复
你可能少了在预编译选项中定义某个变量,找一下用这个头文件应该怎么配置环境。
陌上花花 2009-11-09
  • 打赏
  • 举报
回复
新手学习下
fengzhongdujuan 2009-11-09
  • 打赏
  • 举报
回复
VC中宏定义不像类定义一样有类向导。宏定义好像没有,只能手动定义。
istring 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 yutaooo 的回复:]
引用 17 楼 mengde007 的回复:
晕倒;微软的库文件还能错吗;是其他地方有问题;
不要重新定义库里面的结构;不错才怪;


我同意这样的观点。预期库文件出错是不太现实的事情。

并没有让 LZ 改头文件呀,只是追查宏常量的关系。最坏情况,也是非侵入的将宏定义写在自己的实现文件头部。

几点想法:
1. 以前弄过一段的windows,感觉上windows下的头文件,在include的时候,先后顺序是有关系的。
2. 假定WM_NOTIFY未定义是直接原因,那么LZ最好继续追查一下为什么这个宏常量未定义。这....很可能是另一个宏常量未定义导致的。
3. 追查最终的结果,也许,只要在最开始,#include <windows.h> 之类的主要头文件。就一切OK了。


[/Quote]
VC++里面有没有跟踪宏定义的工具啊?
istring 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 dqlihb 的回复:]
细心点,是打字错误之类的
[/Quote]
能说的详细点么
dqlihb 2009-11-08
  • 打赏
  • 举报
回复
细心点,是打字错误之类的
wxdcxp 2009-11-07
  • 打赏
  • 举报
回复
可能是某个变量未定义,或者缺少库文件造成的
yutaooo 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 mengde007 的回复:]
晕倒;微软的库文件还能错吗;是其他地方有问题;
不要重新定义库里面的结构;不错才怪;
[/Quote]

我同意这样的观点。预期库文件出错是不太现实的事情。

并没有让 LZ 改头文件呀,只是追查宏常量的关系。最坏情况,也是非侵入的将宏定义写在自己的实现文件头部。

几点想法:
1. 以前弄过一段的windows,感觉上windows下的头文件,在include的时候,先后顺序是有关系的。
2. 假定WM_NOTIFY未定义是直接原因,那么LZ最好继续追查一下为什么这个宏常量未定义。这....很可能是另一个宏常量未定义导致的。
3. 追查最终的结果,也许,只要在最开始,#include <windows.h> 之类的主要头文件。就一切OK了。

mengde007 2009-11-07
  • 打赏
  • 举报
回复
晕倒;微软的库文件还能错吗;是其他地方有问题;
不要重新定义库里面的结构;不错才怪;
istring 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yutaooo 的回复:]
引用 10 楼 istring 的回复:
引用 4 楼 yutaooo 的回复:
那先验证一下好啦。在这个结构体之前,typedef int NMHDR; 一下,看看到底是不是这个问题。

加上这个编译可以通过


既然如此,那么就先找到 NMHDR 的定义处,查找上下文中的 #ifdef XXXXXX,看看是哪个宏常量导致这段代码没有包括进来。

很大的可能,是要在编译选项中 -DXXXXXXX=nnnnn 什么的。
[/Quote]

很同意啊这个方法,如果是这样的话那就一定是WM_NOTIFY
// Notification structures
#ifndef WM_NOTIFY
#define WM_NOTIFY 0x004E

typedef struct _nmhdr
{
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
#endif // !WM_NOTIFY
yutaooo 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 istring 的回复:]
引用 4 楼 yutaooo 的回复:
那先验证一下好啦。在这个结构体之前,typedef int NMHDR; 一下,看看到底是不是这个问题。

加上这个编译可以通过
[/Quote]

既然如此,那么就先找到 NMHDR 的定义处,查找上下文中的 #ifdef XXXXXX,看看是哪个宏常量导致这段代码没有包括进来。

很大的可能,是要在编译选项中 -DXXXXXXX=nnnnn 什么的。
jackyjkchen 2009-11-07
  • 打赏
  • 举报
回复
别贴了,这是微软公司Windows sdk里的文件,不会错的,是你调用的地方语法出问题了!造成编译器的误判,这在VC中很常见
arong1234 2009-11-07
  • 打赏
  • 举报
回复
这是啥文件?
istring 2009-11-07
  • 打赏
  • 举报
回复
#define PROPSHEETPAGEA_V1_SIZE sizeof(PROPSHEETPAGEA_V1)
#define PROPSHEETPAGEW_V1_SIZE sizeof(PROPSHEETPAGEW_V1)

#define PROPSHEETPAGEA_V2_SIZE sizeof(PROPSHEETPAGEA_V2)
#define PROPSHEETPAGEW_V2_SIZE sizeof(PROPSHEETPAGEW_V2)

#define PROPSHEETPAGEA_V3_SIZE sizeof(PROPSHEETPAGEA_V3)
#define PROPSHEETPAGEW_V3_SIZE sizeof(PROPSHEETPAGEW_V3)

#if _WIN32_WINNT >= 0x0600
#define PROPSHEETPAGEA_V4_SIZE sizeof(PROPSHEETPAGEA_V4)
#define PROPSHEETPAGEW_V4_SIZE sizeof(PROPSHEETPAGEW_V4)
#endif


#if _WIN32_WINNT >= 0x0600
typedef PROPSHEETPAGEA_V4 PROPSHEETPAGEA_LATEST;
typedef PROPSHEETPAGEW_V4 PROPSHEETPAGEW_LATEST;
typedef LPPROPSHEETPAGEA_V4 LPPROPSHEETPAGEA_LATEST;
typedef LPPROPSHEETPAGEW_V4 LPPROPSHEETPAGEW_LATEST;
typedef LPCPROPSHEETPAGEA_V4 LPCPROPSHEETPAGEA_LATEST;
typedef LPCPROPSHEETPAGEW_V4 LPCPROPSHEETPAGEW_LATEST;
#else
typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA_LATEST;
typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW_LATEST;
typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA_LATEST;
typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW_LATEST;
typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA_LATEST;
typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW_LATEST;
#endif


#if _WIN32_WINNT >= 0x0600
typedef PROPSHEETPAGEA_V4 PROPSHEETPAGEA;
typedef PROPSHEETPAGEW_V4 PROPSHEETPAGEW;
typedef LPPROPSHEETPAGEA_V4 LPPROPSHEETPAGEA;
typedef LPPROPSHEETPAGEW_V4 LPPROPSHEETPAGEW;
typedef LPCPROPSHEETPAGEA_V4 LPCPROPSHEETPAGEA;
typedef LPCPROPSHEETPAGEW_V4 LPCPROPSHEETPAGEW;
#elif (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED
typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA;
typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW;
typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA;
typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW;
typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA;
typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW;
#elif (_WIN32_IE >= 0x0400)
typedef PROPSHEETPAGEA_V2 PROPSHEETPAGEA;
typedef PROPSHEETPAGEW_V2 PROPSHEETPAGEW;
typedef LPPROPSHEETPAGEA_V2 LPPROPSHEETPAGEA;
typedef LPPROPSHEETPAGEW_V2 LPPROPSHEETPAGEW;
typedef LPCPROPSHEETPAGEA_V2 LPCPROPSHEETPAGEA;
typedef LPCPROPSHEETPAGEW_V2 LPCPROPSHEETPAGEW;
#else
typedef PROPSHEETPAGEA_V1 PROPSHEETPAGEA;
typedef PROPSHEETPAGEW_V1 PROPSHEETPAGEW;
typedef LPPROPSHEETPAGEA_V1 LPPROPSHEETPAGEA;
typedef LPPROPSHEETPAGEW_V1 LPPROPSHEETPAGEW;
typedef LPCPROPSHEETPAGEA_V1 LPCPROPSHEETPAGEA;
typedef LPCPROPSHEETPAGEW_V1 LPCPROPSHEETPAGEW;
#endif

#ifdef UNICODE
#define PROPSHEETPAGE PROPSHEETPAGEW
#define LPPROPSHEETPAGE LPPROPSHEETPAGEW
#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW
#define PROPSHEETPAGE_V1_SIZE PROPSHEETPAGEW_V1_SIZE
#define PROPSHEETPAGE_V2_SIZE PROPSHEETPAGEW_V2_SIZE
#define PROPSHEETPAGE_V1 PROPSHEETPAGEW_V1
#define LPPROPSHEETPAGE_V1 LPPROPSHEETPAGEW_V1
#define LPCPROPSHEETPAGE_V1 LPCPROPSHEETPAGEW_V1
#define PROPSHEETPAGE_V2 PROPSHEETPAGEW_V2
#define LPPROPSHEETPAGE_V2 LPPROPSHEETPAGEW_V2
#define LPCPROPSHEETPAGE_V2 LPCPROPSHEETPAGEW_V2
#define PROPSHEETPAGE_V3 PROPSHEETPAGEW_V3
#define LPPROPSHEETPAGE_V3 LPPROPSHEETPAGEW_V3
#define LPCPROPSHEETPAGE_V3 LPCPROPSHEETPAGEW_V3
#if _WIN32_WINNT >= 0x0600
#define PROPSHEETPAGE_V4 PROPSHEETPAGEW_V4
#define LPPROPSHEETPAGE_V4 LPPROPSHEETPAGEW_V4
#define LPCPROPSHEETPAGE_V4 LPCPROPSHEETPAGEW_V4
#endif
#define PROPSHEETPAGE_LATEST PROPSHEETPAGEW_LATEST
#define LPPROPSHEETPAGE_LATEST LPPROPSHEETPAGEW_LATEST
#define LPCPROPSHEETPAGE_LATEST LPCPROPSHEETPAGEW_LATEST
#else
#define PROPSHEETPAGE PROPSHEETPAGEA
#define LPPROPSHEETPAGE LPPROPSHEETPAGEA
#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA
#define PROPSHEETPAGE_V1_SIZE PROPSHEETPAGEA_V1_SIZE
#define PROPSHEETPAGE_V2_SIZE PROPSHEETPAGEA_V2_SIZE
#define PROPSHEETPAGE_V1 PROPSHEETPAGEA_V1
#define LPPROPSHEETPAGE_V1 LPPROPSHEETPAGEA_V1
#define LPCPROPSHEETPAGE_V1 LPCPROPSHEETPAGEA_V1
#define PROPSHEETPAGE_V2 PROPSHEETPAGEA_V2
#define LPPROPSHEETPAGE_V2 LPPROPSHEETPAGEA_V2
#define LPCPROPSHEETPAGE_V2 LPCPROPSHEETPAGEA_V2
#define PROPSHEETPAGE_V3 PROPSHEETPAGEA_V3
#define LPPROPSHEETPAGE_V3 LPPROPSHEETPAGEA_V3
#define LPCPROPSHEETPAGE_V3 LPCPROPSHEETPAGEA_V3
#if _WIN32_WINNT >= 0x0600
#define PROPSHEETPAGE_V4 PROPSHEETPAGEA_V4
#define LPPROPSHEETPAGE_V4 LPPROPSHEETPAGEA_V4
#define LPCPROPSHEETPAGE_V4 LPCPROPSHEETPAGEA_V4
#endif
#define PROPSHEETPAGE_LATEST PROPSHEETPAGEA_LATEST
#define LPPROPSHEETPAGE_LATEST LPPROPSHEETPAGEA_LATEST
#define LPCPROPSHEETPAGE_LATEST LPCPROPSHEETPAGEA_LATEST
#endif


//----- PropSheet Header related ---------

#define PSH_DEFAULT 0x00000000
#define PSH_PROPTITLE 0x00000001
#define PSH_USEHICON 0x00000002
#define PSH_USEICONID 0x00000004
#define PSH_PROPSHEETPAGE 0x00000008

#define PSH_WIZARDHASFINISH 0x00000010
#define PSH_WIZARD 0x00000020
#define PSH_USEPSTARTPAGE 0x00000040
#define PSH_NOAPPLYNOW 0x00000080

#define PSH_USECALLBACK 0x00000100
#define PSH_HASHELP 0x00000200
#define PSH_MODELESS 0x00000400
#define PSH_RTLREADING 0x00000800

#define PSH_WIZARDCONTEXTHELP 0x00001000

#if (_WIN32_IE >= 0x0400)
//----- New flags for wizard97 -----------
#if (_WIN32_IE < 0x0500)
#define PSH_WIZARD97 0x00002000
#else
#define PSH_WIZARD97 0x01000000
#endif
#define PSH_WATERMARK 0x00008000

#define PSH_USEHBMWATERMARK 0x00010000 // user pass in a hbmWatermark instead of pszbmWatermark
#define PSH_USEHPLWATERMARK 0x00020000 //
#define PSH_STRETCHWATERMARK 0x00040000 // stretchwatermark also applies for the header
#define PSH_HEADER 0x00080000

#define PSH_USEHBMHEADER 0x00100000
#define PSH_USEPAGELANG 0x00200000 // use frame dialog template matched to page
//----------------------------------------
#endif

#if (_WIN32_IE >= 0x0500)
//----- New flags for wizard-lite --------
#define PSH_WIZARD_LITE 0x00400000
#define PSH_NOCONTEXTHELP 0x02000000
//----------------------------------------
#endif


#if _WIN32_WINNT >= 0x0600
#define PSH_AEROWIZARD 0x00004000

#define PSH_RESIZABLE 0x04000000
#define PSH_HEADERBITMAP 0x08000000
#define PSH_NOMARGIN 0x10000000
#endif



typedef int (CALLBACK *PFNPROPSHEETCALLBACK)(HWND, UINT, LPARAM);

#define PROPSHEETHEADERA_V1_FIELDS \
DWORD dwSize; \
DWORD dwFlags; \
HWND hwndParent; \
HINSTANCE hInstance; \
union \
{ \
HICON hIcon; \
LPCSTR pszIcon; \
} DUMMYUNIONNAME; \
LPCSTR pszCaption; \
UINT nPages; \
union \
{ \
UINT nStartPage; \
LPCSTR pStartPage; \
} DUMMYUNIONNAME2; \
union \
{ \
LPCPROPSHEETPAGEA ppsp; \
HPROPSHEETPAGE *phpage; \
} DUMMYUNIONNAME3; \
PFNPROPSHEETCALLBACK pfnCallback;

typedef struct _PROPSHEETHEADERA_V1
{
PROPSHEETHEADERA_V1_FIELDS
} PROPSHEETHEADERA_V1, *LPPROPSHEETHEADERA_V1;
typedef const PROPSHEETHEADERA_V1 *LPCPROPSHEETHEADERA_V1;

#if (_WIN32_IE >= 0x0400)
typedef struct _PROPSHEETHEADERA_V2
{
PROPSHEETHEADERA_V1_FIELDS
union
{
HBITMAP hbmWatermark;
LPCSTR pszbmWatermark;
} DUMMYUNIONNAME4;
HPALETTE hplWatermark;
union
{
HBITMAP hbmHeader; // Header bitmap shares the palette with watermark
LPCSTR pszbmHeader;
} DUMMYUNIONNAME5;
} PROPSHEETHEADERA_V2, *LPPROPSHEETHEADERA_V2;
typedef const PROPSHEETHEADERA_V2 *LPCPROPSHEETHEADERA_V2;
#endif

#define PROPSHEETHEADERW_V1_FIELDS \
DWORD dwSize; \
DWORD dwFlags; \
HWND hwndParent; \
HINSTANCE hInstance; \
union \
{ \
HICON hIcon; \
LPCWSTR pszIcon; \
} DUMMYUNIONNAME; \
LPCWSTR pszCaption; \
UINT nPages; \
union \
{ \
UINT nStartPage; \
LPCWSTR pStartPage; \
} DUMMYUNIONNAME2; \
union \
{ \
LPCPROPSHEETPAGEW ppsp; \
HPROPSHEETPAGE *phpage; \
} DUMMYUNIONNAME3; \
PFNPROPSHEETCALLBACK pfnCallback;
istring 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jackyjkchen 的回复:]
你至少把prsht.h和winhttp.h两个文件贴出来……
[/Quote]
先贴prsht.h(windows sdk 7.0)

/*****************************************************************************\
* *
* prsht.h - - Interface for the Windows Property Sheet Pages *
* *
* Version 1.0 *
* *
* Copyright (c) Microsoft Corporation. All rights reserved. *
* *
\*****************************************************************************/

#ifndef _PRSHT_H_
#define _PRSHT_H_


//
// Define API decoration for direct importing of DLL references.
//
#ifndef WINCOMMCTRLAPI
#if !defined(_COMCTL32_) && defined(_WIN32)
#define WINCOMMCTRLAPI DECLSPEC_IMPORT
#else
#define WINCOMMCTRLAPI
#endif
#endif // WINCOMMCTRLAPI

//
// For compilers that don't support nameless unions
//
#ifndef DUMMYUNIONNAME
#ifdef NONAMELESSUNION
#define DUMMYUNIONNAME u
#define DUMMYUNIONNAME2 u2
#define DUMMYUNIONNAME3 u3
#define DUMMYUNIONNAME4 u4
#define DUMMYUNIONNAME5 u5
#else
#define DUMMYUNIONNAME
#define DUMMYUNIONNAME2
#define DUMMYUNIONNAME3
#define DUMMYUNIONNAME4
#define DUMMYUNIONNAME5
#endif
#endif // DUMMYUNIONNAME

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(push)
#pragma warning(disable:4201) /* nonstandard extension used : nameless struct/union */
#endif


#ifdef _WIN64
#include <pshpack8.h>
#else
#include <pshpack4.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif


#ifndef SNDMSG
#ifdef __cplusplus
#ifndef _MAC
#define SNDMSG ::SendMessage
#else
#define SNDMSG ::AfxSendMessage
#endif
#else
#ifndef _MAC
#define SNDMSG SendMessage
#else
#define SNDMSG AfxSendMessage
#endif
#endif
#endif // ifndef SNDMSG

#ifndef PSTMSG
#ifdef __cplusplus
#define PSTMSG ::PostMessage
#else
#define PSTMSG PostMessage
#endif
#endif // ifndef PSTMSG

#define MAXPROPPAGES 100

struct _PSP;
typedef struct _PSP * HPROPSHEETPAGE;

#ifndef MIDL_PASS
struct _PROPSHEETPAGEA;
struct _PROPSHEETPAGEW;
#endif

typedef UINT (CALLBACK *LPFNPSPCALLBACKA)(HWND hwnd, UINT uMsg, struct _PROPSHEETPAGEA *ppsp);
typedef UINT (CALLBACK *LPFNPSPCALLBACKW)(HWND hwnd, UINT uMsg, struct _PROPSHEETPAGEW *ppsp);

#ifdef UNICODE
#define LPFNPSPCALLBACK LPFNPSPCALLBACKW
#else
#define LPFNPSPCALLBACK LPFNPSPCALLBACKA
#endif

#define PSP_DEFAULT 0x00000000
#define PSP_DLGINDIRECT 0x00000001
#define PSP_USEHICON 0x00000002
#define PSP_USEICONID 0x00000004
#define PSP_USETITLE 0x00000008
#define PSP_RTLREADING 0x00000010

#define PSP_HASHELP 0x00000020
#define PSP_USEREFPARENT 0x00000040
#define PSP_USECALLBACK 0x00000080
#define PSP_PREMATURE 0x00000400

#if (_WIN32_IE >= 0x0400)
//----- New flags for wizard97 --------------
#define PSP_HIDEHEADER 0x00000800
#define PSP_USEHEADERTITLE 0x00001000
#define PSP_USEHEADERSUBTITLE 0x00002000
//-------------------------------------------
#endif
#if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED
#define PSP_USEFUSIONCONTEXT 0x00004000
#endif


#if (_WIN32_IE >= 0x0500)
#define PSPCB_ADDREF 0
#endif
#define PSPCB_RELEASE 1
#define PSPCB_CREATE 2

#ifdef _WIN32
typedef LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE;
#else
typedef const VOID* PROPSHEETPAGE_RESOURCE;
#endif

#define PROPSHEETPAGEA_V1_FIELDS \
DWORD dwSize; \
DWORD dwFlags; \
HINSTANCE hInstance; \
union \
{ \
LPCSTR pszTemplate; \
PROPSHEETPAGE_RESOURCE pResource; \
} DUMMYUNIONNAME; \
union \
{ \
HICON hIcon; \
LPCSTR pszIcon; \
} DUMMYUNIONNAME2; \
LPCSTR pszTitle; \
DLGPROC pfnDlgProc; \
LPARAM lParam; \
LPFNPSPCALLBACKA pfnCallback; \
UINT *pcRefParent; \

#define PROPSHEETPAGEW_V1_FIELDS \
DWORD dwSize; \
DWORD dwFlags; \
HINSTANCE hInstance; \
union \
{ \
LPCWSTR pszTemplate; \
PROPSHEETPAGE_RESOURCE pResource; \
} DUMMYUNIONNAME; \
union \
{ \
HICON hIcon; \
LPCWSTR pszIcon; \
} DUMMYUNIONNAME2; \
LPCWSTR pszTitle; \
DLGPROC pfnDlgProc; \
LPARAM lParam; \
LPFNPSPCALLBACKW pfnCallback; \
UINT *pcRefParent; \

#if _WIN32_WINNT >= 0x0600
#define _PROPSHEETPAGEA_V4 _PROPSHEETPAGEA
#define _PROPSHEETPAGEW_V4 _PROPSHEETPAGEW
#elif (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED
#define _PROPSHEETPAGEA_V3 _PROPSHEETPAGEA
#define _PROPSHEETPAGEW_V3 _PROPSHEETPAGEW
#elif (_WIN32_IE >= 0x0400)
#define _PROPSHEETPAGEA_V2 _PROPSHEETPAGEA
#define _PROPSHEETPAGEW_V2 _PROPSHEETPAGEW
#else
#define _PROPSHEETPAGEA_V1 _PROPSHEETPAGEA
#define _PROPSHEETPAGEW_V1 _PROPSHEETPAGEW
#endif

typedef struct _PROPSHEETPAGEA_V1
{
PROPSHEETPAGEA_V1_FIELDS
} PROPSHEETPAGEA_V1, *LPPROPSHEETPAGEA_V1;
typedef const PROPSHEETPAGEA_V1 *LPCPROPSHEETPAGEA_V1;

typedef struct _PROPSHEETPAGEA_V2
{
PROPSHEETPAGEA_V1_FIELDS

LPCSTR pszHeaderTitle; // this is displayed in the header
LPCSTR pszHeaderSubTitle; //
} PROPSHEETPAGEA_V2, *LPPROPSHEETPAGEA_V2;
typedef const PROPSHEETPAGEA_V2 *LPCPROPSHEETPAGEA_V2;

typedef struct _PROPSHEETPAGEA_V3
{
PROPSHEETPAGEA_V1_FIELDS

LPCSTR pszHeaderTitle; // this is displayed in the header
LPCSTR pszHeaderSubTitle; //

HANDLE hActCtx;
} PROPSHEETPAGEA_V3, *LPPROPSHEETPAGEA_V3;
typedef const PROPSHEETPAGEA_V3 *LPCPROPSHEETPAGEA_V3;

#if _WIN32_WINNT >= 0x0600
typedef struct _PROPSHEETPAGEA_V4
{
PROPSHEETPAGEA_V1_FIELDS

LPCSTR pszHeaderTitle; // this is displayed in the header
LPCSTR pszHeaderSubTitle; //

HANDLE hActCtx;

union
{
HBITMAP hbmHeader;
LPCSTR pszbmHeader;
} DUMMYUNIONNAME3;

} PROPSHEETPAGEA_V4, *LPPROPSHEETPAGEA_V4;
typedef const PROPSHEETPAGEA_V4 *LPCPROPSHEETPAGEA_V4;
#endif

typedef struct _PROPSHEETPAGEW_V1
{
PROPSHEETPAGEW_V1_FIELDS
} PROPSHEETPAGEW_V1, *LPPROPSHEETPAGEW_V1;
typedef const PROPSHEETPAGEW_V1 *LPCPROPSHEETPAGEW_V1;

typedef struct _PROPSHEETPAGEW_V2
{
PROPSHEETPAGEW_V1_FIELDS

LPCWSTR pszHeaderTitle; // this is displayed in the header
LPCWSTR pszHeaderSubTitle; //
} PROPSHEETPAGEW_V2, *LPPROPSHEETPAGEW_V2;
typedef const PROPSHEETPAGEW_V2 *LPCPROPSHEETPAGEW_V2;

typedef struct _PROPSHEETPAGEW_V3
{
PROPSHEETPAGEW_V1_FIELDS

LPCWSTR pszHeaderTitle; // this is displayed in the header
LPCWSTR pszHeaderSubTitle; //

HANDLE hActCtx;
} PROPSHEETPAGEW_V3, *LPPROPSHEETPAGEW_V3;
typedef const PROPSHEETPAGEW_V3 *LPCPROPSHEETPAGEW_V3;

#if _WIN32_WINNT >= 0x0600
typedef struct _PROPSHEETPAGEW_V4
{
PROPSHEETPAGEW_V1_FIELDS

LPCWSTR pszHeaderTitle; // this is displayed in the header
LPCWSTR pszHeaderSubTitle; //

HANDLE hActCtx;

union
{
HBITMAP hbmHeader;
LPCWSTR pszbmHeader;
} DUMMYUNIONNAME3;

} PROPSHEETPAGEW_V4, *LPPROPSHEETPAGEW_V4;
typedef const PROPSHEETPAGEW_V4 *LPCPROPSHEETPAGEW_V4;
#endif
istring 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yutaooo 的回复:]
那先验证一下好啦。在这个结构体之前,typedef int NMHDR; 一下,看看到底是不是这个问题。
[/Quote]
加上这个编译可以通过
jackyjkchen 2009-11-07
  • 打赏
  • 举报
回复
你至少把prsht.h和winhttp.h两个文件贴出来……
istring 2009-11-07
  • 打赏
  • 举报
回复
Error 1 error C2146: syntax error : missing ';' before identifier 'hdr' e:\ry\inc\prsht.h 643
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int e:\ry\inc\prsht.h 643
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int e:\ry\inc\prsht.h 643
Error 5 error C2146: syntax error : missing ';' before identifier 'LocalAddress' e:\ry\inc\winhttp.h 279
Error 6 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int e:\ry\inc\winhttp.h 279
Error 7 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int e:\ry\inc\winhttp.h 279
加载更多回复(7)

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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