728x90
SMALL

C++/MFC 10

[MFC] 채팅 프로그램 - 다중접속(멀티) (3/3)

- 설명 - ① 1, 2번에서 설명한 Server와 Client를 수정 ② 설정에 따라 서버만 모든 클라이언트와 통신 가능하거나, 클라이언트도 같은 클라이언트끼리 통신 가능 1. Client : 다이얼로그 디자인 및 ID ① IDC_EDIT_USERID : 클라이언트가 몇 번째 사용자인지 알려줌(숫자는 0번부터 시작함) 2. Client(SocCom.h) : 사용자 정의 메시지 및 사용자 지정 변수 추가 ① SOC_CLIENT_CONNECT : 클라이언트(사용자)가 접속 ② SOC_CLIENT_DISCONNECT : 클라이언트 종료 시 서버로 보낼 메세지 ③ int m_index : 채팅 클라이언트 번호 SocCom.h 소스 보기 더보기 #pragma once // CSocCom 명령 대상 // 통신용 ..

C++/MFC 2021.08.26

[MFC] 채팅 프로그램 - 클라이언트 (2/3)

- 설명 - 프로젝트 명 : ChatClient(대화 상자) ① CSocket 클래스 이용 : 동기식(블로킹)으로 동작 ② 서버 클라이언트 1:1 통신 ③ 해당 글은 클라이언트 채팅 프로그램 만드는 법 설명 1. MFC 애플리케이션 옵션 설정 ① 애플리케이션 종류 : 대화 상자 ② [고급 기능] → [Windows 소켓] 활성화 2. 다이얼로그 디자인 및 ID 3. CSocket 기반의 CSocCom MFC 클래스 생성 ① [프로젝트] → [클래스 마법사] → [클래스 추가] 버튼 옆의 ▼ 버튼 → [MFC 클래스] 선택 → 클래스 생성 ② CSocCom : 통신용 소켓 4. CSocCom MFC 클래스에 가상 함수 추가 ① OnReceive(CSocCom) : 데이터가 도착했다는 것을 알려줌 5. CS..

C++/MFC 2021.08.26

[MFC] 채팅 프로그램 - 서버 (1/3)

- 설명 - 프로젝트 명 : ChatServer(대화 상자) ① CSocket 클래스 이용 : 동기식(블로킹)으로 동작 ② 서버 클라이언트 1:1 통신 ③ 해당 글은 서버용 채팅 프로그램 만드는 법 설명 1. MFC 애플리케이션 옵션 설정 ① 애플리케이션 종류 : 대화 상자 ② [고급 기능] → [Windows 소켓] 활성화 2. 다이얼로그 디자인 및 ID 3. CSocket 기반의 CSocServer, CSocCom MFC 클래스 생성 ① [프로젝트] → [클래스 마법사] → [클래스 추가] 버튼 옆의 ▼ 버튼 → [MFC 클래스] 선택 → 클래스 생성 ② CSocServer : 서버용 소켓 ③ CSocCom : 통신용 소켓 4. CSocServer, CSocCom MFC 클래스에 가상 함수 추가 ① ..

C++/MFC 2021.08.25

[MFC] 그림 그리기(그림판)

- 설명 - 프로젝트 명 : Paint(단일 문서) ① 자유곡선, 직선, 사각형, 타원을 선택해서 그리기 가능 ② 선 색 및 도형 채우기 색 설정 가능 ③ 툴바와 메뉴바 이용 1. MFC 애플리케이션 옵션 설정 ① 애플리케이션 종류 : 단일 문서 ② 프로젝트 스타일 : MFC standard ③ 비주얼 스타일 및 색 : Windows Native/Default 2. 메뉴바 재설정 및 툴바 적용 ① 해당 프로젝트 "res" 폴더에 툴바(Toolbar.bmp) 파일 변경 ② 기존 메뉴바를 삭제 및 재생성(ID : IDR_MAINFRAME) 3. 툴바 적용 ① 각 툴바 아이콘 ID 변경 ② Resource.h 및 Paint.rc 코드 열어서 ID 코드값 부분 수정하기 툴바 파일 더보기 4. PaintView...

C++/MFC 2021.08.24

[MFC] 메모장(에디터 프로그램)

- 설명 - 프로젝트 명 : Notepad(단일 문서) ① 문자와 커서(캐럿)를 직접 view에 그려주는 방식 ② Document-View 구조 ③ Document의 Serialize()를 이용해 입력 내용을 저장 또는 열기 1. NotepadDoc.h 사용자 지정 변수 CString strDB[256] : 입력하는 문자열을 저장할 배열(256줄) -> 256줄 표시 가능 long pline : 현재 줄 표시 2. NotepadDoc.cpp ① 변수 초기화 ② Serialize() : 내용 저장 및 열기. 줄의 개수와 문자열을 파일로 저장. Serialize() 소스 보기 더보기 // CNotepadDoc serialization // 줄의 개수와 문자열을 파일로 저장 void CNotepadDoc::S..

C++/MFC 2021.08.24

[MFC] 파일 및 폴더 검색기

- 설명 - 프로젝트 명 : SearchFile(대화 상자 기반) ① 파일 및 폴더의 문자열을 비교하여 검색 ② 하단 리스트 박스에 조건에 부합하는 파일 및 폴더의 정보가 나타남 ③ 리스트 박스 아래 현재 검색 중인 폴더 이름이 나타남 ④ "하위 폴더 검색" 체크 시 하위 폴더 검색 진행 1. 다이얼로그 디자인 및 ID 2. CSearchFileDlg 클래스 멤버 변수 목록 사용자 지정 변수 BOOL m_bStop : 검색 도중 중단 버튼 역활 CString m_strToken : 검색 시 활용할 문자열 조건 CImageList m_img : 아이콘 3. 클래스 마법사를 이용하여 클래스 추가 CFileFindEx : 파일 정보를 CString 형으로 변환 CListCtrlEx : 리스트 컨트롤에 아이콘 ..

C++/MFC 2021.08.23

[MFC] C, C++ 컴파일러 오류 C4996 해결방법

에러코드에 대한 설명을 해석해보면, sprintf_s를 사용하거나 _CRT_SECURE_NO_WARNINGS를 사용해달라고 하는데 다음과 같이 간단하게 선언만 해주면 문제 없이 실행되는 것을 확인 할 수 있다. 관련자료 https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l?view=msvc-160 sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l 자세한 정보: sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l docs.microsoft.com

C++/MFC 2021.08.20

[MFC] C++ 컴파일러 오류 C2664 두가지 해결방법

1. _T("") 매크로 혹은 L"" 사용 다음과 같은 C2664에러는 다음과 같은 방법으로 수정하면 정상적으로 컴파일이 수행된다. 단, 모든 문자열 구문에 삽입해야 한다는 단점이 존재한다. ※ 관련 자료 https://docs.microsoft.com/ko-kr/cpp/text/unicode-programming-summary?view=msvc-160 유니코드 프로그래밍 요약 자세한 정보: 유니코드 프로그래밍 요약 docs.microsoft.com 2. 속성 변경(멀티 바이트 문자 집합 사용) 위 방법은 모든 문자열 구문에 삽입해야 한다는 단점이 있으므로, 다음과 같이 프로젝트의 속성 변경을 통해 번거로운 작업을 없앨 수 있다. 1. 설루션 탐색기 or 상단 프로젝트에 있는 속성 창을 활성화 2. 고급..

C++/MFC 2021.08.20

[MFC] Tab Control(탭 컨트롤) 사용방법

1. 도구상자에서 Tab Control을 선택하고 다이얼로그에 넣은 후 ID를 정해준다. 2. 리소스 뷰에서 각 탭의 화면으로 사용될 다이얼로그를 추가한다. 3. 이렇게 생성된 다이얼로그의 ID를 변경해주고, 스타일을 Popup→Child, 시스템메뉴 True→False, 제목 표시줄True→False로 변경해준다. 4. 다이얼로그의 속성을 수정했다면 클래스추가를 통해 해당 다이얼로그의 클래스(Class)를 추가해준다. 5. 2~4번까지의 방법을 통해 탭에서 사용할 다이얼로그를 추가해준다. 본 예제에서는 4개를 사용할 예정이므로 4개를 추가한다. 6. 다시 Tab Control이 생성된 다이얼로그로 돌아가서 클래스 마법사창을 띄운다. 7. 클래스 마법사에서 멤버 변수 탭으로 이동한 후 만든 Tab Con..

C++/MFC 2021.06.21

[MFC]Visual Studio 2019에서 .exe 파일 만드는 방법 및 생성위치(배포용 실행파일 생성)

MFC에서 실행파일(. exe)을 만드는 방법은 간단하다. 솔루션 탐색기에서 프로젝트 위에 마우스를 올린 후 오른쪽 버튼을 클릭한 후 속성을 누른다. 속성 페이지가 열리면 구성 속성에서 고급 → MFC 사용에서 정적라이브러리에서 MFC 사용으로 변경한다. 속성 설정 완료 후 Ctrl + F5를 누르면 코드가 실행되면서 자동으로 실행파일(. exe)이 생성된다(컴파일을 해도 상관없다). 오류가 없다면 다음과 같이 GUI 응용프로그램이 실행되고 실행파일(.exe)이 어디에 생성됐는지 나온다. 이제 실행파일(.exe)생성 위치로 가서 파일을 배포하거나 실행시키면 된다. 만약 정적라이브러리에서 MFC 사용을 선택 안하고 생성된 실행파일(. exe)을 배포하게 되면. lik나. pdb파일이 없어 정상적으로 실행되..

C++/MFC 2021.06.21
728x90
LIST