본문 바로가기

C,C++

MFC 프로그래밍 error 1. TextOut

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CClientDC dc(this);


dc.SetTextColor(RGB(255,0,0));

dc.TextOut(10,30,"빨간색의 텍스트");


dc.SetBkColor(RGB(0,0,255));

dc.TextOut(10,50,"파란바탕의 텍스트");


dc.SetBkMode(TRANSPARENT);

dc.TextOut(10,70,"바탕이 투명한 텍스트");


error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : cannot convert parameter 3 from 'const char [1]' to 'const CString &'

1>          Reason: cannot convert from 'const char [1]' to 'const CString'

1>          Constructor for class 'ATL::CStringT<BaseType,StringTraits>' is declared 'explicit'

1>          with

1>          [

1>              BaseType=wchar_t,

1>              StringTraits=StrTraitMFC_DLL<wchar_t>

1>          ]


visual studio 6로 설명되어있는 책을 보고있습니다.

코드도 단순하고 초보단계여서 콤마까지 눈씻고 찾아봤으나.. 코딩의 문제는아니였습니다.

찾아보니

visual 2005이상은 '유니코드를 사용함'이 default설정이라 그렇습니다.

해결방법은 TextOut( , , const CString&str); 에서 Lconst CString&str <-L을 앞에 써줍니다.

그러면 유니코드문자열이 되서 해결됩니다.

CClientDC dc(this);


dc.SetTextColor(RGB(255,0,0));

dc.TextOut(10,30,L"빨간색의 텍스트");


dc.SetBkColor(RGB(0,0,255));

dc.TextOut(10,50,L"파란바탕의 텍스트");


dc.SetBkMode(TRANSPARENT);

dc.TextOut(10,70,L"바탕이 투명한 텍스트");


갈길이먼데.. 처음부터 잔챙이 돌부리들이.. 많은지..

'C,C++' 카테고리의 다른 글

c언어 헤더  (0) 2014.04.26
화살표연산자  (0) 2014.04.18
LINK : fatal error LNK1123  (0) 2014.04.09
dev c++ 창 바로 닫히는 문제  (0) 2013.06.24
DEV C++  (0) 2013.06.18