[Visual C++] 서울시 열린데이터 광장 Open API 이용하기 – 3. json 파싱 (jsoncpp)

오늘은 저번 글에 이어서 json을 파싱하는 법을 알아보겠습니다. 우선 json 파싱을 위해 아래 파일을 다운로드 합니다. 압축 해제 후에 파일들을 어제 만들었던 프로젝트에 추가합니다. jsoncpp는 깃허브에서도 다운 받을수 있습니다근데 이게 잘 안되서 제가 찾은 것중에 MFC에서 되게 제가 일부 수정했습니다. 아무튼 프로젝트 추가하시고 아래와 같이 헤더파일을 include 합니다. 어제 코드에 이어서 아래와 같이 입력합니다. 이 … Read more

[Visual C++] 서울시 열린데이터 광장 Open API 이용하기 – 2. json, xml 받아오기(CInternetSession, HttpSendRequest)

이 글을 보기 전에 이전 글 먼저 봐주시기 바랍니다. 저번 글에 이어서 오늘은 json과 xml을 받아오는 방법을 알아보겠습니다.총 두 가지 방법이 있는데 두 가지 방법 다 알아보겠습니다. MFC 프로젝트를 하나 생성해 주시고  아래와 같이 컨트롤을 배치해 놓습니다. URL 우측 에디트 박스에 아래 그림과 같이 URL을 입력할 예정입니다. 빨간색은 제 인증키입니다. 1. CInternetSession 첫 번째 방법은 CInternetSession을 … Read more

[Visual C++] 서울시 열린데이터 광장 Open API 이용하기 – 1. 인증키 신청

안녕하세요. 이번에는 실제로 오픈되어있는 데이터를 사용하여 MFC에 표시하는 방법을 사용해보겠습니다.예전에 제가 졸업할 때 즈음 서울시에서 복지 차원에서 서울시의 데이터를 공개하였습니다.서울시에서 csv 파일, json, xml형식으로 데이터를 제공하는데 생각보다 엄청나게 많은 데이터를 제공합니다. 여기를 클릭 하시면 열린 데이터 광장에 접속됩니다. 기본적으로 회원가입을 해줍니다. 아래 그림같이 상단의 공공데이터를 클릭합니다. 그러면 되게 많은 데이터가 나오는데 좌측 메뉴 중 OpenAPI라고 … Read more

[WinAPI] MFC, .wav 파일 재생하기

오늘은 간단하게 .wav 재생하는 방법을 알아보겠습니다.우선 여기에서 test.wav를 다운받아 줍니다. 아래와 같이 라이브러리와 헤더파일을 코딩합니다. 재생, 반복재생, 정지 코드는 아래와 같습니다.

[WinAPI] 파일 복사, 이동, 삭제

오늘은 간단하게 파일 복사, 이동, 삭제에 대해 알아보겠습니다. 1. 복사 복사는 CopyFile을 사용하시면 됩니다. 2. 이동 파일 이동은 MoveFile을 사용하시면 됩니다. 3. 삭제 파일 삭제는 DeleteFile을 사용하시면 됩니다. 4. 권한 추가적으로 CopyFile, MoveFile, DeleteFile이 FAIL을 반환하면 GetLastError() 함수로 확인 가능합니다. 보통 권한이 없어 5번 에러가 많이 나타나는데 그럴 경우 “프로젝트 속성 -> 링커 -> 매니페스트 … Read more

[WinAPI] 디렉토리(폴더) 생성, CreateDirectory

Windows 에서 폴더 생성을 하는 코드를 만드려면 총 3개 함수를 알아야 합니다. 첫번쨰는 CreateDirectory 하지만 해당 함수는 만드려는 경로 중간에 폴더가 없다면 생성 되지 않습니다. 그래서 토큰방식으로 문자열을 분석해서 폴더 위치마다 다음 폴더가 있는지 알아야 합니다. 두번째 AbstractSubString 세번째 GetFileAttributes, 파일 존재 여부를 확인한다. INVALID_FILE_ATTRIBUTES를 반환하면 폴더가 없습니다. 전체 코드는 아래와 같습니다.

[WinAPI] 외부 프로그램&파일 실행하기, ShellExecute 사용 예제

오늘은 ShellExecute 사용법을 알아보겠습니다. 함수 원형은 아래와 같습니다. 1. open – 응용프로그램 열기 ShellExecute에 카카오톡.exe가 존재하는 경로를 아래와 같이 입력하면 프로그램이 실행 됩니다. – 폴더 열기 open은 파일탐색기(explorer.exe)에 경로를 지정하여 실행 할 수 있습니다. 아래와 같이 코딩하면 해당 폴더를 선택할 수 있습니다. – 인터넷 익스플로러 실행 open으로 특정 주소의 웹 페이지를 열 수 있습니다. 아래와 … Read more

[WinAPI] GetDesktopWindow 사용하여 바탕화면 캡쳐하기

오늘은 바탕화면 전체를 캡쳐하는 방법에 대해 설명하겠습니다.HDC를 한번도 사용해본적이 없다면 여기를 한번 봐주시면 감사하겠습니다. 바탕화면을 핸들을 얻기 위한 함수는 GetDesktopWindow입니다. 프로젝트를 생성 하신 후 아래와 같이 스태틱과 버튼 컨트롤을 배치합니다. 스태틱 컨트롤 변수를 헤더파일에 아래와 같이 선언합니다. 확인 버튼을 더블 클릭하여서 GetDesktopWindow 함수를 사용하여 핸들을 얻습니다. 핸들을 얻고 크기를 얻은 다음 바탕 화면의 HDC를 만들어 줍니다. … Read more

[WinAPI] CreateEvent, SetEvent, ResetEvent, WaitForSingleObject 사용 예제

안녕하세요, 오늘은 이벤트에 대해 알아보도록 하겠습니다. WaitForSingleObject 사용법은 여기를 참고해주세요. 1. 이벤트 생성 사용 예는 아래와 같습니다. 2번째 인자가 TRUE면 SetEvent함수 호출 시 계속 Signal 상태가 되고 FALSE이면 한번만 Signal 상태로 됩니다.인자의 명칭을 보면 알 수 있듯이 수동으로 Reset하냐 마냐 결정하는 겁니다. 3번째 인자가 TRUE면 초기 상태가 Signal이 되고 FALSE이면 Non-Signal 입니다. 이것도 인자 명칭보면 초기 상태라고 … Read more

[WinAPI] SetWindowPos

오늘은 SetWindowPos에 대해 알아보겠습니다. SetWindowPos는 HWND의 (X, Y) 좌표, 가로 세로 길이, 그리고 Z-Order를 변경할 수 있는 함수 입니다.함수 원형은 아래와 같습니다. HWND hWndInsertAfter에는 핸들 혹은 아래 값이 올 수 있습니다. 사용 값 의미 HWND_BOTTOM (HWND) 1 Z 순서의 맨 아래에 창을 놓습니다. 는 IF HWND의 매개 변수는 최상위 창을 식별, 창은 맨 위의 지위를 잃고 다른 모든 창 하단에 배치됩니다. HWND_NOTOPMOST (HWND) -2 맨 위가 아닌 모든 창 위에 (즉, 맨 위에있는 모든 창 뒤에) 창을 놓습니다. 윈도우가 이미 최상단이 아닌 윈도우 인 경우에는이 플래그가 적용되지 않습니다. HWND_TOP (HWND) 0 Z 순서의 맨 위에 창을 놓습니다. HWND_TOPMOST (HWND) -1 맨 위가 아닌 모든 창 위에 창을 놓습니다. 창은 비활성화되어 있어도 최상위 위치를 유지합니다. 마지막 인자 UINT uFlags에는 아래 값이 올 수 있습니다.(대표적인 것들만 … Read more