VisualStudio.C++.C# ( 316 ) CString, LPCTSTR, LPTSTR. CString -> LPCTSTR(유니코드에선 const wchar_t* , 멀티바이트에선 const char*) CString cst; LPCTSTR m_lpctstr = cst; 별다른 처리 없이 대입하듯이 하면됨. 실제 컴파일 과정에서는 CString이 LPCTSTR로 알아서 변환 처리됨.그럼에도, 명시적으로 형변환 하는게 항상 안전함. 즉, 아래 처럼 형변환명시하자. LPCTSTR m_lpctstr = (LPCTSTR)cst; CString -> LPTSTR (유니코드에선 wchar_t*, 멀티바이트에선 char* ) CString cst; LPTSTR p = cst.GetBuffer(0); cst.ReleaeBuffer(); 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C.. 2015. 12. 21. VC++. 리소스 String Table. 개요. VC++ 프로젝트의 리소스에 String Table 추가, 코드상에서 활용하는 법. 상세 1. 프로젝트 리소스에 String Table 추가. 프로젝트의 리소스 뷰에서 우마우스 클릭 -> "리소스 추가..." 클릭 하여 뜬 창에서 "String Table" 선택하여 버튼 "새로만들기"클릭-아래그림. String Table 추가된 모습캡션에는 원하는 문자열을 기록하면됨. 2. 코드에서 활용하기. 예1.CString cst;cst.LoadString(IDS_STRING2007);AfxMessageBox(cst); 추가정보. String Table 활용 : http://www.codeproject.com/Articles/10542/Easily-Load-and-Format-Strings-from-the-.. 2015. 12. 19. VC++. 출력 언어 고정하기.예. #pragma setlocale("kor") 개요. 프로그램이 실행될때 컴퓨터에 설정되어있는 윈도우 운영체제의 기본언어로 표기된다. 프로그램이 윈도우에 설정된 기본언어 무시하고 고정된 언어로 표시되게 하려면 코드에 아래 구문 추가한다. 예 : 한국어 #pragma setlocale("kor") ///504. 2015. 12. 18. VC++. LPCSTR, LPCWSTR, LPCTSTR, LPTSTR, TCHAR,char,wchar_t. 멀티바이트, 유니코드. LPCSTR = const char* : 멀티바이트. - LPCSTR 은 const char* 와 동일한것. typdedef const char* LPCSTR ; 로 되어있음. - 용어의미 : LP (Pointer ), C (constant) STR (string). LPCWSTR = const wchar_t* : 유니코드. - LPCWSTR 은 const wchar_t* 와 동일한것. typedef const wchar_t* LPCWSTR; 로 되어있음. - 용어의미 : LP(Pointer), C (constant), WSTR (wide string). LPCTSTR : 프로젝트 환경설정(문자집합 설정)에 따라 LPCSTR 혹은 LPCWSTR 로 처리됨. - 용어의미 : LP (Pointer), C (.. 2015. 12. 18. VC++. CW2A, CA2W 멀티바이트 <-> 유니코드 변환 클래스. CA2W, CW2A 현재시점(2015년 12월) VC++ 에서 멀티바이트 문자 유니코드 문자 변환에 사용하기 가장 간편한 것. 기본 사용예. Colored By Color Scripter™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 //Example 1 // Convert LPCWSTR to LPCSTR. void ExampleFunction1(LPCWSTR pszW) { // Create an instance of CW2A, called pszA, // and initialize it with pszW. CW2A pszA(pszW); // pszA works lik.. 2015. 12. 18. Dependency Walker 로 Explicit linking 된 DLL 까지 확인하는법. 개요. Dependency Walker 프로그램을 이용하여 임의의 응용프로그램의 explitcit linking 된 DLL 확인방법. Dependency Walker 기본정보 -> http://igotit.tistory.com/497 상세. 1.Dependency Walker 실행한후 응용프로그램을 오픈한다. 아래그림예에서는 DEVCENTER.exe라는 응용프로그램. 그냥 열기만 한 경우에 보이는(아래 붉박) DLL 들은 응용프로그램에서 implicit linking 된 것들만 보이며, 응용프로그램에서 실행된 이후 특정시점에 dll이 로딩되는 식으로 코딩되어있다면 이 단계에서는 해당 DLL이 안보임. 2. 실행된 이후 로딩되는 DLL 들 확인하기 위해서는 메뉴 -> Profile -> Start Prof.. 2015. 12. 16. Dependencey Walker - EXE,DLL 에서 사용되는 DLL 및 DLL 노출함수 볼 수 있는 툴. 개요 실행프로그램이나 DLL 에서 사용하고 있는 DLL 리스트를 볼 수 있고, DLL의 노출함수를 볼 수 있는 툴. 입수방법. 1. 제작사 홈페이지에서 무료다운 : http://www.dependencywalker.com/ 설치방법. - 설치과정없이 상기 다운로드 받은 파일 압축풀고 내부의 실행프로그램 실행하면됨. 사용법 요약. implicit linking 된 DLL 보기 "Dependency Walker" 실행하여 사용중 DLL 알고 싶은 exe 나 DLL 파일을 open하면, DLL 이 implicit linking 된것은 바로 리스트로 확인가능하며, explicit linking 된 DLL 보기 프로그램 내에서 explicit linking 된 DLL 을 보려면 메뉴 Profile -> Start.. 2015. 12. 16. VC++, 이미 프로젝트에 포함된 클래스이름변경, 파일명 변경. 예 : CyFinAPI 프로젝트의 클래스 CDlgMain->CCyFinAPIMainDlg 개요. VC++ 프로젝트에 이미 생성되어있는 클래스 이름변경을 간단히 수행할 수 있는 Visual Studio 툴사용법. 동시에 파일명 변경법. VS 버전 : Visual Studio 2015. 예 : CyFinAPI 프로젝트의 클래스 CDlgMain->CCyFinAPIMainDlg 클래스 이름변경 방법. 클래스 뷰에서 변경하고자 하는 클래스 마우스 우클릭. 새 이름에 새 클래스 이름을 기록하고, 미리보기 클릭한다. CCyFinAPIMainDlg 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11 ///495. 2015. 12. 15. VC++. 사용자정의메시지 수신처리기 추가. 예: CyFinAPI의 클래스 CDlgMain에 추가함. 상세. 클래스마법사 실행하여(아래 그림) 사용자 정의 메시지 수신 처리기를 추가할 클래스를 지정하고, 파랑박스에서 클래스 선택. 위 그림에, 탭 "메시지" 을 선택하고 버튼 "사용자 지정 메시지.." 클릭하면 메시지아이디, 메시지 처리기 함수명을 지정하는 창이 뜬다. 아래. 메시지 아이디부분에 기록하면 처리기 함수명은 자동으로 만들어진다. 이 함수명 그대로 사용해도 되고 임의로 변경가능. 메시지 아이디는 메시지를 송신하는 측에서 지정된 것을 기록하면된다. 통상 #define WM_MESSAG_ID WM_USER+번호 식으로 선정의 해두고 사용하게 된다. 위 그림의 확인버튼 클릭하면, 메시지 처리 함수가 코드속에 들어오게 되며, 이 함수에 메시지 수신시 처리할 사항을 코드 추가한다. 끝. - VC++. 사.. 2015. 12. 13. VC++ 프로젝트 리소스에 아이콘 추가. 예:CyFinAPI 프로젝트에 아이콘 추가. 상세. 아이콘의 아이디를 설정하고(아래 붉박), 사이즈, 색상표현비트수 별로 아이콘들이 준비되어있다. 각각의 이미지를 원하는것으로 수정하면된다. 아이콘 이미지가 간단한 경우에는 본 편집기에서 직접 수정해도 되고, 이미지가 복잡한 경우 아래와 같은 과정으로 이미지 처리 작업 수행해도 된다. 1. 별도의 이미지 편집툴(포토샾 , 혹은 온라인 편집툴 http://igotit.tistory.com/491 ) 등에서 아이콘중 가장 큰 사이즈인 256x256 32비트 규격으로 이미지 작업하여 고품질 원본 1개 만들고 2. 상기 1의 원본을 48x48, 32x32, 16x16등의 축소판 만들고, 각 이미지들을 png로 저장하고, 3. 상기 2의 png를 그림판에서 열고, 이미지를 복사하여 아래 VC++ 그림부분에 복.. 2015. 12. 13. VC++ 프로젝트 리소스에 메뉴 추가. 예:CyFinAPI 프로젝트에 트레이아이콘용 메뉴 추가. 상세. 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11 ///489. 2015. 12. 13. VC++ 프로젝트에 일반클래스 추가. 예: CyFinAPI(DLL) 프로젝트에 CCyTrayIcon 추가. 개요. VC++ 프로젝트에 일반 C++ 클래스 추가하기. (MFC클래스를 베이스로 하지 않는) - 예: CyFinAPI(MFC regular DLL) 프로젝트에 CCyTrayIcon (일반 C++ 클래스)추가함. 방법요약. 방법1. 클래스마법사 (핫키 ctrl shift x )에서 클래스추가하기. 클릭하여 클래스 이름, 파일명 지정하여 생성. 방법2. 솔루션 탐색기 프로젝트 우마우스 클릭 -> 추가 -> 클래스 클릭하여 C++ 클래스 선택하여 생성. 아래 1이든,2든 동일한 것이며 아래 상세에서는 방법1 보임. 방법1. 클래스 마법사 이용하여 일반 클래스 추가. 프로젝트 CyFinAPI 에서 클래스 마법사 (핫키 ctrl shift x) 실행 - 아래. 붉박 클래스 추가 클릭. 아래. 붉박 클래스 이름을.. 2015. 12. 13. Visual Studio 2015 Installer 설치하기. 설치 첫화면, 설치완료후 VS205 실행하여 새프로젝트 만들기 시도 해보면, 템플릿 중에 기타 프로젝트 형식에 Visual Studio Installer 가 준비되어있다. 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11 ///486. 2015. 12. 13. VC++. MFC 대화상자 Alt F4, x버튼, ESC, 엔터 눌러도 안죽게 하기. 예: CyFinAPI DLL 프로젝트 내의 CDlgMain 에 적용. 가장 확고한 방법은 PreTranslateMessage 이용하는것. 아래 설명의 마지막에 있는 PreTranslateMessage 적극 활용할것. BOOL CCyFinBotDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case VK_ESCAPE: case VK_RETUN: return TRUE; default : break; } } // TODO: Add your specialized code here and/or call the base class return CDialogEx::PreTranslateMessage(pMsg); } alt F4, ESC키, x 버튼 클릭 해도 대.. 2015. 12. 12. VC++. MFC 대화상자 Modeless 생성/종료하기. 예: CyFinAPI DLL 프로젝트 내의 CDlgMain 생성/종료 개요. MFC CDialog 기반 대화상자를 modeless 로 생성하고 종료하는법 정리. modeless 든 modal 이든 대화상자 템플릿과 클래스를 만드는 기본적인 사항은 동일하며, 생성/종료방법에 따라서, modal, modeless 라고 불린다. 대화상자 생성시 Create 함수호출로 생성하는것을 modeless 라고 한다. 대화상자 생성시 DoModal함수로 생성하는 것을 Modal 대화상자라고 한다. Modal,Modeless 대화상자 비교. Modeless 대화상자. Modal 대화상자. 생성 함수 Create DoModal 종료 함수 DestroyWindow EndDialog본 글의 설명에 사용되는 예제 프로젝트CyFinAPI (VC++ MFC Regular DLL 프로젝트임) .. 2015. 12. 12. Visual Studio 2015 VC++ 배포시. Universal CRT(C RuntTme) 라이브러리 배포 방법. CRT 배포 요약.- Visual Studio 2015. VC++ 버전14. Visual Studio 2015에 포함된 Visual C++ (버전14)에서 제작된 응용프로그램 배포시, Universal CRT(C RunTime )라이브러리가 실행될 컴퓨터에 있어야 응용프로그램이 정상 실행된다. Win10 에는 Universal CRT가 기본 설치되어있기때문에 별도 설치가 필요없다. win7,8,8.1 의 컴퓨터에 Universal CRT 라이브러리파일이 없다면 아래 3가지 방식 중 하나를 이용하여 VS2015의 VC++로 제작된 응용프로그램 정상실행가능하다. 용어 : Universal CRT - Visual Studio 2015 의 VC++(버전14)부터 등장. 이전의 Visual C++ 6.0, 201.. 2015. 12. 12. VC++ 응용프로그램에서 DLL 사용하기. 예: CyFinAPI.DLL 을 CyFinAPI_App1 에서 사용. 개요. DLL 을 VC++ 응용프로그램에서 사용하는 법 상세설명. - Visual Studio 2015. - implicit linking 방식으로 DLL 사용함. 개요보기 -> http://igotit.tistory.com/471 - 예로 사용되는 VC++ 응용프로그램 프로젝트(대화상자기반) : CyFinAPI_App1. 상세보기 -> http://igotit.tistory.com/482 - 예로 사용되는 DLL : CyFinAPI.DLL 상세보기 -> http://igotit.tistory.com/481 DLL 파일들 배치. 가장 먼저 DLL (CyFinAPI) 의 3개의 파일들을 응용프로그램 (CyFinAPI_App1) 프로젝트 개발중 폴더에 배치하는것 부터 한다. 아래 3개의 파일이다. 1. Cy.. 2015. 12. 12. VC++ 프로젝트에 MFC 대화상자 추가하기. 예: CyFinAPI DLL 프로젝트에 CDlgMain 추가. 개요 VC++ 프로젝트 (MFC기반 프로젝트)에 MFC 대화상자 추가. 대화상자를 추가한다함은 코드상에서는 아래 2가지 요소가 추가된다는 의미. 1. 대화상자 리소스 - 화면상에서 보이는 것. 2. 대화상자 클래스 - 상기1과 연결된 클래스. 상기 1,2를 달성하는 방법으로 Visual Studio의 클래스 마법사를 이용하여 생성하는 과정. 본 글의 설명 환경. IDE : Visual Studio 2015. 대화상자 추가할 VC++ 프로젝트 : http://igotit.tistory.com/476 추가할 대화상자 클래스 이름 : CDlgMain 상세-대화상자 추가하기. 클래스마법사 이용. 1. 클래스 마법사 실행. 솔루션 탐색기에서 VC++ 프로젝트인 CyFinAPI 를 선택하고, 마우스 우클릭하여 "클.. 2015. 12. 11. 이전 1 ··· 13 14 15 16 17 18 다음