自己写了一个基于对话框的秒表程序,为了让时间在刷新时,不出现闪烁现象,使用了双缓冲来显示时间,但是遇到了一个问题就是:如果秒表正常运行没问题,但当暂停程序后,程序一刷新(当对话框被其他的程序遮住后,再显示对话框),对话框上的界面就回到了初始化时的界面上去了。不知道哪位高手能指点一下,如何让对话框再刷新之后,还是显示秒表暂停时的时间?????
这是程序显示的主要代码:
strTime = strHour+":"+strMinutes+":"+strSecond+":"+strMillsecond;
pMain->m_strCurTime = strTime; pMain->m_dcMem.DrawText(strTime, pMain->m_rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);//将显示时间数字写到内存
pMain->m_pDC->BitBlt(0, 0, pMain->m_rect.right, pMain->m_rect.bottom, &pMain->m_dcMem, 0, 0, SRCCOPY); //从内存中拷贝到DC中
这是程序显示的主要代码:
strTime = strHour+":"+strMinutes+":"+strSecond+":"+strMillsecond;
pMain->m_strCurTime = strTime; pMain->m_dcMem.DrawText(strTime, pMain->m_rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);//将显示时间数字写到内存
pMain->m_pDC->BitBlt(0, 0, pMain->m_rect.right, pMain->m_rect.bottom, &pMain->m_dcMem, 0, 0, SRCCOPY); //从内存中拷贝到DC中
解决方案 »
- 怎么把剪贴板中的位图保存成文件?
- _TrackMouseEvent函数返回值问题!
- [求助]该做写什么小项目来提高水准呢?
- MSComm问题
- 在mfc中如何指定特定后缀名的文件的图标
- 那位大侠知道在VC中怎么根据IHtmlDocument2接口获取网页中SWF动画文件的地址?
- 用MSXML3.0保存一个自己定义的XML结构时,生成的文件只有一行,何解?
- 请问下面的警告是什么意思?
- VC++打开文件错误,是何原因?
- edyang,iamafraid,luyxi,达明一排,几位ATL高手,请相助阿
- 难道在Windows XP里,只能注册柯达的4个.ocx控件;而不能注册imgcmn.dll,imgshl.dll,imeshare.dll,oieng400.dll吗?
- VS2010 SP1升级后的版本号是多少啊
{
strMillsecond.Format("00%d",iSMill);
}
else if (iSMill < 100)
{
strMillsecond.Format("0%d",iSMill);
}
else
{
strMillsecond.Format("%d",iSMill);
}
//秒的显示
if (iSec < 10)
{
strSecond.Format("0%d",iSec);
}
else
{
strSecond.Format("%d",iSec);
}
//分钟的显示
if (iMin < 10)
{
strMinutes.Format("0%d",iMin);
}
else
{
strMinutes.Format("%d",iMin);
}
//小时的显示
if ((int)iHour%100 < 10)
{
strHour.Format("0%d",iHour);
}
else
{
strHour.Format("%d",iHour);
} strTime = strHour+":"+strMinutes+":"+strSecond+":"+strMillsecond;
pMain->m_strCurTime = strTime; pMain->m_dcMem.DrawText(strTime, pMain->m_rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);//将显示时间数字写到内存
pMain->m_pDC->BitBlt(0, 0, pMain->m_rect.right, pMain->m_rect.bottom, &pMain->m_dcMem, 0, 0, SRCCOPY); //从内存中拷贝到DC中
这是显示,楼上的仁兄可否具体说一下怎么在OnPaint中绘制,谢谢
pMain->m_dcMem.DrawText(strTime, pMain->m_rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//
改成m_pDC->DrawText(strTime, pMain->m_rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//(语句放在BitBlt后)
如果还不能满足,再说
我给你找找 你的问题只是你用的缓冲更新问题,窗口失去焦点在获得焦点的时候没有刷新就会显示初始界面信息丢失,刷新一下就好了。 ON_WM_ERASEBKGND()BOOL CThreadRenderDlg::OnEraseBkgnd(CDC *pDC)
{
Invalidate(FALSE);
UpdateWindow();
return TRUE;
}不要返回父类消息。
pMain->m_dcMem.DrawText(strTime, pMain->m_rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//
改成m_pDC->DrawText(strTime, pMain->m_rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//(语句放在BitBlt后)
如果还不能满足,再说
你是将文字写到DDB上了,应该写在DIB,至于DDB和DIB自己翻书吧!!!!