MyWikkaSite : MFCTIP2

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register


이유)
특히 Updatedata() 같은 경우나 직접 뷰나 다이얼로그를 제어하는 코드같은 경우에는 Assertion 오류를 동반합니다.
WM_USER 메시지로 ON_MESSAGE나 ON_THREAD_MESSAGE로, SendMessage(), PostThreadMessage() 를 사용함이 바람직합니다,

방법)



아래와 같이 전역 으로 선언합니다....

CWinThread *pThread;
HWND g_hParallelWnd; 쓰레드를위한 윈도우핸들 선언
UINT ThreadFunc(LPVOID pParam);
BOOL g_bContinue=TRUE;


아래와 같은 형식으로 메세지맵을 등록해주시고요

BEGIN_MESSAGE_MAP(CParallelPort_testView, CFormView)
{{AFX_MSG_MAP(CParallelPort_testView)
ON_MESSAGE(WM_PARALLEL_READ, OnCommunication) Communication Message Handleer
END_MESSAGE_MAP()


헤더에서 사용자 메세지 등록해주시고요
#define WM_PARALLEL_READ (WM_USER+1)

헤더에 사용할함수 만들어 주시고요
afx_msg LONG OnCommunication(UINT, LONG);



그다음 아래처럼 돌리시면 됩니다
UINT ThreadFunc(LPVOID pParam)
{
BOOL *pContinue = (BOOL *)pParam;
while(g_bContinue)
{
::SendMessage(g_hParallelWnd, WM_PARALLEL_READ, 0, 0);
Sleep(500);
}
return 0;
}



LONG CParallelPort_testView::OnCommunication1(UINT port, LONG lParam)
{
m_TEXT.SetWindowText("*");
return 0;
}

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.0090 seconds