두개의 형변환방법이 엄청 자주 사용된다.

 

사용법은 아래와 같이 아주 간단!

 

 

CString -> int

int형 변수 = _ttoi( CString 변수 );
_ttoi()를 이용


int -> CSting
CString 변수.Format( _t("%d"), int 변수 );
CString의 Format() 메소드를 이용

 

출처 : http://tasia.tistory.com/129

 

 

Posted by Tommy™
,

아주 유용한 소스코드일듯하다.

 

MFC에서 CString형을 이용하여 string을 쉽게 컨트롤 할 수 있다.

 

이때 경로, 파일명, 확장자 등을 구분하여 출력해야하는 상황이 있는데, 이때 해당 소스코드를 활용하면 될듯하다.

 

 

// Type
// 0: 파일 경로만 복사
// 1: 파일 이름만 복사
// 2: 파일 확장자 복사
// 3: 확장자를 뺀 파일명 복사


CString strClip(CString str, int nType)
{
 //파일 Full Path를 복사
 TCHAR szTmp[256];
 StrCpy(szTmp, str);

 //파일의 경로만 복사.
 PathRemoveFileSpec(szTmp);
 CString strTmp = szTmp;

 if(nType == 0)
  return strTmp;

 //파일 이름만 복사
 strTmp = str.Right(str.GetLength()-strTmp.GetLength()-1);

 if(nType == 1)
  return strTmp;

 //파일 확장자 복사
 int i = strTmp.ReverseFind('.');
 CString strTmp2;
 if(i > -1)
 {
  strTmp2 = strTmp.Right(strTmp.GetLength()-i-1);
 }
 else
 {
  strTmp2 = _T("");
 }
 
 
 if(nType == 2)
  return strTmp2;

 //확장자를 뺀 파일명을 복사
 strTmp = strTmp.Left(i);
 if(nType == 3)
  return strTmp;


 return _T("");
}

 

단지 디렉토리 경로일 경우는 파일명에 마지막 디렉토리를 리턴하게 된다.

 

 

참조 : http://blog.naver.com/just720?Redirect=Log&logNo=40206748318

 

 

 

 

 

 

 

 

 

2013/11/26 - [[ Topics ]/MFC] - MFC Edit control 에서 실수형 값 가져오는방법

 

2013/09/05 - [[ Topics ]/MFC] - error C2589 에 대한 고찰과 문제 해결방법

 

2013/07/30 - [[ Topics ]/MFC] - MFC Dialog창을 modaless할때 포커스 옮기는법

 

2012/09/04 - [[ Topics ]/MFC] - MFC 새다이얼로그를 생성시 OnDestroy() 경고 및 Memory Leaks

 

2012/09/03 - [[ Topics ]/MFC] - MFC 다이얼로그 기반 OnIdle()과 KickIdle() 그리고 modaless

 

2010/07/29 - [[ Topics ]/MFC] - MFC에서 글자 출력

 

Posted by Tommy™
,

MFC에서는 보통 int 형을 받아오는건 쉽다.

 

흔히 GetDlgItemInt() 함수를 통해 ID에 해당하는 값을 얻어올수 있다.

 

하지만 실수형 변수는 어떻게 얻어올 수 있을까??

 

이리저리 검색해보다가 관련정보를 찾게 되었는데,

 

방법은 여러가지가 있었지만, 가장 직관적인 방법은 바로..

 

CString 형으로 만든 변수에 GetDlgItemText()를 통해 얻어와서 atof() 로 변환해주는 방법이었다.

 

가장 직관적이면서 쉽게 적용할 수 있는 방법이다.

 

아래에 간단한 예제소스를 참고하시길..

 

CString m_strResizeVar;

GetDlgItemText(IDC_EDIT_RESIZEVAR, m_strResizeVar);
float m_fResizeVar = atof(m_strResizeVar.GetString());

 

 

Posted by Tommy™
,

현재 진행중에 있는 프로젝트에서 Dialog창을 모달리스로 새로 생성을 해야하는데, 포커스가 이동이 안되는것이다.

 

그러다 검색하다보니,

 

방법이 있었다.

 

기존의 모달리스 창 생성할때 Create 부분에 CWnd::GetDesktopWindow() 을 추가해주면 되는것이었다.

 

이렇게 하면 부모 다이얼로그랑 동급의 오더를 가지게 되어 각각의 포커스를 부여할 수가 있는것이었다.

 

m_pMyDlg = new m_pMyDlg;
m_pMyDlg->Create(IDD_MY_DIALOG, CWnd::GetDesktopWindow());

 

참조 : http://blog.naver.com/ice4tea/70015838748

 

 

Posted by Tommy™
,

1. 변수 선언

BOOL m_bTransparent; // 텍스트의 배경을 투명하게 할 것인지
COLORREF m_colorText; // 텍스트 전경색
LOGFONT m_logFont;  // 텍스트를 출력할 논리적 글꼴

cf> 배경색을 지정하려면 변수 추가 : COLORREF m_bkText; // 텍스트 전경색


2. 생성자(보통 뷰 클래스)

 m_bTransparent = TRUE;

 m_colorText = RGB(255, 255, 0);
 m_logFont.lfHeight  = 35;
 m_logFont.lfWidth  = 0;
 m_logFont.lfEscapement = 0;
 m_logFont.lfOrientation = 0;
 m_logFont.lfWeight  = FW_NORMAL;
 m_logFont.lfItalic  = FALSE;
 m_logFont.lfUnderline = FALSE;
 m_logFont.lfStrikeOut = FALSE;
 m_logFont.lfCharSet  = DEFAULT_CHARSET;
 m_logFont.lfOutPrecision = OUT_CHARACTER_PRECIS;
 m_logFont.lfClipPrecision = CLIP_CHARACTER_PRECIS;
 m_logFont.lfQuality  = DEFAULT_QUALITY;
 m_logFont.lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE;
 strcpy(m_logFont.lfFaceName, _T("Arial Black"));

cf) 배경색 지정하려면 m_bkText = RGB(255, 255, 0);


3. OnDraw or OnPaint

 // LOGFONT로부터 글꼴을 생성
 CFont newFont, *pOldFont;
 newFont.CreateFontIndirect(&m_logFont);
 // 생성된 글꼴을 DC에 선택
 pOldFont = (CFont *)pDC->SelectObject(&newFont);
 // 텍스트의 전경색과 배경색 설정
 pDC->SetTextColor(m_colorText);
 // 배경 모드를 설정
 if(m_bTransparent) pDC->SetBkMode(TRANSPARENT);
 else pDC->SetBkMode(OPAQUE);
 // 텍스트 출력
 pDC->TextOut( 20, 7, "사용자 로그인");

Posted by Tommy™
,