安装WindowsSDK,使VC6支持新系统的功能函数

最新学习VC,手头的教材和电子书,视频教学都是基于VC6的,虽然也安装了VS2003和Vs2005,但必竟与VC6的IDE函数相差很多,为了不在使用开发工具上浪费时间,所以我选择了VC6作为学习的工具.在学习的过程中遇到一个小例子,就是使窗口半透明化.代码是这样的:

SetWindowLong( this -> GetSafeHwnd(),GWL_EXSTYLE,
    GetWindowLong(
this -> GetSafeHwnd(),GWL_EXSTYLE) ^ 0x80000 );
HINSTANCE hInst
= LoadLibrary( " User32.DLL " );
if (hInst)
{
    typedef BOOL    (WINAPI 
* MYFUNC)(HWND,COLORREF,BYTE,DWORD);
    MYFUNC fun
=NULL;

    
//取得SetLayeredWindowAttributes函数指针
    fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
    
if(fun)
     fun(
this->GetSafeHwnd(),0,128,2);
    FreeLibrary(hInst);
}


 
可以看到这是动态的从User32.dl中取得函数地址然后调用的.而我在VS2005环境下可以直接使用 SetLayeredWindowAttributes,代码如下:
    SetWindowLong( this -> GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong( this -> GetSafeHwnd(),GWL_EXSTYLE) ^ WS_EX_LAYERED);
    SetLayeredWindowAttributes(
this -> m_hWnd, 0 , 100 , 2 );

而如果在VC6下面使用这样的代码将来报错误:找不到标识符 SetLayeredWindowAttributes.为什么呢?
原来 SetLayeredWindowAttributes函数只有在Win2000以上的系统才支持,而VC是98年的产物(快10年了),它自带的SDK自然也是98年的,所以才没有这个函数的头文件和对应的Lib.知道原因后就好办了,首先下载SDK,开始想下个最新的.是06年的 Win2003的,但从说明中看到不支持VC,没办法,接着找,终于被我找到XPSP2的一个SDK,下载地址是: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm,下载后解压CAB,安装,通过开始菜单中的设置环境变量,手动的在VC6的选项中增加对SDK目录的Include和Lib的条目,再次编译终于通过.但美中不足的是,新增加的函数没有语法提示:(
最后说一下,上面的两种写法,第一种还是比较稳妥的,因为在98下就会找不到这个函数的地址,但是估计第二种也不会有什么问题,必竟现在是XP的天下,95,98,ME只是我夸口自己玩电脑N年的谈资了.呵呵.

转载于:https://www.cnblogs.com/fxwdl/archive/2007/12/13/993861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值