본문 바로가기

VisualStudio.C++.C#   ( 290 )


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.
동적 메모리 할당. 변수,배열, new delete C++에서 new 이용하여 동적 메모리 할당하는 것 정리. 일반변수 동적 생성 및 제거. int* p; // int형의 포인터 변수선언. p = new int; // 동적생성함. *p = 234; // 변수사용예. . delete p; // 동적할당한 메모리 제거. p=NULL; // delete p; 는 메모리 공간을 제거했을뿐. 포인터 변수 p가 가리키는 주소는 남아있는 상태다. 이것까지 제거해둠. 1차원 배열 동적 생성 및 제거. - 250개의 정수형배열을 동적생성하는 예. int* p; // 포인터 변수 선언. p = new int[250]; // int형으로 배열크기 250 인 메모리 공간 할당했음. p[240] = 350; // 변수사용예. delete[] p; // 동적할당한 메모리 제거. .. 2015. 1. 17.
2차원 이상 배열의 메모리 배치순서. 2차원이상의 배열을에서 각 요소들이 실제 메모리에서 배치되는 순서. 메모리 배치 순서 : 배열 인덱스 뒤의 것부터 순차적으로 증가, 뒤의 배열인덱스가 최대수량이후 그 앞의 인덱스 증가, 예. 1차원 배열. array[N] 메모리 배치 : array[0], arry[1], ..., array[N] 2차원 배열. array[N][M] 메모리 배치 : array[0][0],array[0][1],...,array[0][M], array[1][0],array[1][1],...,array[1][M],..., array[N][M] N차원 배열도 동일. 예외. 동적 할당 한경우에는 연속배치되지 않음.- 주의할것. 2차원 이상의 배열을 동적할당한 경우에는 열 단위로 배열요소의 메모리 주소의 연속성이 끊김. 즉 array.. 2015. 1. 17.
STL std::function 기반 콜백함수 구현. 개요 통상 콜백함수 구현시 함수포인터 기반으로 구현하는 방식 (보기 -> http://igotit.tistory.com/212 ) 으로는 클래스 멤버함수를 콜백으로 등록하지 못하는 단점이 있다. STL (Standard Template Library) 에서 제공하는 std::function, std::bind 등을 사용하면 클래스 멤버함수도 콜백함수로 등록가능하므로 대단히 편리하다. STL 기반 콜백구현방법 아래 설명방식에서 "다른 곳", "이곳" 이란 표현은 함수포인터 기반 콜백구현방법 설명글 (http://igotit.tistory.com/212 )에서의 것과 동일한 것임. "이곳"에 있는 함수(클래스의 멤버함수도 가능하다.)를 다른곳(예. 다른 클래스 개체, DLL등 )에 전달하여 다른 곳에서 "이.. 2015. 1. 11.
함수포인터, 콜백(Callback) 함수포인터 1. int Function(int a) {... } ; 로 정의된 함수가 있다치자. 2. 위 1의 함수의 포인터(함수이름이 포인터임)를 받을 수 있는 함수포인터 변수 pFunc 선언하고 1의 함수포인터를 대입하는 방법 int (*pFunc)(int) = Function; 3. 2처럼 대입하고나서, pFunc(1); 이라고 호출하면 Function(1); 이 호출되는 것임. 4. 1의 함수를 다른 함수 "myfunc" 의 입력인자 로 전달하기 위한 다른 함수 "myfunc" 정의 방법. void myfunc( int (*pFunc)(int) ) { pFunc(1); } myfunc 호출시 상기1의 함수를 인자로 전달하는 법 : myfunc(Function); 5. 상기2와 같은 함수포인터 변수.. 2015. 1. 11.
스레드 생성 방법 및 다중스레드 사용위한 필수 옵션 셋팅. VC++ 1. VC++ 에서 스레드 생성 VC++ 에서 스레드를 생성하는 방법은 5가지 방식이 있다. 1. WIN32 API 스레드 생성 함수 : CreateThread 2. C run time library 에서의 스레드 생성 함수 : _beginthreadex, _beginthread - _beginthreadex 가 _beginthread보다 많이 사용됨. - _beginthreadex 와 _beginthread 함수 내부에서는 상기1의 CreateThread 함수가 사용되고 있음. 3. C++ 클래스 형식의 스레드 생성 : 스레드 함수를 포함하는 클래스 형식으로 제작. - 상기 2의 함수를 C++에서 클래스 내에 포함시키는 형식으로 만드는 것을 의미한다. 결국 2를 클래스에서 사용하는 것을 의미함. - 스.. 2015. 1. 10.
GetLastError 표현하기, 프로세스 죽이기.VC++ Retrieving the Last-Error Code When many system functions fail, they set the last-error code. If your application needs more details about an error, it can retrieve the last-error code using the GetLastError function and display a description of the error using the FormatMessage function. The following example includes an error-handling function that prints the error message and terminates the p.. 2015. 1. 10.
Visual Studio Community 2013 설치. 무료임. Visual Studio 2015 버전 나왔고 역시 무료임. Visual Studio 2015 무료설치 -> http://igotit.tistory.com/454 아래 2013 설치하지 말고 2015버전 설치함이 현재 시점(2016년 3월) 최고의 개발환경 구축됨. Visual Studio 무료버전은 express 버전말고도 community 버전도 있다. 기능제한 없는 Visual Studi 2013 Professional 버전에 해당한다. 2013 다운로드 받기. http://www.visualstudio.com/downloads/download-visual-studio-vs 위 주소에서 접속하여 보이는 아래그림의 붉은 박스 부분 클릭하여 설치한다. 설치 화면. 설치는 총 20분 정도 소요됨. 설치시.. 2015. 1. 7.
Visual Studio .net 프레임웍 프로젝트에서 64비트, 32비트, Any CPU 플랫폼 선택하여 빌드 가능하게 설정하기. 개요. 본 글은 Visual Studio 의 .net FrameWork 기반 프로젝트의 빌드 대상 플랫폼(운영체제의 비트수)에 64비트, ANY CPU 를 추가하는 설정법을 정리한다. Visual Studio의 기본 셋팅은 32비트로 되어있는데, 추가로 64비트, ANY CPU 선택할 수 있도록 한다. - Any CPU 란 만들어진 .net 응용프로그램이 실행되는 환경이 32비트든, 64비트든 모두 실행가능하게 만들어진다는 의미이다. - Any CPU 는 C#과 같은 .net 기반 프로젝트에서만 설정가능하며, native C++ 에서는 설정불가하다. native C++ 프로젝트에서는 64비트, 32비트 2개 중 1개만 가능하다 Visual Suudio 로 64비트, 32비트 프로그램만들기 위한 기본 개념.. 2014. 10. 26.
C# 윈폼(Windows Forms) 프로젝트 생성하기. 개요. 본 글은 Visual Studio 에서 C# WinForm(윈폼) 형식의 프로젝트 생성하는 과정 정리글이다. 윈폼형식으로 만들면 즉시 실행가능한 상태의 프로젝트가 생성된다. 코드 추가 되기전의 실행모습은 아래 그림과 같다. 기본 "윈도우 폼" 하나를 생성해준다. 1. C# 에서 Windows Forms 프로젝트 생성하기. 1. 프로젝트 새로 생성하기 클릭. Visual Studio 실행하여, 메뉴에서 파일 ->프로젝트 -> 새로만들기 -> 프로젝트... 클릭한다. (아래그림) 그럼 아래 그림처럼 "새 프로젝트" 창이 뜬다. 2. C# 의 윈폼 프로젝트 형식 선택. 아래 그림 왼쪽의 Visual C# -> Windows 를 클릭하면 여러가지 만들 수 있는 프로젝트 형식이 오른쪽에 보인다. 이 중에서.. 2014. 10. 26.
VC++ win32api EXE 프로젝트 생성하기. 개요. 본 글은 Visual Studio2010의 VC++ 에서 win32api 형식의 실행 프로젝트 생성하는 초기 과정 정리해둔다. "win32 API" 이해하기 -> http://igotit.tistory.com/145 Visual Studio 에서 win32api 형식으로 하여 기본코드 자동생성옵션으로 만들어진 프로젝트를 실행한 모습은 아래 그림이다. 기본 윈도우창까지는 생성된다. 1. VC++2010 에서 win32 api exe 프로젝트 생성하기. 1. 프로젝트 새로 생성하기 클릭.Visual Studio 실행하여, 메뉴에서 파일 ->프로젝트 -> 새로만들기 -> 프로젝트... 클릭한다. (아래그림) 그럼 아래 그림처럼 "새 프로젝트" 창이 뜬다. 2. Win32 프로젝트 형식 선택.아래 그림 .. 2014. 10. 26.
Visual Studio 업데이트는 Windows Update 사이트에서 서비스 중임 Visual studio 2010 의 업데이트는 "윈도우 업데이트" 사이트에서 통합되어 제공된다. PC에 Visual Studio 가 설치 되어있다면 윈도우업데이트에서 업데이트 할 것이 자동으로 보이게 된다. 혹시 "윈도우업데이트" 기능을 꺼두거나 하면 중요 업데이트 누락될 수 있기에 주의한다. 아래그림은 "Windows Update" 사이트에서 "Visual Studio 2010 서비스 팩 1" 업데이트 하는 예. ///150. 2014. 10. 26.
VC++ win32api DLL 프로젝트 생성하기. 개요. 본 글은 Visual Studio2010의 VC++ 에서 win32api 형식의 dll 프로젝트 생성하는 초기 과정 정리해둔다. "win32 API" 이해하기 -> http://igotit.tistory.com/145 1. VC++2010 에서 win32 api DLL 프로젝트 생성하기. 1. 프로젝트 새로 생성하기 클릭. Visual Studio 실행하여, 메뉴에서 파일 ->프로젝트 -> 새로만들기 -> 프로젝트... 클릭한다. (아래그림) "새 프로젝트" 창이 뜬다. (아래그림) 2. Win32 프로젝트 형식 선택. 아래 그림 왼쪽의 Visual C++ -> win32 클릭하고 프로젝트 타입을 "Win32 프로젝트" 를 선택한다. 그리고 이름 부분에 프로젝트 명칭을 임의로 기록하고, 확인 클릭.. 2014. 10. 26.


 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5