본문 바로가기

컴퓨터/MFC_API32

CScrollView의 OnDraw의 좌표 CScrollView를 상속받은 뷰를 갖고 코딩을 하는데, 아래와 같이 그림의 표현이 잘못 되고 있다. 위에서 표시한 바와 같이, 원래의 그림이 뿌려진 다음, 위쪽에 살짝 잘못된 그림 영역이 뿌려지고 있다. 현재, 화면의 확대/축소 기능을 구현하다 문제가 발생한 것인데, 조금 더 자세히 설명하면 이렇다. 원래 그려야 할 그림을 필요한 만큼 확대를 한 후, 그 크기만큼 스크롤 영역을 설정해 준다(CScrollView::SetScrollSizes). 그 후, 실제 화면의 크기(눈에 보이는 크기, CWnd::GetClientRect로 얻는 것)와 동일한 크기를 갖는 CBitmap instance 를 만들어서 확대된 이미지에서 화면으로 나타낼 영역을 bitmap에 BitBlt 시켜서 복사하고, 그것을 다시 화면.. 2011. 7. 30.
Report형식의 CListCtrl에서 특정 항목 선택하기 SelectAll 과 같은 함수가 없지만 다음과 같이 구현할 수 있다. int i = 0; for(i = 0; i 2010. 3. 30.
CTreeCtrl 에 디렉토리 표시하기 탐색기의 폴더 목록 트리와 같은 기능을 하는, CTreeCtrl 을 상속받은 클래스를 만들어 보자. 델파이의 것을 사용해도 되긴 하는데, 좀 너무 모양이 옛날 것 같아서... 여하튼, 탐색기와 비교를 해보면 다음과 같다. 왼쪽: CDirTree, 오른쪽: 윈도우즈 탐색기 소스 코드는 다음에 있다. 소스는 Visual C++ 6.0 으로 작성되어 있다. Visual Studio 2008 에서 열어도 별 문제 없이 실행되는 것을 확인하였다. 단, STL을 사용할 시 VC++ 6.0 에서 경고 메세지가 너무 많아 Warning level 을 0 으로 해놓고 컴파일해서 경고는 많을 수 있으므로 이 부분은 이용자가 적당히 처리해 준다. 탐색기에 나오는 '내 네트워크 환경'과 같은 항목은 CDirTree에 없는 것.. 2010. 2. 14.
시스템 폴더의 실제 경로, 문자열 얻어 오기 '내 문서'나 '바탕 화면'의 실제 경로는 얼마 든지 바꿀 수 있다. 실제로 나는 디폴트인, 시스템이 설치되어 있는 드라이브(일반적으로 C)에 있으면 포맷할 때마다 백업을 받아야 하는 불편함이 있기 때문에 다른 파티션으로 바꾸어 놓는다. 따라서 소프트웨어에서 이와 같은 시스템 폴더를 다루고자 할 때는 다음과 같은 API를 사용한다. 바탕 화면의 문자열 얻어 오기 바탕 화면 실제 경로 얻어 오기 내 문서 문자열 얻어 오기 내 문서 실제 경로 얻어 오기 내 컴퓨터의 문자열 얻어 오기 바탕 화면의 문자열 얻어 오기 CString GetDesktopLabel(int *sysIconIndex) { TCHAR path[MAX_PATH] = ""; LPMALLOC pMalloc; SHGetMalloc(&pMalloc.. 2010. 2. 14.