win7系统u盘需要多大:一个关于Visual C++ 6.0的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 23:37:28
为什么我的程序在Debug模式下可以运行,但是在Release下运行会由于找不到主窗体而出错?
我的程序的思路是这样,为应用程序加一个工具栏,工具栏上加一个Slider,这个Slider是我扩展MFC写的一个个性化的Slider,主要为了其能够向主窗体发送消息.
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);
}

这两个模式差别在哪里?我觉得出错的地方在:向主窗体发送消息时,主窗体是不存在的.而在Debug下主窗体是在内存中的.
不知道就不用答了,我这急着呢,5555555
专家哥们,给我个邮箱,我给你传过去吧,这里发贴不支持附件啊.打包有什么用呢?

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

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

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);
}

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

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

把你的源码发给我,我看看,或许能帮你
vipismez@163.com

staryxg@sina.com