还有一个问题,同样关于打印

zhaolinger2 2009-02-11 11:35:39
如果一次打印的页数过多,希望在开始打印后5秒钟弹出一个提示框“打印中”,打印完成后自动关闭。不知道怎么做,谢谢!
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaolinger2 2009-02-12
  • 打赏
  • 举报
回复
CMsgBox是我自己造的类,继承CWnd


CMsgBox::CMsgBox()
{

}

CMsgBox::~CMsgBox()
{

}

void CMsgBox::MessageBox(CString sMsg, CString sCaption, UINT nSleep, UINT nFlags, bool bAutoClose)
{
m_sCaption=sCaption;
if(bAutoClose)
{

CWnd::SetTimer(100,nSleep,NULL);
CWnd::MessageBox(sMsg,sCaption,nFlags);
}
}

void CMsgBox::OnTimer(UINT nIDEvent)
{
bool bRet=false;
CWnd* pWnd = FindWindow(NULL, m_sCaption);
if(pWnd!=NULL)
{
::PostMessage(pWnd->m_hWnd, WM_CLOSE, 0, 0);
}
KillTimer(100);
CWnd::OnTimer(nIDEvent);

}


使用的时候我写成如下形式。这段代码写在CPlayWnd类中,该类也继承CWnd。

CMsgBox cmsg;
cmsg.SetParent(this);//这句会出错


编译能通过,但是运行的时候到上面那句就报错,但是没有具体的错误信息,只说某个API出了错。不知道是什么原因,各位高手请指教。
zhaolinger2 2009-02-12
  • 打赏
  • 举报
回复
没有人做过类似的吗?我自己做了一个但是用不了,希望高手指教。
waizqfor 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhaolinger2 的帖子:]
如果一次打印的页数过多,希望在开始打印后5秒钟弹出一个提示框“打印中”,打印完成后自动关闭。不知道怎么做,谢谢!
[/Quote]
你可以做一个 ON和OFF的开关响应
在线程开始的时候 打开ON消息 这是设置时间间隔5S 然后做循环输出“打印中” (弹的对话框) 你可以根据每次循环 然后自动弹出
打印结束了 把OFF消息打开 然后退出程序就可以了
dongpy 2009-02-11
  • 打赏
  • 举报
回复
打印操作肯定是一个独立线程,与GUI主线程共同维护一个标志。

主线程中触发打印时,定时5秒后,将标志置ON。
打印线程在结束时,将标志置OFF。
主线程判断标志为ON时,弹出提示框,OFF时关闭提示框。
ch1oE 2009-02-11
  • 打赏
  • 举报
回复
打印开始的时候开个Timer,间隔5S,然后在其TimerProc里面:

1.将其自己关闭
2.开一个模态对话框,内容就是你说的"打印中",
3.有两种方法 : 1.开另一个TIMER去不断轮询当前打印状态(我不是很清楚有没有这样一个状态)
2.在MsgProc这样的地方在打印完成(应该有消息过来的)后将对话框关闭就可以了。
zhaolinger2 2009-02-11
  • 打赏
  • 举报
回复
谢谢各位,有没有具体一点的例子?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧