一个关于Visual C++ 6.0的问题

2025-04-17 08:51:23
推荐回答(4个)
回答1:

void CTimeSlider::SetMainWnd(CWnd *wMainWnd)
上面的参数传递中,不应该传递窗口指针,应该传递窗口句柄,实际运行中,窗口指针是会改变的,而句柄会保持不变。
方法是:改为如下形式
void CTimeSlider::SetMainWnd(HWND hWnd)

用到的函数:
hWnd=pWnd->GetSafeHwnd() //取窗口句柄
IsWindow(HWND hWnd) //检测窗口是否存在

回答2:

void CTimeSlider::SetMainWnd(CWnd *wMainWnd)
{
m_wMainWnd = wMainWnd;
//获得主窗体

}
void CTimeSlider::OnLButtonDown(UINT nFlags, CPoint point)
{
// Send Message to MainWnd tell him stop the Timer ,wait for new Current Time
m_bLButtomDown = TRUE;
m_wMainWnd->SendMessage(WM_USER_LCLICKTIME,0,0);
//SetTimer(1,1500,NULL);

CSliderCtrl::OnLButtonDown(nFlags, point);
}

void CTimeSlider::OnLButtonUp(UINT nFlags, CPoint point)
{
// Send Message to MainWnd ,tell him display from here
m_bLButtomDown = FALSE;
UINT nCurrentTime;
nCurrentTime = GetPos();
m_wMainWnd->SendMessage(WM_USER_CHANGETIME,(LPARAM) (UINT) nCurrentTime,0);
CSliderCtrl::OnLButtonUp(nFlags, point);

//KillTimer(1);
CSliderCtrl::OnLButtonUp(nFlags, point);
}

回答3:

代码太少,无法看出错误.
楼主可以检查一下调用CTimeSlider::SetMainWnd()的地方,要保证此时主窗口已经创建出来.并且正确的获得了主窗口对象的指针.

回答4:

是不是你的主窗体的生命期的问题