본문 바로가기

MFC

(12)
소스 파일이 모듈을 빌드했을 때와 다릅니다 라는 메시지박스가 나타나는 현상 C# 프로젝트에서 Visual C++ 프로젝트 빌드 결과물인 dll 을 로드해서 사용중인데, 소스를 Step by step 으로 디버깅하려고 할 때 이런 메시지 박스가 나타난다. 이 메시지 박스를 없애는 해결책... 출처 : http://cafe.naver.com/ArticleRead.nhn?clubid=16859584&articleid=14
[MFC] 특정 문자로 끝나는지 확인하는 방법 BOOL IsEndWithChar(CString strCheckString, char endChar) { return (strCheckString.ReverseFind(endChar) == strCheckString.GetLength() - 1); } CString str = "C:\\Temp\\"; BOOL bEndOK = IsEndWithChar(str, '\\'); // TRUE CString str = "C:\\Temp"; BOOK bEndNot = IsEndWithChar(str, '\\'); // FALSE
[프로그램] 아스키(ASCII/EUC-KR) 파일을 UTF-8 로 인코딩 예전에는 웹페이지 파일의 인코딩(charset) 을 대부분 euc-kr 로 설정하였었다. 요즘의 추세는 UTF-8 이다. 얼마전 웹호스팅 서버를 이전해야 할 일이 생겼다. A라는 서버에 올라가 있는 웹페이지 파일들은 모두 euc-kr charset 으로 지정되어 있었다. 그런데 새로 이사가려는 B 서버에 파일을 올리기 위해서는 이 웹페이지 파일들을 utf-8 인코딩으로 변환해야만 했다. mysql DB 서버가 utf-8 인코딩만 지원 가능했기 때문이다. 인코딩 타입을 euc-kr 에서 utf-8 로 변경하는 것은 파일에 있는 euc-kr 문자열을 utf-8 로 변경한다고 해서 끝나는게 아니다. 파일의 내용 자체를 utf-8 포맷으로 변환해 주어야만 한다. 그래서 euc-kr charset 으로 작성된 파..
MFC CRect 클래스의 IntersectRect 함수에 대해서 MFC의 CRect 클래스는 left, top, right, bottom 등의 네 개 포인트 좌표점을 멤버로 가진다. 네 개의 포인트 좌표점은 사각 영역을 구성하기 위한 요소이다. left와 right 는 X 좌표축에 대한 위치값이고, top, bottom 은 Y 좌표축에 대한 위치값이다. IntersectRect 함수는 두 개의 CRect 클래스형 인스턴스에 대해서 동작한다. IntersectRect 함수는 두 개의 파라미터를 필요로 하는데, 이 중 앞의 파라미터로 전달된 CRect 영역과 뒤의 파라미터로 전달된 CRect 영역이 교차되는 영역을 구한다. CRect::IntersectRect CRect::IntersectRect BOOL IntersectRect( LPCRECT lpRect1, LPCR..
TRACE (ANSI vs UNICODE) 디버깅을 위한 메시지를 TRACE 라는 MFC의 매크로를 사용하여 출력한다. 유니코드용 빌드 버전에서 TRACE 를 사용하기 위해서는 TRACE(_T("어쩌구 저쩌구")); 와 같이 _T 매크로를 사용하여 문자열을 감싼다. 그러나 더 쉬운 방법이 있다. 파라미터의 개수에 따라서 TRACE0, TRACE1, TRACE2, TRACE3 과 같은 매크로를 사용하면 굳이 _T 매크로를 사용하여 문자열을 감쌀 필요가 없어진다.
MFC 4.x 와 MFC 9.x 의 차이점 (스핀컨트롤 CreateEx) MFC 4.x 에서 코딩할 경우 CSpinButtonCtrl::CreateEx 는 다음과 같이 정의되어 있다. BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL); 위 정의는 CSpinButtonCtrl 클래스의 부모 클래스인 CWnd 클래스의 멤버함수 정의이다. MFC 9.x 에서는 CSpinButtonCtrl 의 멤버함수인 CreateEx 를 사용하게 된다. 이 멤버함수의 정의는 다음과 같다. // Generic creator allowing extended styl..
메시지를 통해서 double 형 값을 전달하는 방법 사용자 정의 메시지를 통해서 double 형 값을 전달하기 위해서는 전달하고자 하는 값을 정수부와 실수부(소수점이하값)로 나누어야 한다. 그리고 해당 값의 기호(+/-)도 구해놓아야 한다. 사용자 정의 메시지값은 WM_USER + 1 이라고 가정한다. 우선 double 형 값을 위에 언급한 정수부, 실수부, 기호 로 분리한다. double dValue = -2.0; CString str; str.Format("%.1f", dValue); BOOL bNegative = (dValue < 0); int nPos = str.Find("."); // 정수부 CString strIntNumber = (-1 == nPos) ? str : str.Left(nPos); // 실수부 CString strDecimalNu..
CDialogBar 로부터 상속받은 클래스에서 포함 컨트롤 초기화하기 http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B185672