科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件编程技巧20法之四:禁止/启用系统热键

编程技巧20法之四:禁止/启用系统热键

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

编程技巧20法之四:禁止/启用系统热键

作者:徐景周 来源:赛迪网 2007年11月6日

关键字: 系统热键 禁止 编程技巧 Linux

  • 评论
  • 分享微博
  • 分享邮件

8.如何禁止/启用系统热键

bool bOld;
● 禁止系统热键
 //屏蔽掉系统键
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,true,&bOld,
SPIF_UPDATEINIFILE);
● 启用系统热键
//恢复系统热键	
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,false,&bOld,
SPIF_UPDATEINIFILE);

9.如何隐藏/显示WINDOWS系统任务栏

● 隐藏系统任务栏

//隐藏WINDOWS系统任务栏
	::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);

● 显示系统任务栏

//恢复WINDOWS系统任务栏正常显示
::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_SHOW);

10.如何实现窗口到系统区图标间的动画效果

//********************************************************************************
//* 名称:FindTrayWnd
//* 作者:徐景周(jingzhou_xu@163.net)
//* 功能:在显示窗体动画效果前,先寻找系统区位置
//********************************************************************************
BOOL CALLBACK FindTrayWnd(HWND hwnd, LPARAM lParam)
{
    TCHAR szClassName[256];
    GetClassName(hwnd, szClassName, 255);
    // 比较窗口类名
    if (_tcscmp(szClassName, _T("TrayNotifyWnd")) == 0)
    {
        CRect *pRect = (CRect*) lParam;
        ::GetWindowRect(hwnd, pRect);
        return TRUE;
    }
    // 当找到时钟窗口时表示可以结束了
    if (_tcscmp(szClassName, _T("TrayClockWClass")) == 0)
    {
        CRect *pRect = (CRect*) lParam;
        CRect rectClock;
        ::GetWindowRect(hwnd, rectClock);
        pRect->right = rectClock.left;
        return FALSE;
    }
    return TRUE;
}
//********************************************************************************
//* 名称:WinAnimation
//* 作者:徐景周(jingzhou_xu@163.net)
//* 功能:显示窗口动画效果的涵数
//********************************************************************************
void CScreenSnapDlg::WinAnimation(BOOL ShowFlag) 
{
    CRect rect(0,0,0,0);
    // 查找托盘窗口 
    CWnd* pWnd = FindWindow("Shell_TrayWnd", NULL);
    if (pWnd)
    {
        pWnd->GetWindowRect(rect);
		EnumChildWindows(pWnd->m_hWnd, FindTrayWnd, (LPARAM)&rect);
		//rect 为托盘区矩形
		CRect rcWnd;
		GetWindowRect(rcWnd);
		if(ShowFlag)		//窗体滑向系统区
		  DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,rcWnd,rect);
		else		//窗体从系统区滑出
		  DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,rect,rcWnd);
    }
}

用法如下:

if(IsWindowVisible())		 //窗体是否已隐藏
{
	ShowWindow(SW_HIDE);           //先隐藏窗体
	WinAnimation(true);	     //窗体动画滑入到系统区中 
}
else
{
WinAnimation(false);		 //窗体动画从系统区滑出 
	ShowWindow(SW_SHOW);
}

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章