VisualStudio.C++.C#/코딩팁,함수활용,단편 ( 156 ) MFC 프로그래스 컨트롤 사용하기. Progress Control 1. 도구상자에서 "Progress Control" 선택하여 배치한다. 2. 상기1의 배치된 프로그래스 컨트롤의 속성에서 ID 설정한다. 혹은 기본 자동 생성ID 그대로 둬도 된다. 3. 클래스 위저드 실행하여 멤버변수 지정. 예. m_PgrsQBufDelayTime 4. 프로그래스 컨트롤 초기화. - 표현할 최소, 최대값 지정. 예. m_PgrsQBufDelayTime.SetRange(0,2000); 5. 프로그래스에 값표현. 값읽기.값 표현. m_PgrsQBufDelayTime.SetPos(100); // 100의 위치까지 바표현됨. 값 읽기. m_PgrsQBufDelayTime.GetPos(); // 함수 반환값으로 현재 위치 반환됨. 바 색상지정 함수 : SetBar.. 2016. 1. 16. Chart Director for C++ 개요, 설치. 설정. 개요 ChartDirector 는 개발중 프로그램에서 챠트기능을 구현할 수 있게 해주는 컴포넌트이며 거의 모든 언어 지원된다. 지원언어 : C++, .net, ASP/COM/VB, JSP/Java, ColdFusion, PHP, Perl, Python, Ruby. 그릴수 있는 챠트종류 : Pie,XY,3D Surface, 3D Scatter, Polar/Radar, Pyramids/Cones/Funnels, Meter/Gauage. Chart Director는 각 언어별로 배포파일이 따로 제공되고 있다. 자유롭게 다운로드 받을 수 있고, 기간/기능 제한 없음. ChartDirector 도입한 응용프로그램이 상용인 경우 라이센스 구입해야함. 본 글에서 아래 3개 내용 정리된다. 1. C++ 용 Chart .. 2016. 1. 15. MFC 체크박스 사용하기. 1. 도구상자에서 체크박스 드래그드롭으로 배치. 2. 속성 : ID 기록 혹은 기본 생성값 그대로. 3. 체크박스의 멤버변수 추가. 클래스위저드(ctrl shift x) -> 탭 멤버변수 -> 컨트롤 아이디 상기 2인 것을 클릭하여, 변수이름 기록하고, 4. 코드에서 체크박스의 상태 읽기 함수. m_CheckMarketDataView.GetCheck() ; 반환값 1이면, 체크 상태. 0이면 체크아닌 상태. 5. 코드에서 체크박스 상태 설정함수. m_CheckMarketDataView.SetCheck(1 혹은 0); //1이면 체크상태로 설정한다. 0이면 체크안된 상태로 설정한다. 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tist.. 2016. 1. 15. Thread Safety (스레드 안전) Interlocked. 함수들. 개요 Interlocked 류 함수들은 멀티스레드 환경에서 long 타입, 포인터타입의 공유변수들의 단순한 처리(+1, -1,더하기, 대입, 비교대입) 에 있어서 함수 자체에서 스레드 안전을 보장한다. Interlocked 함수들의 내부처리는 Atomic Operation 으로 이뤄지며, Atomic Operation이 "interrupt 당하지 않는(같은 말 : 컨텍스트 전환 이 생기지 않는) 처리 "이므로 함수처리 완료시까지 다른 스레드의 침범을 받지 않게됨. 코드예를 보면, 아래 예1의 비안전 코드를 예2처럼 InterlockedIncrement 라는 함수 사용하는것 만으로도 전역변수 gCount 는 thread safety 해진다. 비교 : 아래 gCount++; 구간을 크리티컬 섹션(상세보기->.. 2016. 1. 12. Thread Local Storage(스레드 로컬 스토리지) 개요. TLS (Thread Local Storage)는 각 스레드마다 유일하게 할당된 메모리 블럭인 "스레드컨트롤블럭(Thread Control Block)" 에 위치하며, 다른 스레드와 공유되지 않는 영역. 설명. 프로세스와 스레드 의 공유자원 일반. 프로세스 내의 스레드 들은 프로세스의 자원(주소공간, 파일핸들, 전역변수, 정적변수, 힙등)을 "공유"한다. 즉, 스레드 내의 지역변수를 제외한 힙, 전역변수,정적변수는 다른 모든 스레드 에서 접근 가능하다. TLS 이용한 경우, 스레드에서 TLS영역에 정의된 데이터는 다른 스레드와 공유되지 않는다. TLS 사용방식 2가지. 방식1. 키워드 __declspec ( thread) 이용하여 변수선언. 아래처럼 선언하고 코드에서 일반변수 사용하듯이 그냥 사용.. 2016. 1. 12. MFC Collection Class. CArray, CList, CMap, ... The Template-Based Collection ClassesThe easiest way to implement a type-safe collection that contains objects of any type is to use one of the MFC template-based classes. For examples of these classes, see the MFC sample COLLECT.The following table lists the MFC template-based collection classes.Collection Template ClassesCollection contentsArraysListsMapsCollections of objects of any typeCArra.. 2016. 1. 4. ATL Collection Classes from MSDN. Visual Studio 2015 ATL provides many classes for storing and accessing data. Which class you decide to use depends on several factors, including: The amount of data to be stored Efficiency versus performance in accessing the data The ability to access the data by index or by key How the data is ordered Personal preference Small Collection Classes ATL provides the following array class.. 2015. 12. 28. 정수형 signed, unsigned 8, 16, 32, 64비트별 값 표현 범위. 정수 자료형. signed값 범위. 문자열 표현시 문자수.음수 부호표현 포함. int8_t -128 ~ 1274 int16_t -32,768 ~ 32,7676 int32_t -2,147,483,648 ~ 2,147,483,64711 int64_t -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 21 정수 자료형. unsigned값 범위. 문자열 표현시 문자수. uint8_t 0~255 (중심값 : 128)3 uint16_t 0 ~ 65535 (중심값: 32768)5 uint32_t 0 ~ 429496729510 uint64_t 0 ~ 18446744073709551615 20 본 글이 포함된 상위 정리 장소. Visual Studio/VC++/.. 2015. 12. 24. char*, const char*, char* const char* v; v는 문자, 문자열이 저장된 메모리의 첫주소를 저장할 수 있는 포인터변수. char* v = "문자열상수1"; 초기화 했어도 코드중에 언제든 변경가능. v="문자열상수2"; v="문자열상수3"; 등등. 모두 가능. const char * v; v는 문자열이 저장된 메모리의 첫주소를 저장할 수 있는 포인터변수, 금지되는것 : v 주소 메모리의 내용 변경불가. 즉, v는 "상수문자열" 의 포인트변수라는 의미. 한편, const 의 대상이 v 자체가 아니므로 v가 가리키는 주소는 변경가능함. 예를들면, const char* v = "난 문자열 상수1이다"; 로 초기화 했어도, 코드상에서 아래 처럼 다른 문자열의 메모리 주소를 대입가능하다는 말. v = "난 문자열 상수2임."; 가능함. v에 .. 2015. 12. 23. 문자열을 숫자로. atoi, _atoi_l, _wtoi, _wtoi_l,atol, _atol_l, _wtol, _wtol_l, atof, _atof_l, _wtof, _wtof_l atoi, _atoi_l, _wtoi, _wtoi_l Visual Studio 2015 Convert a string to integer. 구문복사 int atoi( const char *str ); int _wtoi( const wchar_t *str ); int _atoi_l( const char *str, _locale_t locale ); int _wtoi_l( const wchar_t *str, _locale_t locale ); 매개 변수strString to be converted. localeLocale to use. 반환 값Each function returns the int value produced by interpreting the input characters as a number.. 2015. 12. 23. 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++. 출력 언어 고정하기.예. #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. 1바이트 변수의 비트 분리하여 2바이트 걸쳐서 저장하기. 상황. 아래 그림처럼 1바이트 변수 source_byte 가 있고, 또한 1바이트 변수 2개 target_byte1, target_byte2 가 있다. source_byte 의 상위 비트 수량 num_bit_upper 는 target_byte1의 하위 에 기록하고, source_byte 의 하위 비트 수량 num_bit_lower 는 target_byte2의 상위 에 기록해야 한다고 하자. num_bit_upper = 3 num_bit_lower = 5 source_byte bit7 6 5 4 3 2 1 0 bit7 6 5 4 3 2 1 0 bit7 6 5 4 3 2 1 0 target_byte1 target_byte2 상기 1바이트를 복사할 대상 2개 바이트. 코드구현 요점. target_byte1 =.. 2015. 10. 27. C언어, continue. 반복문에서 continue 이하 실행 생략 루프진행. continue; 반복문 (while, for등의 ) 내에서 continue; 가 실행되면 continue; 이하는 실행하지 않고 반복 시행함. 사용예. for(i=0,i 2015. 9. 13. 이전 1 ··· 5 6 7 8 9 다음