| 发表于:2008-01-09 18:32:441楼 得分:0 |
这种情况下最好在线程中执行数据库的读取操作就可以了,读取到一定数量向进度对话框post一个消息以更新进度显示就可以 如果进度显示放在登录对话框中,则可以在用户点击登录按钮时创建线程 static dword winapi _threadproc(lpvoid pparam) { clogindlg *pdlg = (clogindlg*)pparam; ::coinitialize(null); while ( ! eof(records)) { //如果读取记录条数超过一定数量事 pdlg-> postmessage(um_progress, 进度, 0); } ::couninitialize(); pdlg-> postmessage(um_complete, 0, 0); } clogindlg::onbuttonlogin() { if ( bloginsuccess ) { // 此处 disable 掉用户名/密码编辑框及相关按钮 m_hthread = ::createthread(..., _threadproc, ...); } } clogindlg::onreadcomplete(wparam, lparam) { if ( m_hthread ) ::closehandle(m_hthread); onok(); } | | |
|