WEB开发网
开发学院软件开发VC 超强仿QQ自动伸缩窗口 阅读

超强仿QQ自动伸缩窗口

 2007-09-10 21:34:48 来源:WEB开发网   
核心提示: WM_ NCHITTESTWM_MOVINGWM_CREATEWM_TIMER然后来到对应的cpp文件,在头部定义一些宏: //收缩模式#define HM_NONE0//不收缩#define HM_TOP1//向上收缩#define HM_BOTTOM2//向下收缩#define HM_

WM_ NCHITTEST

WM_MOVING

WM_CREATE

WM_TIMER

然后来到对应的cpp文件,在头部定义一些宏:

//收缩模式
#define HM_NONE0//不收缩
#define HM_TOP1//向上收缩
#define HM_BOTTOM2//向下收缩
#define HM_LEFT3//向左收缩
#define HM_RIGHT4//向右收缩
#define CM_ELAPSE200 //检测鼠标是否离开窗口的时间间隔
#define HS_ELAPSE5//伸缩过程每步的时间间隔
#define HS_STEPS10//伸缩过程分成多少步完成
#define INTERVAL20//触发粘附时鼠标与屏幕边界的最小间隔,单位为象素
#define INFALTE10//触发收缩时鼠标与窗口边界的最小间隔,单位为象素

然后在构造函数初始化成员变量:

m_isSizeChanged = FALSE;
m_isSetTimer = FALSE;
m_hsFinished = TRUE;
m_hiding = FALSE;
m_oldWndHeight = MINCY;
m_taskBarHeight = 30;
m_edgeHeight = 0;
m_edgeWidth=0;
m_hideMode = HM_NONE;

完成了一些初始的工作,那么就开始进入关键的函数实现了。首先是在OnCreate做些窗口的初始化和获得一些系统信息。

int CQQHideWndDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
  
//获得任务栏高度
CWnd* p;
p = this->FindWindow("Shell_TrayWnd",NULL);
if(p != NULL)
{
CRect tRect;
p->GetWindowRect(tRect);
m_taskBarHeight = tRect.Height();
}
//修改风格使得他不在任务栏显示
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
//去掉关闭按键(如果想画3个按键的话)
//ModifyStyle(WS_SYSMENU,NULL);
  
//获得边缘高度和宽度
m_edgeHeight = GetSystemMetrics(SM_CYEDGE);
m_edgeWidth = GetSystemMetrics(SM_CXFRAME);
return 0;
}

上一页  1 2 3 4 5 6  下一页

Tags:超强 QQ 自动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接