나는 C 개발자 C++ 잘 몰름..
원칙적으로는 좋지 못한 방법 같다. namespace나 extern C, 아규먼트 교환 규칙등..
어쩌다보니 쓰던 C 모듈을 끌어오게 된다. 그러다보니 C++쪽 다이얼로그 클래스의 멤버를 접근해야 하는데, LPVOID 등으로 다이얼로그의 인스턴스를 전달하는 방법이 있다.
사실 이 시점에서 OO는 깨진 셈이다. 어쨌든 나는 C개발자고 프로젝트는 C지향 프로젝트다; -_-;
LPVOID형으로 다이얼로그 인스턴스를 전달하는 방법은 보통 이렇다. 쓰레드 생성시에 주로 쓴다.
pThread = AfxBeginThread((AFX_THREADPROC)rcv_thread , (LPVOID)this);
DWORD rcv_thread(LPVOID pParam)
{
CADGDlg *parent_dlg = (CADGDlg *)pParam;
이제 pParam-> 형식으로 다이얼로그 클래스의 멤버를 자유롭게 끌어쓸 수 있게 됐다.
귀찮으면 이렇게 해도 된다 ㅠ.ㅠ
CADGDlg *gpParent;
BOOL CADGDlg::OnInitDialog()
{
...
gpParent = this;
gpParent는 전역변수이므로 이제 C 모듈 쪽에서 아무렇게나 불러 쓸 수 있다.
좋지 않다.