关于windows编程的问题,请看过《windows核心编程指南》的请各位高手解答??

shengoo 2005-04-21 12:33:39
我下载了windows核心编程指南那本书的代码,仔细的研读了前几章教材,现在想分析教材所附带的源代码,但是现在遇到了这样几个问题:
按照教材的附录A,我设置好了VC的各种编译环境,尤其是作者说的几个问题,我都做了仔细的设置。但还是不能通过编译,主要的问题好像是处在windows对新版本函数的支持,系统提示是:

You are not using the latest Platform SDK header/library
files. This may prevent the project from building correctly.
........后面还有好多的错误的。还有好多的未定义的变量,
CmnHdr.h是个公共的头文件的。作者定义了好多很好用的宏。。。但是
在CmnHdr.h 这个头文件中有几个地有说明的:
#define _WIN32_WINNT 0x0500
定义系统支持最新的win2k函数。
//#define WINVER 0x0500

#ifndef WT_EXECUTEINPERSISTENTIOTHREAD
#pragma message("You are not using the latest Platform SDK header/library ")
#pragma message("files. This may prevent the project from building correctly.")
#endif
问题就出在这个地方了。上面的那个#ifndef WT_EXECUTEINPERSISTENTIOTHREAD
是个什么东西,就是搞不懂呀,在VC的那个地方要定义这个宏呢,是个什么含义呢,还有在CmnHdr.h
中有好几个函数都找不到的在msdn中如:

inline void chSETDLGICONS(HWND hwnd, int idi) {
SendMessage(hwnd, WM_SETICON, TRUE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
}
中的GetWindowLongPtr函数是个什么函数,怎么没有呢。编译器多次提示有错误的在那里。
请教高手怎么才能顺利的通过编译呢。谢谢,解决马上就结分
...全文
205 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2005-04-22
  • 打赏
  • 举报
回复
安装最新的SDK。
qiangv 2005-04-22
  • 打赏
  • 举报
回复
楼主,告诉你个解决的方法
安装最新的SDK。
不要改源程序了,人家写的源代码怎么可能会出错拿出来发行啊。

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/]
下载安装完后在工具-选项中设置SDK的路径,再编译,一切OK
shengoo 2005-04-21
  • 打赏
  • 举报
回复
to:uoyevili(爱什么呢?)你说的办法我刚开始就用过了。虽然不提示:
You are not using the latest Platform SDK header/library
files. This may prevent the project from building correctly.
这个了。但是回有很多的未定义的变量和函数的提示亚。都是在CmnHdr.h头文件中的函数亚。
如:GetWindowLongPtr
GWLP_HINSTANCE 等等函数变量等是未定义的。这个可能是win2k最新的变量宏和函数,但是就是不知道怎么才能让编译器支持呢。请教!!! ^_^
shengoo 2005-04-21
  • 打赏
  • 举报
回复
没人顶。我自己顶下,那位高手能回答我的问题了。我加分了???
shengoo 2005-04-21
  • 打赏
  • 举报
回复
有没有高手给指点下呀。我先顶下了
uoyevoli 2005-04-21
  • 打赏
  • 举报
回复
你试试在
#ifndef WT_EXECUTEINPERSISTENTIOTHREAD
之前加这个:
#define WT_EXECUTEINPERSISTENTIOTHREAD
shengoo 2005-04-21
  • 打赏
  • 举报
回复
楼上的不行呀。我按照你的定义做了#define,但是第一章的那个简单的程序编译就出现了下面的错误呀。到底是什么问题呢。请大家讨论下了。

-----------Configuration: 01 ErrorShow - Win32 Debug--------------------
Compiling...
ErrorShow.cpp
You are not using the latest Platform SDK header/library
files. This may prevent the project from building correctly.
c:\vcapp\winsys\01-errorshow\errorshow.cpp(83) : error C2065: 'PCTSTR' : undeclared identifier
c:\vcapp\winsys\01-errorshow\errorshow.cpp(83) : error C2146: syntax error : missing ')' before identifier 'LocalLock'
c:\vcapp\winsys\01-errorshow\errorshow.cpp(83) : error C2059: syntax error : ')'
c:\vcapp\winsys\01-errorshow\errorshow.cpp(125) : error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
None of the functions with this name in scope match the target type
Error executing cl.exe.
Creating browse info file...

01 ErrorShow.exe - 4 error(s), 0 warning(s)
wolfkain 2005-04-21
  • 打赏
  • 举报
回复
#define GetWindowLongPtr GetWindowLong
#define GWLP_HINSTANCE GWL_HINSTANCE
sun3411 2005-04-21
  • 打赏
  • 举报
回复
.net调试没问题 vc6我也不行
shengoo 2005-04-21
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,不过在《window编程核心指南》中的程序非常的多,那样的变量和函数在程序中非常多,一个个改不好了,关键我我有个问题没有搞清数的。msdn上说的#define _WIN32_WINNT 0x500就可以用win2k中的所有函数的,为什么在这种情况下不能很好的用这个函数呢。我应该是在那个地方的设置有点问题,就是不知道有没有看过这本书的人。并且调试过这本书的代码的高手呀。能给我解答下我的问题了。谢谢。
oyljerry 2005-04-21
  • 打赏
  • 举报
回复
GetWindowLongPtr和GetWindowLong本身功能没有太大的区别,不过是为了兼容以后的64位程序用的而已,要不改改函数和参数就可以了

16,548

社区成员

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

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

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