1. 在Dialog添加一个Button控件
2. 创建一个基于CButton的新的类:CmyButton
3. 在创建好的Button控件添加CmyButton(Contral)成员变量
4. 在CmyButton类中添加 WM_MOUSEMOVE消息处理函数:
void CmyButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// ShowWindow(SW_HIDE);
// m_pbtn->ShowWindow(SW_SHOW);
static BOOL isRect = TRUE;
static int max_x;
static int max_y;
static int m_width;
static int m_height;
static int m_x = 0;
static int m_y = 0;
if (isRect)
{
CRect pRect,sRect;
GetWindowRect(&sRect);
GetParent()->GetWindowRect(&pRect);
max_x = pRect.Width() - sRect.Width();
max_y = pRect.Height() - sRect.Height()
- GetSystemMetrics(SM_CYCAPTION);;
m_width = sRect.Width();
m_height = sRect.Height();
isRect = FALSE;
}
srand((unsigned)time(NULL));
int x = m_x, y =m_y;
while (abs(m_x-x) <= m_width && abs(m_y-y) <= m_height)
{
x = rand()%max_x;
y = rand()%max_y;
}
m_x = x;
m_y = y;
SetWindowPos(this, m_x, m_y, m_width, m_height, SWP_NOZORDER);
CButton::OnMouseMove(nFlags, point);
}
参考知识:
1.获取屏幕的高宽
g_nScreenWidth = GetSystemMetrics(SM_CXSCREEN);g_nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
这两个肯定不会有误
2.获取标题栏、 菜单 栏高度
g_nScreenCaption = GetSystemMetrics(SM_CYCAPTION);
g_nScreenMenu = GetSystemMetrics(SM_CYMENU);