MRU 리스트에서 항목 제거
프로젝트의 AppClass에서 #include <afxadv.h> ///< FOR CRecentFileList void CXXXApp::RemoveMRUString(const CString &rMRU) { char szBuf[MAX_PATH] = {'\0' ,}; const int nMRUSize = m_pRecentFi...
프로젝트의 AppClass에서 #include <afxadv.h> ///< FOR CRecentFileList void CXXXApp::RemoveMRUString(const CString &rMRU) { char szBuf[MAX_PATH] = {'\0' ,}; const int nMRUSize = m_pRecentFi...
다이얼로그에 위와 같은 에디터 컨트롤을 놓았습니다. 일반적인 방향키는 제대로 먹었으나 엔터키가 작동하지 않았습니다. 그래서 여기저기 찾아보니 다이얼로그 위에 놓이는 컨트롤에 WM_GETDLGCODE처리하는 메서드를 오버라이드해서 DLGC_WANTALLKEYS를 리턴하면 모든 키들을 처리할 수 있습니다. //AFX_MSG BEGIN_MES...
마지막으로 간략한 Diagram입니다.
프로그램을 작성하다 보면 여러개의 클래스를 만들게 되는데 각 클래스마다 가지는 공통적인 함수들이 있을수 있다. 각 클래스를 생성하고 공통함수들을 일일이 추가하는 일은 지루한 일이다. 이 지루한 일을 매크로를 통해서 한방에 해결하도록 하자. [DLL을 통한 기능 확장 - #2]의 예에서 IS_DECLARE_DATA_FUNC()이라는 매크로가 있는...
이제 DLL에서 필요한 함수들을 노출시키는 방법에 대해 알아보도록 하자. 예를 보면서 이야기 하는것이 빠를것이다. #ifdef HOLEDATA_EXPORTS #define HOLEDATA_EXT_CLASS __declspec(dllexport) #else #define HOLEDATA_EXT_CLASS __d...
진행중인 프로젝트에서 형식화된 텍스트 파일에서 아이템들을 읽어 들여 처리하는 루틴을 개발하게 되었다. 일반적으로 대부분의 아이템들이 사용되는데 이 프로젝트에서만 사용하는 하나의 아이템(HOLE)이 추가되었다. 그래서 이 하나의 아이템을 포함하는 DLL을 만들어 배포하는것이 아니라 일반적으로 사용되어지는 아이템을 처리하는 DLL하나(A.DLL) 그...
이번 진행중인 프로젝트를 하다보니까 6개의 DLL이 필요하게 되었다. 아무 무리 없이 잘 진행하고 있다가 가장 상위에 있는 DLL하나를 수정하게 되었는데 이때까지 잘 돌아가던 프로그램이 이유없이 에러를 내뱉는게 아닌가? Dependency 문제인가 싶어 Depends 프로그램으로 봐도 문제는 없었다. 그래서 모든 DLL들을 다시 컴파일하기로 ...
// numstring.h: interface for the numstring class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_NUMSTRING_H__048C9920_CE10_44AE_A84E_75D2240FCE35__IN...
/* at : 반올림할 소수점 자리 */ double round(const double& a , const int& at) { double ret = a; ret*= pow(10, (at - 1)); ret = (ret > 0) ? floor(ret + 0.5) : ceil(ret - 0.5); ...