본문 바로가기

컴퓨터/MFC_API32

CRichEditCtrl 에서 바탕색/글자색 설정하기 MFC 에서 CRichEditCtrl 의 instance 를 사용할 때 배경색 혹은 글자색을 지정했는데 변경되지 않으면 다음을 확인해 본다. 즉, format 에서 CFE_AUTOBACKCOLOR 이나 CFE_AUTOCOLOR 가 설정되어 있는지 아닌지를 확인해 보는 것이다. rec.SetSel(start_pos + i, start_pos+ line_length); *//rec.GetSelectionCharFormat(cf); //cf.crTextColor = RGB(255,255,0); *cf.dwMask |= CFM_BACKCOLOR;*cf.dwEffects &= ~CFE_AUTOBACKCOLOR; *cf.crBackColor = (type == 1 ? RGB(255,0,0) : RGB(0,0,255.. 2014. 4. 10.
파일 끌어 놓기 구현 (drag & drop)DragAcceptFiles(); 파일을 프로그램 창으로 끌어 놓은 것을 인식하여 처리하는 방법을 알아 보자. 아주 간단하다. 우선, 끌린 파일을 인식할 창(실제로 보이는)을 주관하는 class 의 적당한 곳에서 DragAcceptFiles(); 함수를 호출해 주자. 한 번만 호출해 주면 된다. 그 후, WM_DROPFILES message handler 에 다음과 같이 코딩해 주면 된다. void CDiagnosisFeatureDiscoveryView::OnDropFiles(HDROP hDropInfo){TCHAR buf[MAX_PATH] = _T(""); UINT ret = DragQueryFile(hDropInfo, 0xffffffff, buf, MAX_PATH); if(ret != 1) return; DragQueryFile(hD.. 2014. 1. 3.
글자의 크기를 알아 오기 - GetTextExtent CDC 의 instance 나 CDC 를 상속받은 클래스에서 글자를 출력할 때 글자의 크기를 픽셀 단위로 반환해 주는 함수는 GetTextExtent 이다. 사용법은 매우 간단하다. CSize CDC::GetTextExtent(LPCTSTR lpszString, int nCount) const;CSize CDC::GetTextExtent(const CString& str) const; 중 하나를 사용하면 된다. 그러면 [str]을 출력하기 위해 필요한 글자의 크기를 pixel 단위로 반환받을 수 있다. 간단한 사용 예를 살펴 보면 다음과 같다. int x = margin_left + static_cast(0.5 + i*(bar_width/(tick_num - 1.0))); int y = line_y; p.. 2013. 1. 13.
unicode 와 ansi, std::string 과 CString 상호 변경하기 unicode 와 ansi 를 섞어 쓰면서 std::string 과 std::wstring, CString 을 상호 변환하는 방법을 살펴 보자. unicode 를 쓰면서 MFC에서 STL 을 쓰기 위해선 이들을 서로 변경해야 할 경우가 많아 이 곳에 정리해 둔다. 환경 : Visual Studio 2010 on Windows 7 Professional SP1, English, 64-bit. 우선 기본적으로 MFC에서 unicode 과 ansi 를 상호변환하기 위해서는 CF2CT 형식을 따르며, 이 때 F 와 T 는 A와 T 중 하나의 값이 될 수 있다. T는 _T macro 에서 알 수 있듯이 multibyte 로의 변환을 의미하는 것이고, A 는 ANSI 를 의미한다. 따라서 ansi 에서 unicod.. 2013. 1. 7.