就是嵌入一个子窗口么?
资源里面插入一个对话框,属性Border选为None,Style选为Child,然后为之添加一个类,重载OnInitDialog(),自己设置大小和位置并开启定时器,处理WM_PAINT消息以自绘图片,处理WM_TIMER以更换图片。
最后在主对话框的类里面添加一个刚才定义的类的对象为成员变量m_dlg,并在主对话框的OnInitDialog()或OnCreate里面添加
m_dlg.Create(自定义对话框ID,this);
m_dlg.ShowWindow(SW_SHOW);就完成了
资源里面插入一个对话框,属性Border选为None,Style选为Child,然后为之添加一个类,重载OnInitDialog(),自己设置大小和位置并开启定时器,处理WM_PAINT消息以自绘图片,处理WM_TIMER以更换图片。
最后在主对话框的类里面添加一个刚才定义的类的对象为成员变量m_dlg,并在主对话框的OnInitDialog()或OnCreate里面添加
m_dlg.Create(自定义对话框ID,this);
m_dlg.ShowWindow(SW_SHOW);就完成了
定义成员变量CxxxDlg *m_pDlg;构造函数初始化之为NULL。
void OnWatch()
{
if (m_pDlg==NULL)
{
m_pDlg = new CxxxDlg;
m_pDlg->Create(自定义对话框ID,this);
m_pDlg->ShowWindow(SW_SHOW);
}
else
{
m_pDlg ->EndDialog(2);
delete m_pDlg;
m_pDlg = NULL;
}
}
if (m_pDlg!=NULL)
{
m_pDlg ->EndDialog(2);
delete m_pDlg;
m_pDlg = NULL;
}
就好了
设对话框类是CxxxDlg;
定义成员变量CxxxDlg m_dlg;
void OnWatch()
{
if (!::IsWindow(m_dlg.GetSafeHwnd()))
{
m_dlg.Create(自定义对话框ID,this);
m_dlg.ShowWindow(SW_SHOW);
}
else
{
m_dlg.EndDialog(2);
}
}说实话,上面的没试过,感觉应该可以,这样至少不用自己管理内存分配。你先试试吧,不行的话只能用另外一种麻烦的方法了
!m_dlg.IsWindowVisible()就可以了。