1. mfc에서 윈도우 메시지를 처리하는 경로 (win api message driven 방식과 비교)

사용자 이벤트 발생(어떤 이벤트가 어디에 발생?)

 

메시지를 잘 지원하지 않는 클래스들의 특징

→ 화면에 잘 보여지지 않는 클래스들(어플리케이션이나 다큐먼트 클래스와 같은 것들)

→ 어떤 클래스를 상속받느냐에 따라 메시지 처리 여부가 결정됨

→ 그렇다면, 메시지를 처리할 수 없는 클래스의 용도는?

 

App클래스의 용도

App클래스 에서는 주로 어떤것을 작성?

→ 프로그램에 사용되는 환경변수 적용

→ 부모 윈도우 생성

 

View클래스와 같은 화면을 보여주는 클래스에서 환경변수를 사용하기 위해 App클래스의 환경변수를 가져오는 방법

→ 포인터로 가리킨다.

→ 참조호출

그렇다면, App클래스에 어떻게 선언이 되어있어야 가져다 쓰는 클래스에서 포인터나 참조호출이 가능할 것인가?

생각보다 사용하는 것보다 선언하는 방식이 어렵고 중요하다. 따라서 잘 가져다 쓸 수 있도록 선언을 잘 해야 한다.

abstact, public, static등의 키워드들 중 어떤 것을 이용해서 선언할지를 결정하는 기준은 무엇일까?

 

정적변수(static)는 변수내의 값을 공유

전역변수는 공간을 공유

 

MFC에서 연산만 하는 함수는 4개중 어느 클래스에 만드는 것이 좋을까.

→ 새로운 클래스를 만들어서 한다.

만약 기존의 클래스에 집어 넣으면 연산을 이용하기 위해 전체를 불러야 한다.

 

포인터를 쓰는 경우

→ 가져와야 할 데이터가 너무 클 경우

→ 데이터를 가져올 수 없을 때(ex. OS가 가지고 있는 데이터(DC 등))

 



WinForm에서 타 클래스 함수 호출하기

1. 클래스 추가

2, 추가된 클래스에 변수 선언 및 초기화

namespace CSharp
{
    class Class1
    {
        public int left;
        public int top;
        public int right;
        public int bottom;        // 변수 선언

 

        Class1()
        {
            left = 100;
            top = 200;
            right = 300;
            bottom = 400;        // 초기화
        }
    }

3. 기존 클래스에 객체 생성하면, 새로만든 클래스의 데이터를 쓸 수 있다.

Class1 csClass = new Class1();

 



클래스 추가하여 함수생성, int의 합을 double형으로 화면에 출력

mfc나 winapi의 클래스는 전역클래스의 개념

 

함수를 제공받을 수 있는 곳

C표준라이브러리

win api

mfc클래스


Posted by 마마필로 :