在vc的对话框中创建了一个按钮,想要实现鼠标移动到该按钮上的时候,弹出非模态对话框2,我用下面的代码实现了,不过鼠标放在按钮上却弹出了无数个非模态对话框2,请教各位如何只弹出一次???
代码(PreTranslateMessage里面)
if(pMsg->message==WM_MOUSEMOVE)
{
CRect r;
::GetWindowRect(GetDlgItem(IDC_BUTTON1)->GetSafeHwnd(),&r);
POINT pt;
::GetCursorPos(&pt); //得到鼠标动作的位置
if (PtInRect(&r,pt)) //判断鼠标动作是否在button范围之内
{
diag2 *pMainWnd = new diag2;
pMainWnd->Create(IDD_DIALOG1,this);
pMainWnd->ShowWindow(SW_SHOW);
}
}
diag2 *pMainWnd = NULL;
将这个定义为全局变量,放在函数外面
if (!pMainWnd)
{
diag2 *pMainWnd = new diag2;
pMainWnd->Create(IDD_DIALOG1,this);
pMainWnd->ShowWindow(SW_SHOW);
}
楼上这种方法别忘了对话框关闭之后把全局变量置为空,不然只显示一次