프로그래밍/VC++ 58

visual studio 2017에서 2015 버전 프로젝트가 빌드 안될 때 해결법

Visual Studio 2017을 사용해 이전 버전에서 만든 프로젝트를 읽어들여 빌드하면 에러만 몇천개씩 나오고 빌드가 안됩니다. 이 문제를 간단하게 해결하는 방법은 아래와 같이 Windows SDK 버전과 플랫폼 도구 집합을 수정해 주는 겁니다. 프로젝트 속성 페이지를 여는 방법은 메뉴에서 프로젝트 > [프로젝트명] 속성 (맨 끝에 있는 메뉴) 을 누르면 됩니다. 저 값들을 Visual Studio 2017 에서 제공하는 값으로 바꿔주면 한방에 해결될 겁니다.

Visual Studio 2017에서 MFC 기능 쓰기

48기가가 되는 Visual Studio 2017을 설치하고 실행해 보니, 새 프로젝트 만들기 위한 프로젝트 템플릿에 MFC가 없다. 그래서 ActiveX 템플릿이 없다. 헐. 뭔가 잘못되었나 보네.. 하면서 48기가 재설치.그래도.. MFC 템플릿이 없다. 설마.. 2017에서 MFC를 제거했을까?그런 기사는 보지 못했는데. 다시 자세히 살펴보니, MFC는 개별 설치를 해야 한다. 이렇게 "개별 구성 요소" 탭을 눌러 들어간 다음 거의 밑에 있는 "MFC 및 ATL 지원(x86 및 x64)를 선택하면 된다. 이제서야 새 프로젝트 템플릿에 MFC 응용 프로그램, MFC ActiveX 컨트롤MFC DLL 이 올라온다. 그런데 나 언제부터 MFC가 아니면 개발을 못하게 된거니?

마우스 움직이는대로 그리기

시작. 타블렛을 위해 마우스가 움직이는대로 그리는 프로그램을 만들려고 했다. 다 잘만들었다고 생각했다. 타블렛이 움직이는대로 글씨나 그림이 잘 그려졌다. 그런데 조그맣게 글씨를 쓰다보면 빠지는 획이 발생했다. 예를 들면 "잉어"라고 손으로 썼는데 "이어" 라고 쓰여진다거나 아주 조그만 ㅁ 을 그렸는데 맨 처음 그린 한 획만 그려지고 나머지 획들은 그려지지 않는 문제가 발생했다. 이거 원래 이래. 어쩔 수 없을거야. MS One Note에서 타블렛을 테스트해 봤다. 아 놔. 겁나 잘 그려진다. 빠지는 획이 하나도 없을 뿐만 아니라, 너무 마음먹은 대로 잘 그려져서 마치 내가 그을려고 하는 곳을 미리 알고 점들이 미리 움직이는 듯한 느낌마저 들었다. 충격이었다. 뭘까. 처음엔 STL을 의심했다. list 에..

전역 단축키 걸기

RegisterHotKey 사용법... 1. 시작 시기에 걸맞는 곳에다 코딩한다. 예를 들어 CMainFrame의 OnCreate에 코딩한다고 하고, Ctrl + P를 핫키로 하겠다면 멤버 변수로 int m_nHotKeyID; m_nHotKeyID = ::GlobalAddAtom("test"); if(!::RegisterHotKey(GetSafeHwnd(), m_nHotKeyID, MOD_CONTROL, 'P')) AfxMessageBox("핫키 등록 실패!"); 2. CMainFrame에 afx_msg LONG OnHotKey(WPARAM wParam, LPARAM lParam)함수 추가하고 메시지맵에 ON_MESSAGE(WM_HOTKEY, OnHotKey) 한다. 이 때 //}}AFX_MSG_MAP ..

ActiveX에서 Param 태그의 값 가져오게 하기

// CaxArchiveCtrl::DoPropExchange - 지속성 지원입니다. void CaxArchiveCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); PX_String(pPX, _T("MasterID"), m_MasterID) ; PX_String(pPX, _T("UserID"), m_UserID) ; PX_String(pPX, _T("Keyword"), m_Keyword) ; COleControl::DoPropExchange(pPX); // TODO: 지속적인 사용자 지정 속성 모두에 대해 PX_ functions를 호출합니다. }

VC2003 단축키

Visual Studio 기본 설정 바로 가기 키 참고 항목 시작 페이지, 내 프로필 | 옵션 대화 상자, 환경, 키보드 | 바로 가기 키 아래의 표는 기본 설정 키보드 구성표에 사용할 수 있는 기본 키 조합을 나열한 것입니다. 일반 바로 가기 키 일반적으로 사용되는 바로 가기 키 조합과 IDE 내의 다양한 위치에서 사용할 수 있는 키 조합을 나열합니다. HTML 디자이너 바로 가기 키 HTML 디자이너의 디자인 뷰와 HTML 뷰에서 작업할 때 사용할 수 있는 바로 가기 키 조합을 나열합니다. XML 디자이너 바로 가기 키 XML 디자이너의 스키마 뷰에서 작업할 때 사용할 수 있는 바로 가기 키 조합을 나열합니다. 대화 상자 편집기의 액셀러레이터 키 대화 상자 편집기에서 작업할 때 사용할 수 있는 바로 ..

XML에서 사용하는 예약어 못쓰게 막기

XML 에 직접 사용해서는 안되는 예약 문자는 다음과 같다. & " ' 그리고 각각은 다음과 같은 문자열 변환 과정을 통하여 저장해 주어야 한다. > & & " " ' ' 문자열 변환 과정을 거치지 않으면 파서가 정상적으로 인식할 수 없으므로 주의하도록 하자. 방법은 2가지다. 아예 입력을 못하게 막는 방법. 그리고 일단 입력은 하게 해 놓고 변환하는 방법. 첫번째 아예 입력을 못하게 하는 방법은 다음과 같다. BOOL CCMSRegistDlg::PreTranslateMessage(MSG* pMsg) { bool bX = false; if (pMsg->message == WM_KEYDOWN) { if (GetKeyState(VK_SHIFT) wPa..

버튼 동적 생성과 이벤트 연결

질문 내용] mfc위자드로 CView로 상속받은 (SDI)프로젝트를 생성했습니다. 그리고 뷰에 1행에 동적으로 버튼을 행맞춰서 만들고 싶은데, 아무리 생각해도 모르겠군요. 동적으로 말입니다. 4개든 10개든.... 그리고 각 버튼을 눌렀을때 메시지박스가 나와 "현재버튼은 1입니다." 같이 나왔으면 합니다. 다시말해 이벤트 핸들러도 동적으로 만들어야 합니다. 너무나 어려워 질문드립니다. [답변 내용] 안녕하세요~! 먼저 동적으로 버튼을 5개 생성시킨다고 가정하고 해더파일에 #define MAX_BUTTON_COUNT 5 라고 먼저 정의하고, 버튼을 동적으로 만들어서 사용해야하니까 동적으로 생성된 버튼을 관리할 변수를 선언해야겠죠? 클래스 선언부에 말이죠!! private: CButton *mp_test_b..

CPPUnit 제대로 써보자.

CPPUNIT 다운로드 : http://cppunit.sourceforge.net cppunit 1.10.2 기준 ### 프로젝트 설정 MFC Dialog Based 프로젝트 생성 1. C/C++ / 일반 / 추가포함 디렉토리 "$(NLELIB)\cppunit\cppunit-1.10.2\include";"$(NLELIB)\cppunit\cppunit-1.10.2\src" 잘 보자. 2개다. 2. C/C++ / 코드 생성 / 런타임 라이브러리 : 다중 스레드 디버그 DLL(Multi-threaded Debug DLL) (/MDd) 3. C/C++ / 언어 / 런타임 형식 정보사용 : 예 4. 링커 / 일반 / 추가 라이브러리 디렉터리 : $(NLELIB)\cppunit\cppunit-1.10.2\lib 5..

CFile 클래스를 이용해 파일크기 가져오기

// 파일 크기를 가져온다. CFile* pFile = NULL; ULONGLONG dwLength = 0; TRY { pFile = new CFile(strFilename, CFile::modeRead | CFile::shareDenyNone); dwLength = pFile->GetLength(); } CATCH(CFileException, pEx) { // Simply show an error message to the user. dwLength = 25000; } AND_CATCH(CMemoryException, pEx) { dwLength = 25000; } END_CATCH if (pFile) { pFile->Close(); delete pFile; } CString str; str.Forma..