MFC 설명참조
WinMainCRTStartup -> CWinApp::CWinApp -> CMyApp::CMyApp @ -> WinMain -> ::AfxWinMain -> ::AfxGetApp @ -> ::AfxWinInit -> ::AfxInitThread @ -> CWinApp::InitApplication @ -> CWinApp::InitInstance -> CSingleDocTemplate::CSingleDocTemplate @ -> CWinApp::AddDocTemplate @ -> CWinApp::ParseCommandLine @ -> CWinApp::ProcessShellCommand -> CWinApp::OnFileNew -> CDocTemplate::OpenDocumentFile ① -> CWinApp..
MFC 를 만들다가...그리고 - 크론텝이라는 프로그램을 만들다가 _ 보니 MFC의 타이틀 바가 신경 쓰이기 시작했다... 기본적으로 MFC의 MDI 는 이렇게 되어있다. 아래의 그림처럼 Main Title Name - [ Child Title Name] 형식으로 되어있다. 크론텝(Crontab) 라는 프로그램을 만들기 시작하면서 _ 타이틀바의 제목이 기니깐 짜증이 났다. 우갸우갸~!!( 귀찮니즘 ) 그래서 !! MFC 의 타이들을 아래의 그림처럼 하나로 통합하면 안될까? 한다. 방법은 간단하다 MainFrm.cpp 에서 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWnd::PreCreateWindow(cs) ) return FA..
메모리 맵 파일!? 윈도우즈는 물리적인 메모리가 부족할 경우 하드 디스크 페이징 파일(Paging File)을 메모리 대신 사용한다. 마치 페이징 파일이 물리적인 메모리의 일부인 것 처럼 프로세스의 주고 공간에 맵하여 사용하며 필요한 경우 RAM으로 읽어오므로 응용 프로그램의 입장에 볼 때 페이징 파일은 속도가 좀 느릴 뿐 램과 전혀 다를 것이 없다. 메모리 맵 파일은 Win32에서 프로세서간 메모리를 공유하는 유일하고 합법적인 방법이다. 두개의 프로세스가 하나의 메모리 맵 파일을 동시에 액세스할 수 있기 때문에 메모리 맵 파일을 통해 데이터를 주고 받을 수 있고 동시에 한 메모리 영역을 액세스 할 수도 있다. 소스내용은 찾아보시길,,,하고 인터넷에 있는 내용 올림. #include #include #i..
다얼~로그를 사용하면서 메모리 관리가 좀 ..힘들다! 어찌할까? class CMainFrame : public CMDIFrameWnd { ... private: CProcessSetting *m_dlg; CIPSetting *m_IPDlg; } // 생성자에 // ------------------------------------------------------- // Setting Dlg 동적생성 // ------------------------------------------------------- m_dlg = new CProcessSetting(); m_dlg->Create(IDD_SETTING,this); // ------------------------------------------------..
다이얼로그가 생성될 때 발생되는 메세지의 순서로는 DoModal() PreSubclassWindow() OnNcCreate() OnNcCalcSize() OnCreate() OnSize() OnMove() OnSetFont() OnInitDialog() OnWindowPosChanging() OnMove() OnWindowPosChanged() OnWindowPosChanging() OnNcActivate() OnActivate() OnShowWindow() OnWindowPosChanging() OnNcPaint() OnEraseBkgnd() OnChildNotify() OnCtlColor() OnWindowPosChanged() OnPaint() OnCtlColor() OnCtlColor() OnNc..
비주얼 스튜디오를 사용하면서 유니코드에 부딪히게 된다... 그에 따른 매크로 함수가 있다! 왜 지금알았는가? ㅜ_ㅜ....젠장~ T2A, A2T 매크로 함수가 있다 열심히 사용해보자^^!! 추가해야되는 해더파일 : atlbase.h TCHAR buffer[100]; char * char_buffer = T2A(buffer); #include // Unicode to Ansi USES_CONVERSION; CStringA strTemp; strTemp = T2A( (TCHAR*)str ); // Ansi to Unicode USES_CONVERSION; CString strTemp; strTemp = A2T( (char*)str ); 이렇게 사용을 하면~^________________^a 된다! 후훗.
일반적으로 DirectX를 이용한 게임 애플리케이션 개발은 VC++에서 Win32로 개발한다. 그런데 Rhea君과 Rhea君 주위의 모임에는 게임 코드에 MFC를 많이 사용한다. Win32로 개발하더라도 MFC를 사용하는 것은 아주 쉽다. 1) 우선 stdafx.h 에 #include #include 이 두 헤더파일을 추가한다. 사실 afx.h 만 있어도 되지만 AfxMessageBox()같은 함수를 사용하기 위해서는 afxwin.h 을 추가해주자. (실제 최종 아웃풋에 사용되지 않더라도 개발시 많은 도움을 준다.) 중요한 것은 MFC 헤더 파일들이 반드시 기존 #include 보다 먼저 선언 되어야 한다는 점이다. 이 순서가 틀리면 afxv_w32.h 의 #ifdef _WINDOWS_ #error WI..
음~ 간혹 과제를 하다가 ... 그러나 혹은 소스를 수업제출을 할수 없을 때 - 공개할수 없는 cpp, h 파일들을 숨겨서 주는 방법이 없을까?- 남이 공부한걸 그렇게 빼가다니 좋지 못한거 아닌가? 과제니깐 제출해야지?? 왜?? 왜줘야하는데? 그렇게 자료를 모아두고 싶은건가? ... 이제 그 방법을 말로 알아보자! 먼저 현재 완성된 프로젝트가 있을 것이다. 거기의 모든 cpp, h 파일을 복사한다.( 붙일 곳은 라이브러리를 생성하기위한 프로젝트로 복사) 이전에 MFC - 일 경우에는 API쪽란에 Win32 기본 프로젝트로 생성을 한다. 이때 MFC 동적 라이브러리 추가 를 선택하고 프로젝트를 생성해야만 한다. API 일 경우에는 단순히 Win32 쪽에서 기본으로 프로젝트를 만들면 된다. 그리고'ㅅ'! 이..
// char 을 WCHAR 로 변경하는 내용 void CMSGProcess::ProcessMultiPos( DATAPACKET *pGetpacket, int index ) { ST_MULTIPOS *UserTouch = (ST_MULTIPOS*)pGetpacket; char TraceString[100]; WCHAR wTraceString[100]; memset( &TraceString, 0, sizeof(TraceString)); memset( &wTraceString, 0, sizeof(wTraceString)); for( int i=0; idata[i].Number, UserTouch->data[i].point.x, UserTouch->data[i].point.y, UserTouch->data[i..
http://blog.naver.com/hoi_yeon?Redirect=Log&logNo=10020732860 http://www.winapi.co.kr
void lounchIE() { HWND h=FindWindowEx(NULL,NULL,NULL, "Microsoft Internet Explorer") ; ShellExecute(h,"open","C:\\simple.html", NULL,NULL,SW_SHOWNORMAL); } void CloseIE() { int app=BSM_APPLICATIONS; unsigned long bsm_app=(unsigned long )app; BroadcastSystemMessage(BSF_POSTMESSAGE,&bsm_app, WM_CLOSE,NULL,NULL); }