본문 바로가기

Tips

MFC 채팅 클라이언트 만들기(윈도우 소켓프로그래밍)-15 2016년 8월 25일 15번째 강좌 정리입니다. 오늘로써 채팅방 만들기-서버, 클라이언트 끝입니다.저번 시간에 만들던 server 마무리하고 바로 이어서 client 만들도록 하겠습니다.( 코드를 삽입한 스크립트가 크롬 환경에서는 이상하게 보이는 것을 확인했습니다.창을 확대하거나, 익스프롤러를 이용하면 더 편하게 볼 수 있습니다. ) Server 마무리Send( ) 부분서버에서 데이터를 수신했을 때, 채팅창에 접속한 모든 클라이언트에게 데이터를 보여 줄 수 있어야 합니다.위의 내용을 SendFrameData라는 함수를 새로 정의해 만들겠습니다.1234567891011121314void CExamServerDlg::SendFrameData(SOCKET ah_socket, char a_message_id,.. 더보기
MFC 채팅서버만들기(윈도우 소켓프로그래밍)-14 2016년 8월 22일 14번째 강좌 정리입니다. 오늘 정리할 내용은 채팅방 만들기-서버 Part 입니다.tipssoft에서 소켓은 무엇인지, 그 역사는 어떤지 자세히 정리된 글의 링크로 대체하겠습니다.http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=516 채팅방은 peer-to-peer 모델이 아닌 server-client 모델을 이용할 것입니다.그 이유는 다수의 client가 한 서버를 통해 채팅할 수 있도록 하기 위함입니다. 소켓프로그래밍 기본 세팅평소와 동일하게 대화상자 기반 MFC 프로젝트를 생성합니다.ListBox를 추가해 ID를 IDC_EVENT_LIST라고 설정하고 변수추가를 통해 private영역에 m_event_list를 추.. 더보기
MFC 짝맞추기 게임 -12 2016년 8월 11일 12번째 강좌 정리입니다.오늘 실습 내용은 짝 맞추기 게임입니다.기본적인 짝 맞추기 게임에, 3회의 모든 카드를 다시 보여주는 힌트 기능, 시간제한과 카드를 맞춤에 따라 시간을 좀 더 주기도 하고, 짝이 안맞으면 시간이 감소하는 패널티 기능도 추가된 게임입니다. 1. 이미지 저장 & 카드배열 늘 하시던대로 대화상자 기반으로 프로젝트를 생성하신다음,~Dlg.h 파일에 private 영역을 새로 정의하여 다음과 같이 적습니다.카드 이미지는 19개로 CImage 배열을 선언하여 비트맵 이미지를 넣을 것입니다. 123456789101112BOOL CImageGameDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); SetIcon(m_hIcon, TRUE).. 더보기
MFC 대화상자&버튼만들기-11(2) 2016년 8월 8일 11번째 강좌 정리 두번째 입니다.이번 포스팅에서는 MFC프로그램에 대화상자와 버튼을 다루는 것이 주 내용입니다. 도구상자 Control강좌정리글 10에서 소개한 방법대로 대화상자 기반으로 프로젝트를 생성합니다.이제 옆에서 도구 상자를 클릭해 Edit Control을 Drag and drop합니다. 해당 박스를 클릭하여 마우스 우측 버튼으로 속성에 들어가, ID에 해당하는 부분을 IDC_MY_EDIT로 수정합니다. 같은 방식으로 2개의 Edit Control 박스를 추가해 중간에는 IDC_MY_TEST, 오른쪽에는 IDC_MY_RESULT로 ID를 수정합니다. 그리고 도구상자에서 Button을 drag and drop하여 속성중 캡션에서 button1을 '합산'으로 수정합니다.ID는.. 더보기
MFC 오목(하) +알고리즘 추가-11 2016년 8월 8일 11번째 강좌 정리 입니다.저번 시간에 이어서, 오목 프로그램을 진행하겠습니다.완벽한 오목 프로그램을 위해서 추가해야할 부분은 많지만, 세 가지 수정사항만 하고 끝내겠습니다.세 가지 수정 사항은 다음과 같습니다.1. 바둑알이 바둑판 밖에서 찍히는 문제2. 놓았던 자리에 또 바둑알이 놓이는 문제3. 창을 invalid하게 만들면 알이 지워지는 문제 이전에 윈도우 창안에서 마우스 좌클릭 시, 도형 그리기에서 이 같은 문제( 2번, 3번)을 해결하기 위해찍은 도형의 좌표와 생성한 도형의 갯수를 카운트 하여 반복문으로 처리했습니다.그런데 오목판에서는 바둑판이 한정된 특징(1번 문제)으로 찍은 돌의 최대치가 정해져있고,격자 좌표를 벗어나는 바둑알이 놓일 일은 없으므로, 전과는 다른 방식으로 .. 더보기
MFC 설명&도형그리기&오목판(상)-10 2016년 8월 4일 10번째 강좌 정리 입니다.저번 정리에서는 Win32 를 통해 윈도우 창을 띄워 마우스 클릭시 도형(사각형, 원)을 생성해봤습니다.이번에는 동일한 과정을 MFC로 해보고, 이를 응용하여 오목 프로그램을 만들어 보겠습니다. MFC 설명 Win32는 C언어 환경이였습니다. MFC는 C++이기 때문에 Win32에서의 코드를 클래스 작업하여 바꿔야 할 필요가 있습니다.클래스 작업을 하기위해서는 어떻게 작업을 나눠서 클래스화 시킬 것인지 결정해야합니다.저번 Win32에서는 윈도우 속성값을 설정하고, 해당 윈도우를 등록한 뒤, 메인 윈도우로 생성하여 메세지 루프를 돌렸습니다.MFC에서는 CWinApp 클래스에서 위와 같은 내용을 처리합니다.CWinAppInitApplication - (윈도우 .. 더보기
MFC기초, WIN32 API를 통한 도형만들기 -9 2016년 7월 28일 9번째 강좌 정리 입니다.지난 8번째 정리글에서는 총 4부분으로 나눠서 설명드렸습니다. WinMain, Window속성, Window생성, Msg loop이였는데,이 4가지는 윈도우 프로그램에서 거의 변하지 않는 부분으로 윈도우 프로그램의 골격에 해당합니다.(속성은 상황에 따라 바뀔 수 있습니다.)그런데, 그 중 Window 속성에서 wc.lpfnWndProc 부분에 WndProc만 적어둔채 생략했었습니다.이 부분은 client area에서 어떻게 처리해줄 것인지 함수로 표현되는 부분입니다.실습에서는 client area에 마우스 왼쪽을 눌렀을 때, 원과 사각형이 생성되게끔 정의할 것입니다.저번 코드는 다음과 같습니다. 1. WinMain 코드123456789101112131415.. 더보기
C++ 함수 포인터&API 실습기초 -8 2016년 7월 28일 8번째 강좌 정리 하겠습니다. 이번 정리내용은 함수의 포인터, 그리고 MFC에 대한 개요입니다. 1. 함수의 포인터 함수의 포인터를 설명하기 전에 기존 함수 호출 방법은 어떻게 이루어지는지 다음 예로 살펴보겠습니다. 12345void sum( int a, int b ){ return a+b; } void main() { sum(3, 5); //함수 사용 방법 1. 이름으로 호출해서 사용} cs 이런식으로 사용하게되면 함수는 고정된 것이 되버립니다. (컴파일 하고 나면 고정된다는 의미)즉, 함수의 내용이 바뀔 때마다 새롭게 컴파일 해야 합니다.바꿔말하면 만약 다른 장치에, 다른 os 등 다양하게 변하는 환경에서 함수를 적용하려면매번 새로운 업데이트를 적용해야 할 것입니다. 이를 대응.. 더보기
TIPS. C++프로그래밍 지식나눔강좌-7 2016년 7월 26일 TIPSSOFT 대표님이 주관하는 7번째 강의를 듣고 왔습니다.C++로 이것저것 과제도 했었는데, 그동안 무지한 상태에서 그냥 C++흉내만 내고 있었네요.이번 포스팅의 핵심은 다형성 입니다.다형성이란 큰 그림을 그리기 위해 기초공사 격인 접근제한자, 상속, 오버로딩, 오버라이딩 등을 살펴보겠습니다.. 1. 접근제한자 접근제한자는 6-1에서 살짝 언급해드렸는데, 자세히 살펴보겠습니다.접근제한자를 둔 가장 큰 이유는 멤버 변수를 다루는 인터페이스 함수를 만드는 일련의 과정을C++가 문법적인 가이드 라인으로 제공하기 위함입니다.접근제한자에는 private, public, protected가 있고, 키워드 뒤에 ' : '가 붙습니다. 차례로 살펴보겠습니다.a. private- 외부 클래스.. 더보기
TIPS. C++프로그래밍 지식나눔강좌-6-1 C++ 강의는 C와 겹치는 부분이 많기 때문에, C++강의는 C와 비교해 새로 추가된 내용만을 주로 다룰 것 같습니다.C에서 C++로 설명을 이어가기 때문에 제목은 C에서 이어온 순서대로 이어가겠습니다.(이름만 C++ 프로그래밍으로 바꿨네요)C++를 배우기 앞서 C언어의 문제점과 이를 C++에서는 어떻게 보완했는지 살펴본 뒤에 클래스에 대해 알아보겠습니다. 1. C와 C++ 이해하기- C 언어에서는 모듈이라는 개념을 제공했습니다. 즉, 모듈은 함수 집합체로서 코드로 국한한 단위였습니다. 하지만 구조체와 같이 데이터를 정의하고 관리하는 문법과는 별개로 사용되었기 때문에, 어떤 정보를 표현함에 있어 일관성이 떨어졌습니다. 따라서 데이터변화가 생기면 이에 따라 코드 변화도 같이 발생하게 되었습니다.- 그리하여.. 더보기
TIPS. C프로그래밍 지식나눔강좌-6 2016년 7월 21일 팁스에서 주관하는 6번째 강의를 듣고왔습니다. 이번에 다룰 내용은 구조체, 공용체 입니다. TIPS에서 주관하는 C언어 학습에 대한 정리는 이걸로 끝이군요( C만 끝난거지 그래도 C++도 있고 MFC도 아직 많이 남았습니다) 1. 구조체 구조체는 서로 다른 데이터 형을 하나의 데이터로 군집화하여 사용할 수 있도록 하는 사용자 정의 데이터 형입니다.배열에서는 오직 한 가지의 데이터형을 군집화했지만 구조체에서는 여러가지 데이터형을 군집화하는 차이가 있습니다.따라서 어떤 개개인이 갖고 있는 자료를 정리하려면 배열보다는 구조체를 쓰는게 논리상 더 적합합니다.구조체는 다음과 같은 폼을 같습니다.struct 구조체명{ // 구조체 이름은 예약어로 표기할 수 없다.데이터형 변수명a; // 구조.. 더보기
TIPS. C프로그래밍 지식나눔강좌-3 2016년 7월 11일 세 번째 강좌가 진행되었는데요~ 강의 내용을 정리해보겠습니다. 1. 반복문 반복문은 중복되는 내용을 반복하고자 할 때 사용하는데요, 조건이 만족하지 않을때까지 반복을 수행합니다.C언어에서 제공하는 반복문에는 for, while, do while로 총 세 가지 방법이 있습니다.차례대로 살펴보겠습니다. ① for문for( 시작조건; 종결조건; 조건변화식 ){반복 커맨드;} for문은 1) 시작조건부터 시작해서, 종결조건을 만족하면 조건문 속 반복 커맨드를 실행합니다.2) 반복커맨드를 끝까지 실행해서 for문의 끝에 다다르면 조건변화식으로 이동합니다.3) 조건변화식에서 변경된 값을 종결조건에 비교하고 반복 커맨드를 실행합니다.4) 2)~3)을 종결조건이 만족하지 않을 때까지 반복하다 빠.. 더보기