[Visual C++] DB 연동 하기 – 3 (CDatabase, CRecordset)

저번 글까지 MariaDB를 설치하고, ODBC를 설치했습니다.그리고 DATABASE test_db를 만들었고 TABLE test_table을 만들었구요. 아래 이미지를 보시면 테이블 구조를 보실 수 있습니다. 오늘은 DB 연동하기, 코딩쪽을 해보겠습니다.MFC 프로젝트 하나 생성해 주시고, 아래와 같이 버튼 4개를 생성하시고 더블 클릭을 눌러 이벤트 처리 함수까지 만들어주세요. 그리고 대화상자 헤더에 아래 헤더파일을 include 하고 . CDatabase와 CRecordset 멤버변수를 선언합니다. 그리고 OnInitDialog에 … Read more

[Visual C++] DB 연동 하기 – 2 (MariaDB, ODBC 설정)

저번 포스팅에 이어서 써보겠습니다. 우선 명령 프롬프트를 실행해서 “MariaDB 설치 된 위치\bin” 으로 이동합니다.그리고 ID, PASS를 입력하여 접속 합니다. 그리고 아래 구문을 입력하여 test_db이름을 가진 database를 만들어 줍니다. 그리고 아래 구문을 입력하여 test_db에 접속해봅니다. 이 상태에서 아래 구문을 입력하시면 테이블이 생성 됩니다. 아래 구문을 입력하시면 테이블의 정보를 볼 수 있습니다. 우선 간단히 MariaDB에서는 이정도 까지만 하겠습니다.DB 만들고 … Read more

[Visual C++] DB 연동 하기 – 1 (MariaDB, ODBC 설치)

안녕하세요. 이번 글에서는 DB 연동 하기 중 MariaDB 설치와 ODBC 설치를 해보겠습니다. 윈도우에서 DB를 연동하는 것은 코딩보다 설치하는 작업이 더 많습니다.그러니 잘 보시고 따라하세요. 우선 여기에서 MariaDB를 다운 받습니다. 2019.11.24 현재는 10.4.10이 최신이네요 10.4.10을 보시면 되게 많은 버전이 있는데 본인 PC에 맞는 파일을 다운 받으시면 됩니다. 제 PC는 Windows 64bit 이여서 mariadb-10.4.10-winx64.msi를 다운받았습니다. 그리고 MariaDB Connector를 … Read more

[WinAPI] WaitForSingleObject, 쓰레드 동기화

Windows 운영체제에 의해 생성되는 커널 오브젝트의 상태는 두가지로 결정이 됩니다.Non-Signal과 Signal 상태가 있는데 프로세스가 생성 되면 Non-Signal이였다가 프로세스가 종료 되면 Signal로 변하게 되는 것입니다. 윈도우에서는 여러가지 핸들이 존재하는데 이를 이용하여 핸들의 커널 오브젝트 상태를 보고, 프로세스가 실행 중인지, 종료 중인지 판단 할 수 있습니다. 커널 오브젝트 상태를 확인하는 함수는 WaitForSingleObject이며 사용법은 아래와 같습니다. 프로젝트 하나 생성해 … Read more

[MFC] 대화상자 배경, 버튼 이미지 바꾸기

오늘은 Bitmap을 읽어와서 대화상자와 버튼을 바꿔보도록 하겠습니다. 우선 아래 비트맵 리소스를 다운받아서 리소스뷰에 추가해주세요. 그리고 비트맵 리소스의 아이디를 아래와 같이 설정합니다. 대화상자의 색상을 바꾸기 위해 아래 비트맵 리소스를 다운받아주세요. 우선 헤더파일에 아래와 같이 두개의 변수를 선언합니다. OnInitDialog에서 아래와 같이 리소스를 읽어옵니다. OnPaint 함수를 아래와 같이 코딩합니다. Bitmap 이미지를 대화상자 크기에 맞춰 표시한 겁니다. 위 코드까지 … Read more

[WinAPI] HDC 3 – 더블 버퍼링(Double Buffering)

안녕하세요 오늘은 더블버퍼링에 대해 알아보겠습니다. 더블 버퍼링을 사용하는 이유와 개념은 이 사이트에서 설명을 잘 해놓았으니 참고해주시길 바랍니다. 더블버퍼링은 결국 화면에 실시간으로 그려지는 과정을 보는게 아니라메모리에 그려진 결과물을 통으로 copy하여 결과물만 보는 겁니다.그려야할 오브젝트가 많거나, 비트맵 이미지를 사용하는 경우 작업에 시간이 걸려 화면이 깜빡이므로 더블 버퍼링을 이용하는 경우가 많습니다. 이 글에서는 더블 버퍼링을 이용하여, 간단히 사각형을 그려보도록 하겠습니다. MFC … Read more

[WinAPI] 특정 색상 투명하게 처리(LWA_COLORKEY)

오늘은 대화상자의 특정 색을 투명하게 처리하겠습니다. 결론만 말씀 드리면 제일 핵심적인 코드는 아래와 같습니다. 이 속성을 설정 하면 RGB(0, 255, 0)은 표시하지 않고 투명하게 처리 됩니다.저는 이번 글에서 위 코드를 이용하여 게임 캐릭터가 걸어다니는 모습을 어떻게 표시하는지 알아보고자 합니다.일반적인 도트 게임에서는 게임 캐릭터의 움직임이 리소스로 모두 그려져 있습니다.아래와 같이 게임 캐릭터가 있다고 봅시다. 캐릭터가 정지해 … Read more

[WinAPI] Clipboard, 클립보드

오늘은 클립보드에 대해서 배워보겠습니다. 클립보드에대한 개념과 설명은 구글에서 찾아서 공부하세요. 이 글에서는 int형 변수의 값을 클립보드로 복사하고, 클립보드에서 다시 가져와서 표시하는 것만 해보겠습니다. 프로젝트를 하나 만들어 아래와 같이 Edit Control과 Static Control을 만들어 줍니다. 리소스의 컨트롤 변수를 아래와 같이 만들어 줍니다. Copy Clipboard 버튼을 더블클릭해서 아래와 같이 코딩합니다. Paste 버튼을 더블클릭해서 아래와 같이 코딩합니다. 실행 … Read more

[WinAPI] (파일첨부)WinSock2를 이용한 소켓 예제 ( 비동기 방식 – 클라이언트 )

서버를 만드는 방식은 여기를 참고해주세요 오늘은 클라이언트를 만들어 보도록 하겠습니다. MFC 프로젝트를 아래와 같이 하나 추가해 주세요. stdafx.h 맨 위에 아래와 같이 define을 해줍니다. 대화상자 헤더파일에 아래와 같이 SOCKET 변수를 추가합니다. 리소스 뷰에서 연결, 보내기, 종료 버튼을 생성 합니다. ( 더블 클릭하여 이벤트 처리 함수까지 생성하게 합니다. ) 연결 버튼 이벤트 함수에 아래와 같이 코딩합니다. 클라이언트가 접속을 완료하고 패킷을 … Read more

[WinAPI] WinSock2를 이용한 소켓 예제 ( 비동기 방식 – 서버 )

소켓 프로그래밍의 전반적인 개념은 이 블로그를 참고해주세요.동기 방식 소켓 프로그래밍은 여기를 참고해주시길 바랍니다. 오늘은 WinSock2를 이용해서 비동기 소켓 프로그래밍을 해보겠습니다. 비동기 방식은 객체 지향 프로그램에 적합하므로 이번에는 MFC로 만들어 보겠습니다. 서버를 만들기 위해 아래와 같이 MFC 프로젝트를 추가합니다. stdafx.h 맨 위에 아래와 같이 define을 해줍니다. 대화상자 헤더파일에 아래와 같이 SOCKET 변수를 추가합니다. 리소스 뷰에서 생성, 보내기, 종료 버튼을 생성 합니다. ( … Read more