GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해

Slides:



Advertisements
Similar presentations
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Advertisements

윈도우 일반 공주영상대학 게임과 이 은 순.
7장. MDI 프로그래밍 MDI 프로그래밍에 대한 내용을 배우도록 한다. 지금까지 배운 것은 생성된 윈도우에 단일 화면이 존재하는 형태였다. 이것을 SDI라고 부르고 Single Document Interface의 약자이다. 하나의 문서를 하나의 화면에 보여주는 형태의.
Windows Programming Chapter 1. Introduction to SDK
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
Local Connection과 InkPresenter 학기, 소프트웨어 설계 및 실험(Ⅰ)
WSAAsync Select 김대열 Bit - Academy Sunmoon University, Korea.
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조
10장. 소켓 입출력 모델(I) 블로킹과 넌블로킹 소켓의 특징을 이해한다. Select 소켓 입출력 모델을 이해하고 활용한다.
Dongseo univ. Computer engineering
제4장 대화상자.
Image & Video processing
Power Java 제3장 이클립스 사용하기.
Network Lab. Young-Chul Hwang
윤 홍 란 다이알로그(대화상자) 윤 홍 란
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Win32 API Programming 이 계 임.
C 언어 1 1주차 C언어 시작하기 - 1차시 C 언어 특징 및 프로젝트 생성 Programming Language.
JSP Programming with a Workbook
Java 기초 (Java JDK 설치 및 환경설정)
Visual Basic 함수.
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
대화상자 편집기의 사용법을 익힌다. 모드형 대화상자와 비 모드형 대화상자의 차이점을 이해하고 작성 방법을 익힌다.
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
KHS JDBC Programming 4 KHS
TCP/IP Socket Programming…
10장. 예외처리.
Windows Programming 시작하기
Visual C++ Programming
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바응용.
1차 프로젝트 발표 GAME ENGINE 게임 공학과 이성진.
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
WSAAsync Select 김대열 Bit - Academy Sunmoon University, Korea.
윈도우 컨트롤.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
웹디자인
Network Programming - 최종보고서 -
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
CHAP 21. 전화, SMS, 주소록.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
3. 윈도우 핸들 제어.
Windows 프로그래밍 환경 및 MFC의 구조
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
9 브라우저 객체 모델.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
CHAP 15. 데이터 스토리지.
윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해 윈도우 기반 소켓 애플리케이션 작성 기법을 익힘 대화상자 기반 애플리케이션의 구조와 동작 원리를 이해 대화상자 기반 소켓 애플리케이션 작성 기법을 익힘

윈도우 GUI 애플리케이션 - (1) 윈도우의 GUI 애플리케이션의 특징 용어 다양한 API(Application Programming Interface)를 이용하여 편리하고 화려한 사용자 인터페이스를 제공 메시지 구동 구조(message-driven architecture)로 동작 용어 API 윈도우 운영체제가 애플리케이션을 위해 제공하는 각종 함수 집합 메시지 애플리케이션의 외부 or 내부에서 어떤 변화가 발생 -> 해당 애플리케이션에게 알리기 위해 운영체제가 제공하는 개념

윈도우 GUI 애플리케이션 - (2) 메시지 구동 구조 ① 이벤트 발생 대기 ... 시스템 메시지 큐 메시지 큐 #3 메시지 큐 #1 메시지 큐 #2 메시지 큐 #3 ... 처리 대기

윈도우 GUI 애플리케이션 - (3) GUI 애플리케이션 코드 용어 프로그래머가 작성한 윈도우 프로시저에 따라 메시지를 처리 처리하지 않는 메시지의 경우 운영체제가 자동으로 처리 용어 메시지 핸들러(message handler) 메시지를 받았을 때 동작을 결정하는 코드 윈도우 프로시저(window procedure) 메시지 핸들러의 집합

윈도우 GUI 애플리케이션 - (4) 예제 코드 #include <windows.h> // ① LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // ②윈도우 프로시저 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) // ③Win32 프로그램의 주메인문 { // ④ 윈도우 클래스 등록 - 윈도우의 다양한 특성을 정의한 구조체(MSDN 참고) WNDCLASS wndclass; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hInstance = hInstance; wndclass.lpszClassName = "MyWindowClass"; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = (WNDPROC)WndProc; if(!RegisterClass(&wndclass)) return -1;

윈도우 GUI 애플리케이션 - (5) 예제 코드 (계속) // 윈도우 생성 ⑤ HWND hWnd = CreateWindow("MyWindowClass", "WinApp", WS_OVERLAPPEDWINDOW, 0, 0, 600, 300, NULL, (HMENU)NULL, hInstance, NULL); if(hWnd == NULL) return -1; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 메시지 루프 ⑥ MSG msg; while(GetMessage(&msg, 0, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;

윈도우 GUI 애플리케이션 - (6) 예제 코드 (계속) // 윈도우 프로시저 ⑦ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg){ case WM_CREATE: // 윈도우 생성 return 0; case WM_SIZE: // 윈도우 변경 case WM_DESTROY: // 윈도우 종료 PostQuitMessage(0); } return DefWindowProc(hWnd, uMsg, wParam, lParam); // 처리하지 않은 메시지는 운영체제로 넘겨 알아서 처리함

윈도우 GUI 애플리케이션 - (7) 메시지 구동 구조 ② 이벤트 발생 애플리케이션 #1 윈도우 프로시저 시스템 메시지 큐 이벤트 발생 애플리케이션 메시지 큐 #1 메시지 큐 #2 메시지 큐 #3 ... 애플리케이션 #1 메시지 루프 메시지 핸들러 #1 메시지 핸들러 #2 메시지 핸들러 #3 ••• DefWindowProc() 윈도우 프로시저

윈도우 GUI 애플리케이션 - (8) 컨트롤(control) 운영체제가 제공하는 일종의 윈도우로, 표준화된 형태와 특성을 제공 사용자에게 입력을 받거나 정보를 보여줌

윈도우 GUI 애플리케이션 - (9) 컨트롤과 부모 윈도우 ① 통지 메시지 통지 메시지 컨트롤 부모 윈도우 컨트롤의 상태가 변화되었음을 알림 메모리 부족 등으로 인한 오류를 알림 컨트롤 메시지 컨트롤의 상태를 알아내거나 변경 컨트롤 (자식 윈도우) 부모 윈도우 ① 통지 메시지 ② 컨트롤 메시지

예제 1 pp. 277 ~ pp. 284 WinApp.cpp 윈도우 GUI 애플리케이션 작성 예제 기본적인 내용임. (중요)

윈도우 기반 소켓 애플리케이션 구조 ... ••• 스레드 1 메시지 루프 DefWindowProc() 윈도우 프로시저 메시지 핸들러 #1 메시지 핸들러 #2 메시지 핸들러 #3 ••• DefWindowProc() 윈도우 프로시저 스레드 2 스레드 3 ... 스레드 n 윈도우 메시지 처리 소켓 통신과 데이터 처리

예제 2 pp. 286 ~ pp. 298 GUITCPServer.cpp / TCPClient.cpp(4장) 윈도우 기반 소켓 애플리케이션 작성 예제 중요

대화상자 기반 애플리케이션 - (1) 대화상자 대화상자 기반 애플리케이션 다양한 컨트롤을 포함하는 일종의 윈도우 애플리케이션의 일부로 존재하며, 사용자의 입력을 처리하거나 출력하는 목적으로 사용 대화상자 기반 애플리케이션 대화상자가 독립적인 애플리케이션으로 존재

대화상자 기반 애플리케이션 - (2) 대화상자 기반 애플리케이션을 작성 순서 ① 비주얼 C++의 리소스 편집기를 이용하여 대화상자를 시각적으로 디자인 ② 디스크에 *.RC 파일로 저장 리소스 스크립트(resource script) ③ 프로젝트 컴파일 과정에서 리소스 컴파일러가 실행되어 *.RC 파일을 이진 형태인 *.RES로 변환하고, 최종 링크 과정에서 실행 파일에 리소스로 포함 ④ 프로그램 실행 중 대화상자를 생성하는 API 함수를 호출하면, 운영체제는 실행 파일에 포함된 대화상자 템플릿을 토대로 대화상자를 생성

대화상자 기반 애플리케이션 - (3) 예제 코드 #include <windows.h> #include "resource.h" // ① BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); // ② int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc); // ③ return 0; } BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) // ④

대화상자 기반 애플리케이션 - (4) 예제 코드 (계속) switch(uMsg){ case WM_INITDIALOG: // ⑤ return TRUE; case WM_COMMAND: // ⑥ switch(LOWORD(wParam)){ case IDOK: EndDialog(hDlg, 0); // ⑦ case IDCANCEL: EndDialog(hDlg, 0); } return FALSE;

대화상자 기반 소켓 애플리케이션 (1) 구조 일반 GUI 소켓 애플리케이션과 동일 스레드 1 메시지 루프 메시지 핸들러 #1 메시지 핸들러 #2 메시지 핸들러 #3 ••• 대화상자 프로시저 스레드 2 스레드 3 ... 스레드 n 대화상자 메시지 처리 소켓 통신과 데이터 처리

대화상자 기반 소켓 애플리케이션 - (2) 스레드 동기화가 필요한 상황 스레드 1 ① ② ⑤ ③ 네트워크 ④ 애플리케이션 버퍼 스레드 2

예제 3 pp. 311 ~ pp. 325 GUITCPServer.cpp / GUITCPClient.cpp 대화상자 기반 소켓 애플리케이션 작성 예제 중요 이번 학기 동안 수고 많았습니다.