본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

MFC. User Interface Thread 구현.

by i.got.it 2016. 9. 22.
 

개요.

 

Visual C++ 에서 User Interface Thread 구현방법.

상황예.
프로젝트 CyFinAPI 에 2개의 클래스 CCyDevice2_Market_UIT (CWinThread를 베이스클래스로함), CCyDevice2_Market_UITDlg(CDialogEx를 베이스 클래스로 함) 신규생성.
 


 

 

상세.

 
 
단계1. 프로젝트에 CWinThread를 베이스로 하는 클래스 추가.

클래스 위저드에서 MFC Class 추가 선택하여, CWinThread를 베이스로 하는 CCyDevice2_Market_UIT  추가한다.



단계2. 프로젝트에 대화상자 추가.
상세방법 : http://igotit.tistory.com/480 과 동일하며 베이스클래스를 CDialogEx로하고, 클래스이름을 CCyDevice2_Market_UITDlg로 하면됨. 


단계3. CWinThread와 CDialog 의 연동처리

앞의 단계1에서 만들어진 클래스 CCyDevice2_Market_UIT 와 단계2에서 만들어진 클래스 CCyDevice2_Market_UITDlg 연동처리한다. 연동의 의미는 우리가 UI 스레드 생성시 CWinThread 인 CCyDevice2_Market_UIT 를 생성하게되며 동시에 종속된 CDialog 인 CCyDevice_Market_UITDlg 도 생성하게 된다. 이를 달성하기 위해서 CCyDevice2_Market_UIT 의 InitInstnce 에는 CDialog 개체 생성, CWinThread의 멤버변수인 m_pMainWnd를 CDialog 개체로 지정 한다. 
스레드 종료시  수행되는 CCyDevice2_Market_UIT 의 ExitInstance 에는 CDialog 개체 제거하는 코드가 추가된다.

BOOL CCyDevice2_Market_UIT::InitInstance()
{
/// 시작 - 본 CWinThread 와 연동된 CDialog 생성.
m_pCyDevice2_Market_UITDlg[m_emItemtype] = new CCyDevice2_Market_UITDlg(); // this에 연동할 CDialog 동적생성하고 받아둠.
m_pCyDevice2_Market_UITDlg[m_emItemtype]->m_pUIT = this; // CDialog에서 this에 접근하기 위한 변수에 this저장.아래 Create보다 먼저할것.
m_pCyDevice2_Market_UITDlg[m_emItemtype]->Create(IDD_CYDEVICE2_MARKET_UITDLG); // CDialog Create
m_pCyDevice2_Market_UITDlg[m_emItemtype]->ShowWindow(SW_SHOW); // CDialog Show
m_pCyDevice2_Market_UITDlg[m_emItemtype]->UpdateWindow(); // CDialog WM_PAINT
this->m_pMainWnd = m_pCyDevice2_Market_UITDlg[m_emItemtype]; // this(CWinThread)의 m_pMainWnd를 CDialog 로지정.
/// 끝 - 본 CWinThread 와 연동된 CDialog 생성.
return TRUE;
}
int CCyDevice2_Market_UIT::ExitInstance()
{
///시작.- CWinThread 종료시 연동 CDialog소멸처리.
m_pCyDevice2_Market_UITDlg[m_emItemtype]->DestroyWindow();
if (m_pCyDevice2_Market_UITDlg[m_emItemtype] != nullptr) delete m_pCyDevice2_Market_UITDlg[m_emItemtype];
///끝.- CWinThread 종료시 연동 CDialog소멸처리.
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
view raw CWinThread.cpp hosted with ❤ by GitHub




 


 



 본 글이 포함된 상위 정리 장소.

 

 Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

 

///979.



비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5