본문 바로가기

VC++   ( 26 )


VC++ . _CRT_SECURE_NO_WARNINGS . #pragma warning(disable: 4996) 오류가 아닌데 VC++ 컴파일 오류 나는 상황 VC++ 에서 컴파일 결과 아래 에러 리스트에 이 함수는 안전하지 않다. 다른 함수 사용해라. 이 경고 안나오게 할려면 _CRT_SECURE_NO_WARNINGS 추가하라는 문구 보이는 경우 해결책 통상 scanf 등 과 같은 함수 사용하려 할 때 상기와 같은 오류 보여주며, 대안으로 다른 함수 사용하라고 제시해주는함수를 보면 구질구질 하기 짝이 없는 경우가 많다. 제시해준 함수를 사용해도 되고 아래처럼 코드에 기록해두면 C4996 은 오류로 처리하지 않고 정상적으로 컴파일 가능. #pragma warning(disable: 4996) 첫 등록 : 2022.03.07 최종 수정 : 단축 주소 : https://igotit.tistory.com/3532 2022. 3. 7.
Fixed width integer types C99표준. stdint.h 에 정의 있음. uint8_t, uint64_t 등. Fixed width integer types (since C99) Types Defined in header int8_t int16_t int32_t int64_t signed integer type with width of exactly 8, 16, 32 and 64 bits respectively with no padding bits and using 2's complement for negative values (provided only if the implementation directly supports the type) int_fast8_t int_fast16_t int_fast32_t int_fast64_t fastest signed integer type with width of at l.. 2020. 9. 7.
Visual Studio native C++ 프로젝트에서 64비트, 32비트 플랫폼 선택하여 빌드 가능하게 설정하기. 개요 본 글에서는 Visual Studio 의 native C++ 프로젝트의 빌드 대상 플랫폼(운영체제의 비트수)에 64비트를 추가하는 설정법 정리한다. Visual Studio 기본 셋팅은 32비트로 되어있는데, 추가로 64비트도 선택할 수 있도록 한다. - native C++ 은 32비트, 64비트 중 1개만 선택 가능하다. - 보통 native C++ 응용프로그램은 32비트로 설정하는 것이 대부분이다. 32비트 응용프로그램은 64비트 운영체제에서도 정상적으로 실행되지만, 64비트로 만들어진 응용프로그램은 32비트 운영체에서 실행되지 못하기 때문이다. - 어쩔 수 없는 상황 때문에, native C++ 을 64비트로 만들어야 하는 경우도 있다. Visual Suudio 로 64비트, 32비트 프로그램.. 2019. 10. 27.
VC++, DLL 활용하는법.- implicit linking (암시적 연결방식) 개요. VC++ 프로젝트에서 DLL 활용하는법 정리. - implicit linking 방법. VC++ 프로젝트에서 DLL 을 임포팅하는 방법은 크게 implicit linking 과 explicit linking 이 있다. implicit linking 은 프로그램이 실행될때 로딩되어 프로그램 종료될 때 해제되는 반면 explicit linking은 프로그램 실행후 원하는 시점에 로딩과 해제가 가능하다는 점이 큰 차이다. dll 위치1. implicit linking 인 경우 dll 은 반드시 exe 와 동일 경로에 있어야 한다. 2. 상기 1이 아닌 경우는 윈도우 운영체제 기본 system32 폴더에 있든지, 3. 혹은 임의 폴더에 dll 을 배치하려면 운영체제의 PATH 설정해야한다. dll 활용하.. 2019. 4. 16.
VC++. MFC 대화상자 기반 응용프로그램 만들기.예: CyFinAPI_App1 개요. VC++ 에서 대화상자 기반 응용프로그램 만드는 과정 정리. - 버튼 및 표현요소들을 배치하고 사용자 입력 처리등 간단한 응용프로그램 작성시 유용. IDE: Visual Studio 2015프로젝트 이름 : CyFinAPI_Smaple1 전체과정. 1. Visual Studio 에서 메뉴 파일 -> 새로만들기 -> 프로젝트 클릭하여, 2. 템플릿 -> Visual C++ -> MFC -> MFC 응용프로그램 선택하고, 프로젝트이름, 경로지정3.이후 응용프로그램 마법사에서 설정. 아래 상세 설명은 상기 2,3 정리. 상세- 대화상자기반 MFC 응용프로그램 만들기. 1. MFC응용프로그램, 프로젝트 이름, 경로지정. MFC 응용프로그램 마법사 설정. 마법사 시작 . 버튼 "다음" 클릭. 대화상자 기반.. 2019. 4. 16.
float 형 변수에 할당된 4바이트 메모리의 각 바이트 단위로 접근하는법. 문제. 변수 선언이 float f_value; 처럼 float 으로 선언되어있어서, 통상적인 실수값을 이 변수에 대입(예 f_value = 3.789f )하여 실수로 활용하지 않고, f_value 에 할당된 메모리 4바이트들의 각 바이트들에 개별적으로 unsigned char 형의 값을 기록하고 각 바이트별로 저장된 값을 활용하고자 하는 경우. 즉, f_value 에 할당되어있는 메모리는 이렇게 생겼다 -> | 1번 바이트 | 2번 바이트 | 3번 바이트 | 4번 바이트 | 위 메모리의 각 바이트 접근하는법. float 형 변수 메모리의 각 바이트 별로 핸들링 하는법. unsigned char 형의 포인터 변수 생성 하고 여기에 f_value 의 주소를 (unsigned char*) 로 형변환한다. un.. 2019. 2. 20.
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.
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.
VC++ MFC Regular DLL 프로젝트 만들기. 예:CyFinAPI.dll 개요 VC++ 에서 MFC Regular DLL 만드는 법. 사용된 IDE : Visual Studio 2015 DLL 프로젝트 명칭 : CyFinAPI - Solution 명칭도 CyFinAPI 로 함. 과정요약. 1. Visual Studio 의 "새 프로젝트" (메뉴 :파일->새로만들기->프로젝트.. 클릭) 에서 MFC DLL 선택하고 프로젝트이름, 경로, 솔루션 이름 지정하고 확인버튼클릭. 2. 이후 DLL 마법사 설정선택하여 기본 DLL프로젝트 자동생성. 3. DLL 을 사용할 프로젝트에서 본 DLL 을 활용할때 필요한 헤더파일 생성해두기. 상세과정 . MFC Regular DLL 만들기. 1. 아래 그림에 Visual Studio 의 "새 프로젝트" (메뉴 :파일->새로만들기->프로젝트.. 클.. 2015. 12. 10.
VC++ 타이틀바에 보이는 프로그램 이름 변경. VC++ 프로젝트로 만든 프로그램 타이틀바에 보이는 이름 변경하는 법. CMainFrame 의 PreCreateWindow에 아래 파랑색 코드 추가하면됨. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style &= ~FWS_ADDTOTITLE; // 이설정을 해야 타이틀 변경 가능해짐. cs.lpszName = "내프로그램임"; return TRUE; } 대화상자의 타이틀 설정. ::OnInitDialog().. 2015. 6. 6.
다른 프로그램과 메모리공유 - 메모리 맵 파일. 개요 다른 프로그램(프로세스)들이 동일한 메모리를 고유하는 "메모리맵파일(=공유메모리)" 활용법 정리. 요점. 1. ::CreateFileMapping 으로 공유메모리 생성. ::OpenFileMapping 으로 이미 생성된 공유메모리 열기.2. ::MapViewOfFile 로 상기1의 공유메모리 포인터 받아서 데이터 읽기,쓰기. CreateFileMapping Creates or opens a named or unnamed file mapping object for a specified file.To specify the NUMA node for the physical memory, see CreateFileMappingNuma.SyntaxC++Copy HANDLE WINAPI CreateFileMap.. 2015. 6. 6.
다른 프로그램과 메시지 송수신 - FindWindow이용 대상윈도우핸들로 직접 전송. 개요 서로 다른 프로그램간의 메시지 송수신을 위하여 메시지 전송대상 윈도우 핸들을 함수 FindWindow 이용하여 확보하고 메시지 전송하는 방법 정리. 간단히 2단계로 이뤄진다. 1. FindWindow 로 메시지 타겟 윈도우 핸들 받기. 2. 1에서 확보된 윈도우 핸들로 SendMessage/PostMessage 함수 이용 메시지 전송. 타 방법 비교 : 다른 프로그램간의 메시지 송수신 방식중 RegisterWindowsMessage 함수 이용하는 방식(보기 -> http://igotit.tistory.com/318 ) 대비 본 글에서의 설명하는 방식이 고속/즉시 전송이 가능하다. 구현코드예 메시지 전송할 프로그램을 A, 수신처리할 프로그램을 B라고 하면 각각의 프로그램엔 아래와 같은 구조로 코딩되면.. 2015. 6. 6.
다른 프로그램과 메시지 송수신. - RegisterWindowMessage 개요 보통 메시지(SendMessage, PostMessage) 는 1개의 프로그램내에서 주로 사용되나, 서로다른 프로그램간에도 메시지 송수신 가능하다. 본 글에서는 다른 프로그램간의 메시시 송수신 방법 정리한다. 구현방법 요점. 2개의 프로그램이 있다고 하고, 각각을 A, B 라고 하자. 메시지 전송함수 SendMessage/PostMessage 모두 사용가능하며 본 글에서는 SendMessage 를 예로 보이나, 설명중의 SendMessage는 PostMessage 로 대치가능하다. 1. A,B 모두에 RegisterWindowMessage 함수 호출한다. - 메시지를 등록하는 함수이며 이렇게 등록된 메시지는 다른 프로그램으로도 전달가능하다. - 함수의 인자로 임의 문자열을 기록하는데, 이 문자열이 .. 2015. 6. 5.
Virtual-Key Codes. VC++ VC++ 에서 마우스나 키보드 이벤트 핸들러 함수 인자로 virtual key code 가 전달되며, 아래 리스트와 같다. Constant/value Description VK_LBUTTON 0x01 Left mouse button VK_RBUTTON 0x02 Right mouse button VK_CANCEL 0x03 Control-break processing VK_MBUTTON 0x04 Middle mouse button (three-button mouse) VK_XBUTTON1 0x05 X1 mouse button VK_XBUTTON2 0x06 X2 mouse button - 0x07 Undefined VK_BACK 0x08 BACKSPACE key VK_TAB 0x09 TAB key - 0x0A.. 2015. 1. 19.
키보드 입력처리. VC++ MFC 이용하는 경우. VC++ MFC기반의 키보드 입력처리. 1. 클래스 위저드 에서 메시지 선택을 WM_KEYDOWN(키를 누른 경우 발생하는 메시지) 이나, WM_KEYUP(눌렀던 키를 놓았을때 발생하는 메시지) 을 선택하여 핸들러 함수를 추가한다. 아래 코드예는 VC++2010 에서 CMyView 클래스에 WM_KEYDOWN 메시지 핸들러를 추가한 경우 자동 생성된 코드. void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CView::OnKeyDown(nChar, nRepCnt, nFlags); } 2. 위 메시지 핸들러는 모든 키에서 전부 실행되는 구간이므로 특정키에서만 처.. 2015. 1. 19.

   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT