65.9K
CodeProject 正在变化。 阅读更多。
Home

带 GDI+ 的 MFC TXPBAR

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.57/5 (13投票s)

2008 年 6 月 24 日

CPOL
viewsIcon

170736

downloadIcon

5514

一个适用于 MFC 的带 GDI+ 的 XP 栏,类似于 Apple 的 Dock 栏。

TXBar

引言

这是一个类似于 Apple Dock 栏的 XP Dock 栏程序。它使用翻转动画效果来切换滚动。

使用代码

步骤 1。 这一步包括加载库“User32.DLL”以获取“UpdateLayeredWindow”函数。这是一种逐像素透明度。因此,我们不再有锯齿边缘。

hFuncInst = LoadLibrary("User32.DLL"); 
BOOL bRet=FALSE;
if(hFuncInst){ 
    UpdateLayeredWindow=(MYFUNC)GetProcAddress(hFuncInst, "UpdateLayeredWindow");
}
else
{
    AfxMessageBox("User32.dll ERROR!");
    exit(0);
}

步骤 2。 初始化 GDI+。

m_Blend.BlendOp=0; //the only BlendOp defined in Windows2000
m_Blend.BlendFlags=0; //nothing else isspecial...
m_Blend.AlphaFormat=1;
m_Blend.SourceConstantAlpha=255;//AC_SRC_ALPHA

步骤 3。现在,是 DrawTXBar 函数。

void DrawTXBar()
{
    DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);
    if((dwExStyle&0x80000)!=0x80000)
    SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
    BOOL bRet=FALSE;
    bRet= UpdateLayeredWindow( m_hWnd,hdcScreen,&ptWinPos, 
          &sizeWindow,m_hdcMemory,&ptSrc,0,&m_Blend,2);
    //UpdateLayeredWindow" must By execute 
    //one hypo- one to Update the alpha window's Image.
    ...
}

关注点

必须执行 API 函数“UpdateLayeredWindow”才能更新 Alpha 窗口的图像。

© . All rights reserved.