VC6에서 리치에디트 컨트롤을 대화상자에 올리고 나서 런타임시에 대화상자가 뜨지 않는 문제 수정법 DarkKaiser, 2007년 7월 7일2023년 9월 6일 Visual C++ 6 의 리소스 편집기에 있는 리치 에디트 컨트롤은 버젼1.0 입니다. 일단 수동으로 CRichEditCtrl을 변수를 작성하고 Create 가상함수를 호출하면 생성되고 보여집니다. 가상함수안에서 “RICHED32.dll”을 로드합니다. 그래서 문제가 없습니다. 하지만 리소스 편집기에서 다이알로그에 추가한 리치 에디트는 명시적으로 “RICHED32.dll”을 호출하지 않기 때문에 프로그램 자체가 실행되지 않습니다. 리소스 로드에 실패하는 것이죠. 결국 리치 Continue Reading
Adding Most Recently Used(MRU)FilestoanSDI/MDI Application DarkKaiser, 2007년 7월 1일2023년 9월 6일 Adding MRU to MFC SDI or MDI is actually not very difficult. I just add ?AddToRecentFileList(LPCTSTR lpszPathName) to ?CDocument derived class which calls the add the path name to ?CWinApp’s ?CRecentFileList (m_pRecentFileList). I use SDI for this demo. 1. Iinclude afxadv.h to stdafx.h. This contains the Continue Reading
프로젝트에 WindowsXP 테마 스타일 적용하기 DarkKaiser, 2007년 7월 1일2023년 9월 6일 윈XP의 화려한 UI를 사용해 보자. 아래를 따라해보자. 1. 우선 여러분의 프로젝트에서 리소스를 새로 추가한다. 이때 “Custom”을 선택하여 리소스 타입에 “24”라고 입력한다.2. 에디터에 아래의 XML 구문을 복사하여 붙여넣는다. <?xml version="1.0" encoding="UTF-8" standalone="yes"?<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"<assemblyIdentity processorArchitecture="x86" version="5.1.0.0" type="win32" name="test.exe"/<descriptionTest Application</description<dependency<dependentAssembly<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" Continue Reading
언어별 리소스 블럭 DarkKaiser, 2007년 7월 1일2023년 9월 4일 한글 리소스 블럭 ///////////////////////////////////////////////////////////////////////////// // Korean resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) #ifdef _WIN32 LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT #pragma code_page(949) #endif //_WIN32 ... #endif 일본어 리소스 블럭 ///////////////////////////////////////////////////////////////////////////// // Japanese resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) #ifdef _WIN32 LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT #pragma code_page(932) #endif //_WIN32 ... #endif 영어 리소스 블럭 ///////////////////////////////////////////////////////////////////////////// // English Continue Reading
서브클래싱 컨트롤에 마우스 Hover/Leave 구현 DarkKaiser, 2007년 7월 1일2023년 9월 4일 마우스 Hover, Leave를 구현하고자 하는 서브클래싱된 컨트롤의 헤더 파일에 아래의 두 함수를 추가하도록 한다. //{{AFX_MSG(CHoverButton) afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam); afx_msg void OnMouseHover(WPARAM wparam, LPARAM lparam); //}}AFX_MSG 다음으로 소스파일의 메시지맵에 메시지에 대한 함수를 연결하도록 한다. BEGIN_MESSAGE_MAP(CHoverButton, CButton) ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave) ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover) END_MESSAGE_MAP() 다음으로 실제 함수를 구현해주면 된다. void CHoverButton::OnMouseHover(WPARAM Continue Reading
MDI 프로젝트에서 프로그램 실행시 빈 자식창 안뜨게 하기 DarkKaiser, 2007년 7월 1일2023년 9월 5일 /* Parse command line for standard shell commands, DDE, file open */ CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); /* 프로그램 시작시 자식창이 바로 오픈되지 않도록 한다. */ cmdInfo.m_nShellCommand = cmdInfo.FileNothing; /* Dispatch commands specified on the command line */ if (!ProcessShellCommand(cmdInfo)) return FALSE; Continue Reading
std::auto_ptr DarkKaiser, 2007년 7월 1일2023년 9월 5일 가리키고 있는 대상에 대해 소멸자가 자동으로 delete를 불러주도록 설계되어 있는 스마트 포인터 auto_ptr은 자신이 소멸될 때 자신이 가리키고 있는 대상에 대해 자동으로 delete를 먹이기 때문에, 어떤 객체를 가리키는 auto_ptr의 개수가 둘 이상이면 절대로 안된다. auto_ptr 객체를 복사하면(복사 생성자 혹은 복사 대입 연산자를 통해) 원본 객체는 null로 바뀐다. STL 컨테이너의 경우엔 Continue Reading
AUTOEXP.dat활용하여STL사용시디버깅조금더쉽게하기 DarkKaiser, 2007년 7월 1일2023년 9월 6일 이 후 부터는 VC6 이 “C:\Program Files\Microsoft Visual Studio” 에 설치되었다고 가정합니다. 따라서 MSDEV.exe 파일은 “C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin” 에 위치하게 됩니다. VC6의 MSDEV.exe 파일이 있는 폴더에는 AUTOEXP.dat 란 파일이 존재합니다. AUTOEXP.dat 파일은 툴팁에서나 디버그 Watch 창에서 해당 변수의 내용을 어떻게 표시할 지를 사용자가 결정할 수 있게 해줍니다. 간단하게 예를 Continue Reading
매핑모드 사용하여 확대/축소 구현하기 DarkKaiser, 2007년 7월 1일2023년 9월 6일 이미지 자체를 크거나 작게 하려면 StretchBlt를 사용하지만 이미지 편집 창을 확대/축소하게 될 때는 편집된 선이나 글자는 크기가 변하지 않기 때문에 확대나 축소한 상태에서는 편집을 할 수 없게 됩니다. “그림판” 에서와 같이 확대또는 축소된 상태에서도 편집이 가능하도록 하려면 ?OnPrepareDC를 선언한 다음과 같이 작성하면 됩니다. void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { Continue Reading