왜 항상 CString을 char*형으로 변경해야 할 일이 생길까...

맨날 까먹고 검색하기도 귀찮고, 그냥 내 블러그에 내가 적어놓고 필요할때 꺼내보는게 좋지... ㅋㅋㅋ


예제>

CString csFileName;

csFileName = m_pObjFileUtil->GetRunDirectory();

csFileName = csFileName + _T("\\Motion.cme2");


char* strTmp; 

int nLength = csFileName.GetLength();

strTmp = new char[nLength+4];

WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)csFileName, nLength+4, strTmp, nLength+4, NULL, NULL);


이렇게 하면 CString이 char*로 변경됨.

Posted by 둔한늑대
,


Visual Studio 2013을 실행하고 프로젝트를 생성해서 보면 변수, 함수등이 한눈에 들어오지도 않고 다소 밋밋한 화면에 실망을 한다. 이럴때는 변수 함수등을 표시하는 색을 변경해서 눈에 띄게 만들어보자.


'도구 -> 옵션'을 선택하고 들어가자.


글꼴 및 색 지정에 각각의 변수,함수,매크로등의 색을 지정할 수 있는 옵션이 있다. 그러나 저 많은 것들을 아름답게 잘 색 분배를 할 수 있기는 너무나 힘들다. 나같은 사람을 위해 누군가 미리 만들어놓은 셋팅값들이 있지않을까?


여기 있다. http://studiostyl.es/ 

내가 일일이 색지정을 하지않아도 많은 사람들이 자신만의 개성으로 지정해놓은 테마 색들이 엄청나게 많다.


클릭을 하고 들어가면 스타일을 미리 볼 수 있게 되어있다. 적용을 해보고 싶다면 'Download this scheme'를 눌러 파일을 다운로드 받자.


Visual Studio 2013에 적용하기위해 ' 도구 -> 설정 가져오기 및 내보내기 '를 선택한다.


다운로드한 파일을 적용하기 위한것이니 ' 선택한 환경 설정 가져오기 '를 고르고 다음을 누른다.


밋밋한 초기화면 설정을 저장해 놓을 필요는 없다. ' 아니요, 새 설정을 가져와 현재 설정을 덮어씁니다. '를 선택하고 다음을 누른다.


' 찾아보기 '를 누르고, 아까 다운로드 받은 파일을 선택하자.


최근에 사용한 파일에 선택한 파일 셋팅이 표시가 될 것이다. 다음을 누르자.


가져올 설정을 선택하는 것인데 그냥 마침을 누르면 된다.


설정을 가져왔다고 알려준다. 닫기를 누르고 빠져나와서 보면


변수, 함수, 배경색등이 변경되어 있는 것을 볼수있다. http://studiostyl.es/ 에 엄청나게 많은 테마들이 있으니 하나하나 다운받아서 설치해보며 마음에 드는 설정을 찾기 바란다. 

난 내 마음에 드는거 찾는데 3시간 정도 걸렸다. 하루 8시간 이상을 바라볼 화면인데 그정도는 해 줘야 되지 않을까? ㅠㅠ


Posted by 둔한늑대
,


다른 에디터들은 왼쪽에 줄번호가 보여서 내가 수정하는 곳이 몇라인인지, 디버깅시 여기가 어딘지 쉽게쉽게 파악이 가능하다. 그런데 Visual Studio 2013은 왜 옆에 줄번호가 안보일까?



1. 도구 -> 옵을 선택한다.



2. C/C++ -> 일반 -> 줄번호 를 체크 한다.



이제 줄 번호가 이렇게 보일 것이다. 그냥 Default로 해 놓지 왜 이랬을까.


Posted by 둔한늑대
,





Visual Studio 2013을 처음 실행하면 배경이 흰색이라 눈이 부시다. 

나만 그런가......

이럴때는 색테마를 변경해서 사용하면 된다.



1. 도구 -> 옵션을 선택한다. 



2. 환경 -> 일반 -> 색테마 -> 어둡게 를 선택한다.




이제 눈부심 안뇽~~~~




Posted by 둔한늑대
,

ActiveX 컨트롤 추가하는건 기억할테니 패스하고.....


Microsoft FlexGrid Control, version 6.0 (SP6)을 추가하고, 컨트롤변수를 추가하고나서 컴파일을 하면 아래와 같은 Error가 뜬다.

단항 빼기 연산자가 부호 없는 형식에 적용되었습니다. 결과는 역시 unsigned입니다.


뭔말인지 이해도 안가고 어렵다.. 에러뜨는 위치로 가보자.



flexOLEDropEffectScroll = -2147483648   이놈이 Error의 원인이란다.

뭔지 모르겠고, 그냥 고치자.



flexOLEDropEffectScroll = -2147483648LL


이렇게 고치고 컴파일 하면 Error는 뜨지 않는다. 난 여기까지 성공했으니, FlexGrid 컨트롤 하러감. 

하다가 막히면 또 해결후 기록해 놓겠음.




Posted by 둔한늑대
,

Button에 Text만 있으면 뭔가 허전하잖아.


이럴때 아래모습처럼 Button에 그림 넣어보자.

접한 아이콘이지만 넣으니 색다르군.


1. Button의 컨트롤 변수를 선언하자. 변수 형식은 CMFCButton이다.


2. OnPaint()나 OnInitDialog() 따위의 위치에 아래의 코드를 추가하자.


이렇게하면.....

버튼이 이렇게 바뀔것이다.








Posted by 둔한늑대
,

Dialog에 BMP 이미지 올리기


1. Dialog에 Picture Control을 하나 넣고  속성의 Type을 Bitmap으로 바꾼다.



2. "클래스 마법사"를 통해서 Control변수를 하나 등록한다.


3. Bitmap이미지도 추가하고, ID를 부여하자.



4. 이미지를 띄우고 싶은 곳에, 아래의 코드를 추가하면 BMP이미지가 나타난다.

HBITMAP hbit;

hbit = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_INFOICON));

m_MyIcon.SetBitmap(hbit);




끝!

Posted by 둔한늑대
,

SDI로 프로젝트를 생성하면 메뉴바가 있다.



저  Menu Bar를 없애기 위해서는

MainFrm.cpp파일의 PreCreateWindow 함수에 아래의 코드를 추가 하면 된다.



CMenu* pMenu = new CMenu;

pMenu->Attach(cs.hMenu);

pMenu->DestroyMenu();

cs.hMenu = NULL;

delete pMenu;


이렇게 추가 하고 컴파일 하면


이렇게 없어진다.

Posted by 둔한늑대
,

다른 폴더를 프로젝트에 포함시키기


"프로젝트 -> 속성"을 선택한다.



"구성속성->C/C++"을 선택한다.



"추가 포함 디렉토리"에 빨간색 부분을 선택한다.



폴더를 추가해주면 된다. 끝!



Posted by 둔한늑대
,

Bitmap에 이미지 추가했으면, 화면에 넣어줘야지.


1. 도구상자에서 Picture Control을 선택해서 원하는 위치에 넣자.


2. 속성에 Type을 Bitmap로 선택하고, Image에 Bitmap에 추가한 이미지 ID를 선택하자.


3. 이렇게해서 컴파일되면 얼마나 좋을까 싶지만, 이렇게 하면 에러뜬다!!!! 뭐 이따위가.... 췟!


4. 이럴때는 프로젝트 *.rc 파일을 오픈해 보자.

    쭉~ 훑어보면 요론놈이 있을것이다. 아까 Picture Control로 추가한 ID를 찾으면 간단~


5. 요놈에 아래와 같이 추가하자.

    "Static", SS_BITMAP       <= 요놈 추가

    

    이제 컴파일하면 에러없이 그림이 딱! 나타날 것이다.






Posted by 둔한늑대
,