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

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

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

소켓 프로그래밍의 전반적인 개념은 이 블로그를 참고해주세요. 오늘은 WinSock2를 이용해서 소켓 프로그래밍을 해보겠습니다.소켓 프로그래밍에 대한 개념은 위 링크를 보고 하시길 바랍니다. 찾아본 블로그 중에 제일 정리가 잘 되어 있습니다. 소켓 프로그래밍 방식에는 동기, 비동기 방식이 있습니다.동기(Synchronous) 방식은 요청과 결과가 동기된 방식이고, 비동기(Asynchronous) 방식은 요청과 결과가 동기되지 않은 방식입니다. 예를 들어 콜센터에서 일하는 직원으로 설명하겠습니다. 콜센터의 직원에게 … Read more

[WinAPI] HCURSOR 사용법

오늘은 마우스 커서를 바꾸는 방법을 알아보겠습니다. 을 알아보겠습니다. 우선 그전에 아래 Cursor.zip 파일을 다운받아서 압축 해제 후 res 폴더에 넣어주세요. 그리고 리소스 뷰에서 3개의 커서 파일을 추가해줍니다. 각 리소스의 아이디는 색에 맞게 IDC_CURSOR_RED, IDC_CURSOR_GREEN, IDC_CURSOR_BLUE로설정합니다. 1. 대화상자 내에서만 커서 바꾸는 법아래와 같이 버튼 하나를 만든 후 더블클릭으로 이벤트 처리 함수를 만들어줍니다. 헤더파일에 대화상자 내에 표시할 HCURSOR m_hCursorIn, 그리고 BOOL m_bMouseSet을 선언해 줍니다. OnInitDialog에 아래와 같이 … Read more

[WinAPI] CImage를 이용하여 Bitmap 이미지 표시

안녕하세요 오늘은 CImage를 이용하여 BITMAP 이미지를 대화상자에 표시하도록 해보겠습니다. 비트맵 이미지를 표시하는 방법은 위 두가지 방법 모두 알아보겠습니다. 그전에 아래와 같이 Static Control을 추가하여 ID를 IDC_STATIC_DISP로 설정하고 컨트롤 변수로 m_stDisp로 설정합니다. 저는 강아지 이미지로 해보겠습니다. 1. 이미지 파일을 읽어서 표시 확인 버튼을 더블 클릭하신 후 아래와 같이 코딩합니다. 저같은 경우 bmp 파일을 로드할때 상대 경로를 입력했지만 아래와 … Read more

[WinAPI] HDC 2 – HPEN, HBRUSH 사용하기

이전 글을 안보신 분들은 꼭 봐주세요. 오늘은 저번 글에 이어서, HPEN과 HBRUSH를 이용하여 도형의 선의 색, 굵기, 배경색을 변경해보도록 하겠습니다.도형의 선과 굵기, 색상을 변경하기 위해선 HEPN을 사용해야 합니다. 빨간색의 굵기가 3인 펜을 생성하기 위해 아래와 같이 HPEN을 생성 합니다. 이 펜을 DC에 사용하기 위해 아래와 같이 선택합니다. 펜을 다 사용했으면 기존의 HPEN을 선택 후 지워줍니다. 위의 과정을 … Read more

[WinAPI] HDC 1 – 사각형, 원, 다각형, 선 그리기

오늘은 HDC를 이용하여 사각형, 원, 다각형을 그려보도록 하겠습니다. 만들어보기 전에 윈도우에서 좌표 계산 방법은 아래와 같습니다.x좌표는 왼쪽에서 오른쪽으로 숫자가 증가하고,y좌표는 일반적인 2차원 좌표와 반대로 위에서 아래로 숫자가 증가하는 방식 입니다. 좌표를 유의해 주시고, 이제 만들어 보겠습니다. 프로젝트를 하나 생성해 주시고 아래 그림과 같이 Static Control을 만들어서 속성을 설정합니다. 그리고 확인 버튼을 더블클릭 한 후 아래와 같이 구현합니다. 위 … Read more

[WinAPI] CStdioFile 을 이용한 text 만들기, 쓰기, 읽기, 닫기

CStdioFile 클래스를 이용하여 text 만들기, 쓰기, 읽기, 닫기를 알아보겠습니다. 아래 그림과 같이 버튼 4개를 만들어 주시고 Resource ID를 입력해주세요. 각각의 버튼들은 더블 클릭을 만들어 이벤트 처리 함수를 생성해주세요. 그리고 헤더파일에 아래와 같이 CStdioFile 멤버 변수를 선언합니다. 만들기 버튼에 아래와 같이 코딩해줍니다. 쓰기 버튼에 아래와 같이 코딩해줍니다. 읽기 버튼에 아래와 같이 코딩해 줍니다.  닫기 버튼에 아래와 … Read more

[MFC] 응용프로그램 아이콘 설정

오늘은 응용프로그램 아이콘을 설정하는 법을 알아보도록 하겠습니다. 이 사이트에서 적당한 아이콘 파일을 다운받아줍니다. 다운받은 .ico 파일을 프로젝트 폴더 -> res 폴더 위치에 복사해주시길 바랍니다. 그리고 아래와 같이 리소스 뷰 -> 리소스 추가를 하시고 방금 복사한 파일을 선택 해주시길 바랍니다. 그러면 아래 그림과 같이 IDI_ICON1이 추가 될 겁니다. 대화상자 클래스 생성자를 보시면 아이콘을 읽어오는 곳이 있는데 그곳에 위에 … Read more

[MFC] 대화상자 숨기기, OnWindowPosChanging 사용

개발을 하다 보면 사용자에게 UI를 보여주지 않고 백그라운드로 실행 해야할 프로그램을 만들어야 할 때가 있습니다.그럼 보통 ShowWindow( SW_HIDE )를 사용하거나 CreateEx로 윈도우 생성 시 투명 속성을 줄 수 있습니다.MFC의 경우 SW_HIDE를 하는데 중요한건 OnInitDialog에서 해도 대화상자가 보인다는 겁니다. 아래 그림과 같이 WM_WINDOWPOSCHANGING을 받는 OnWindowPosChanging을 생성합니다. 그리고 함수 내부에 아래와 같이 코딩합니다. 이 상태로 빌드 후 … Read more

[MFC] Static DLL(정적 DLL) 만들기

정적 라이브러리와 동적 라이브러리에 대한 설명은 다른 링크를 참고해주세요. 확장 DLL 만드는법에 대한 설명은 여기를 참조해주세요. 정적 DLL을 만들어 보겠습니다. 새 프로젝트 -> MFC -> MFC DLL을 선택하셔서 프로젝트를 생성해 줍니다. “MFC를 정적으로 링크한 기본 DLL”을 선택하시고 마침을 눌러줍니다. 그러면 아래와 같이 프로젝트 하나 생성됩니다. CMFCLibrary1App에 간단한 더하기 함수 int SumXY(int iX, int iY); 를 추가해 줍니다. MFCLibrary1App.h에 … Read more