类似flashget的浮动窗口的实现
http://tech.ddvip.com 2008年06月11日 社区交流
本文详细介绍类似flashget的浮动窗口的实现
hwnd是要改变的窗口,当dwFlags为LWA_ALPHA(0x2)时,crKey参数没用,bAlpha为透明度,取值在0~255之间。该函数要从User.dll中载入。//更新窗口透明度的代码,其中iTransparent为透明度。 5、双击可以将主窗口激活并显示。由于WM_HITTEST消息的影响,我们双击鼠标的时候产生的是WM_NCLBUTTONDBLCLK消息,而不是WM_LBUTTONDBLCLK消息。
void CFloatWnd::OnUpdateTransparent(int iTransparent)
{
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *SLWA)(HWND,COLORREF,BYTE,DWORD);
SLWA pFun = NULL;
//取得SetLayeredWindowAttributes函数指针
pFun = (SLWA)GetProcAddress(hInst,"SetLayeredWindowAttributes");
if(pFun)
{
pFun(m_hWnd,0,iTransparent,2);
}
FreeLibrary(hInst);
}
}void CFloatWnd::OnNcLButtonDblClk(UINT nFlags, CPoint point) 关于调节透明度的Slider使用,也写了一些代码,一并贴出来,供大家参考。
{
// TODO: Add your message handler code here and/or call default
CWnd *pParent = GetParent();
ASSERT(pParent);
//显示窗口
if(!pParent->IsWindowVisible())
pParent->ShowWindow(SW_SHOW);
//置窗口到最前面
pParent->SetForegroundWindow();
CDialog::OnNcLButtonDblClk(nFlags, point);
}void CMainDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 至于该窗口的右键菜单,窗口的显示与隐藏,程序的退出等简单代码我就不多介绍了。
{
// TODO: Add your message handler code here and/or call default
//得到Slider的位置
int iCurPos = m_Slider.GetPos();
//得到最大值、最小值,及页大小
int nMax = m_Slider.GetRangeMax();
int nMin = m_Slider.GetRangeMin();
int nPageSize = m_Slider.GetPageSize();
switch(nSBCode)
{
case SB_LINELEFT:
if(iCurPos > nMin)
iCurPos --;
break;
case SB_LINERIGHT:
if(iCurPos < nMax)
iCurPos ++;
break;
case SB_PAGELEFT:
if(iCurPos > nMin)
iCurPos = max(nMin,iCurPos - nPageSize);
break;
case SB_PAGERIGHT:
if(iCurPos < nMax)
iCurPos = min(nMax,iCurPos + nPageSize);
break;
case SB_THUMBTRACK:
iCurPos = nPos;
break;
case SB_THUMBPOSITION:
iCurPos = nPos;
break;
}
//设置Slider位置
m_Slider.SetPos(iCurPos);
//更新透明度
pFloatWnd->OnUpdateTransparent(iCurPos);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
三、该程序在Windows xp sp2和Visual C++6.0下编译调试成功。
来源:vckbase 作者:苍竹先生 责编:豆豆技术应用
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……