본문 바로가기

VisualStudio.C++.C#   ( 287 )


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.
Visual Studio 솔루션에 새프로젝트 추가하기. 예:솔루션 CyFinAPI에 CyFinAPI_SelfUpdate C# winform 프로젝트 추가. 개요 Visual Studio 의 솔루션에 새 프로젝트 추가하는법. - Visual Studio의 솔루션은 여러 개의 프로젝트를 포함시킬 수 있고, 서로 연관된 프로젝트들은 1개의 솔루션 속에서 통합관리되고 프로젝트간의 빠른 이동이 가능하다. 본 설명에서는 이미 만들어 둔 "1개의 C++ DLL 프로젝트가 있는 솔루션" ( 해당프로젝트 생성과정 보기 -> http://igotit.tistory.com/476 ) 에 C# "Windows Form 응용프로그램" 프로젝트를 추가하는 예를 보인다. 상세. - 솔루션에 새프로젝트 추가하기. 솔루션 탐색기에서 프로젝트 추가할 솔루션을 선택하고, 우마우스 클릭, 추가 -> 새 프로젝트 ... 클릭. 새프로젝트 추가창에서 추가할 프로젝트 형식을 선택한다. 본 예에서는.. 2015. 12. 10.
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.
Visual Studio Community 2015 설치, 무료. 참고. 2017년 3월 15일. 신규 2017 버전 배포됨. Visual Studio Community 2017 -> http://igotit.tistory.com/1253 ---------------------------------------------------------------------------------------------------------- 1. Visual Studio Community 2015 설치 다운로드 주소 https://www.visualstudio.com/products/visual-studio-community-vs 설치 실행 첫화면(아래 ) 설치완료후 제어판 프로그램 및 기능에서 기능 추가 제거 가능하므로 표준설치 선택하고 설치 버튼 클릭하여 진행. 설치중 화면 설치.. 2015. 11. 28.
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.
while 대기방식에서 일정시간 응답 없는 경우 while 탈출 로직. 코드의 실행 대기 용도로 while() 문을 사용하는 경우가 있다. 예. UART RX 로 데이터 수신된것을 폴링방식으로 읽는 경우를 보면, 아래처럼 작성된다. while (RX 버퍼에 데이터가 없다면) ; // 대기. 버퍼에 데이터가 있다면 빠져나온다. 함수 RX 버퍼 읽기. // 값읽기. 위 코드의 문제점은 while 문이 무한대기에 빠져 있을 수 있다는 점이다. 송신측에서 데이터를 보낸다는 보장이 없는 경우도 있다. 위 코드에 추가로 간단한 타이머 기능을 구현하면 아래와 같다. uint32_t count=10000; // 시스템 상황에 따라 최대값을 조정한다. /// 대기상태. count 값 감소하여 0이 되어도 while탈출하고 혹은 count값이 0이 되기전에 RX버퍼에 데이터 수신되어도 탈출... 2015. 9. 1.
ASCII 코드. ASCII printable code chart Binary Oct Dec Hex Glyph 010 0000 040 32 20 (space) 010 0001 041 33 21 ! 010 0010 042 34 22 " 010 0011 043 35 23 # 010 0100 044 36 24 $ 010 0101 045 37 25 % 010 0110 046 38 26 & 010 0111 047 39 27 ' 010 1000 050 40 28 ( 010 1001 051 41 29 ) 010 1010 052 42 2A * 010 1011 053 43 2B + 010 1100 054 44 2C , 010 1101 055 45 2D - 010 1110 056 46 2E . 010 1111 057 47 2F / 011 .. 2015. 9. 1.
배열 초기화. 2차원 배열 초기화 m x n 의 2차원 배열의 모든 요소(element) 를 지정된 값으로 초기화하려면 아래와 같다. 예. 2 x 3 (2행 3열) 정수형 배열이 있고, 아래 표 처럼 초기화 하고 싶다면, int Array[2][3] = {{1,2,3},{4,5,6}}; 로 초기화 하면 된다. 인덱스 0열 1열 2열 0행 1 2 3 1행 4 5 6 기타 규칙. 1. 초기화 값이 누락된 것은 0으로 초기화 됨. 예 : int Array[2][3] = {{1,2}}; 인덱스 0 1 2 0 1 2 0 1 0 0 0 2. 중괄호 1개만으로 초기화 가능. 예 : int Array[2][3] = {1,2,3,4,5,6}; // int Array[2][3] = {{1,2,3},{4,5,6}}; 와 동일함. 예 : .. 2015. 7. 7.
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.

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