十四:GDI+ 绘制窗口 感受不一样的神奇

本文介绍了如何使用GDI+在Windows应用程序中实现窗口透明和PNG图片的绘制,通过GdiplusStartup初始化GDI+,利用UpdateLayeredWindow函数更新窗口,并详细解释了相关参数设置和混合样式。同时,提供了从资源加载PNG图片的方法。
摘要由CSDN通过智能技术生成

第一:在GDI.rc导入PNG图片s

第二:在stdafx.h中加上下列GDI的头文件

#include "c:/GDIPlus/includes/gdiplus.h"   请修改为你的头文件路径
using namespace Gdiplus; 
#pragma comment(lib, "c://GDIPlus//lib//gdiplus.lib") 请修改为你的.lib文件路径

 

第三:在GDIDlg.cpp 中的OnCreate假如下列

int  CGDIDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 // 使用GdiplusStartup初始化GDI+
 GdiplusStartupInput gdiplusStartupInput;
 ULONG_PTR           gdiplusToken;
 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

 //初始化gdiplus界面色调的环境混合样式 
 // Initialize GDI+.
 BLENDFUNCTION m_Blend;//初始化GDI的环境混合样式
 m_Blend.BlendOp=0; //theonlyBlendOpdefinedinWindows2000
 m_Blend.BlendFlags=0; //nothingelseisspecial...
 m_Blend.AlphaFormat=1; //...
 m_Blend.SourceConstantAlpha=255;//AC_SRC_ALPHA

 /*在这一步中需要特别说明的是,在创建透明窗口式需要调用一个Windows API函数UpdateLayeredWindow(),
 该函数在.net以上的版本的SDK中有申明,但是在VC6.0下要调用要么下载200多兆的高版本SDK,
 要么从动态链接库“User32.dll”中调用,这里选择从“User32.dll”中调用。以上定义中后三项就是为此作准备的*/
 HINSTANCE hFuncInst;
 typedef BOOL (WINAPI *MYFUNC)(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
    MYFUNC UpdateLayeredWindow;
 hFuncInst = LoadLibrary(_T("User32.DLL"));
 BOOL bRet=FALSE;
 if(hFuncInst)
  UpdateLayeredWindow=(MYFUNC)GetProcAddress(hFuncInst, "UpdateLayeredWindow");
 else
 {
  MessageBox(_T("User32.dll ERROR!"));
  exit(0);
 }

 //去除任务栏窗口对应按钮
 ModifyStyleEx (WS_EX_APPWINDOW,WS_EX_TOOLWINDOW );

 //本窗口句柄
 m_hWnd=this->GetSafeHwnd();

 //当前窗口的DC
 HDC hdcScreen=::GetWindowDC (m_hWnd);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值