ProgressBar 표현
어떤 다소 시간이 걸리는 작업을 할때 사용자들을 멍~하니 기다리게 하는 것보다 ProgressBar를 표시하는 것이 효과적입니다.
예제) 열린 파일에서 현재 읽고 있는 요소대한 진행 상태를 표시하는 방법에 대해 알아보도록 하겠습니다.(즉 현재 몇번째 요소를 읽고 있는지 나타내는…)
- 화면에 표시할 다이얼로그 리소스 준비

- 다이얼로그를 생성할 쓰레드 생성
작업 쓰레드에서 다이얼로그를 생성하도록 합니다.
여기서 하고 싶은 말 : mdlXXX류의 함수는 작업 쓰레드에서 제대로 작동하지 않을수 있으니… 주 쓰레드에서 호출해야 한다는 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/******************************************************************************
@author humkyung
@date 2011-08-22
@class
@function StatusThreadEntry
@return UINT
@param LPVOID pVoid
@brief
******************************************************************************/
UINT StatusThreadEntry(LPVOID pVoid)
{
CWorkStatusDlg* pDlg = (CWorkStatusDlg*)(pVoid);
if(pDlg)
{
InterlockedExchange((LONG*)(&(pDlg->m_bThreadRunning)) , TRUE);
pDlg->DoModal();
}
return ERROR_SUCCESS;
}
extern "C" __declspec(dllexport) int __stdcall RevMISC(const CString &INI_FILE_PATH)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWorkStatusDlg dlg;
dlg.m_pThread = AfxBeginThread(StatusThreadEntry , &dlg , THREAD_PRIORITY_NORMAL , 0 , CREATE_SUSPENDED);
if (NULL != dlg.m_pThread)
{
/// do something
InterlockedExchange((LONG*)(&(dlg.m_bThreadRunning)) , FALSE);
dlg.PostMessage(WM_COMMAND , IDOK);
}
return 0;
}
- 다이얼로그 상의 프로그래스바에 현재 진행 상태 표시