반응형

1.   생성 패턴

 

생성에 관련된 패턴은 인스턴스를 만드는 과정을 추상화하는 것으로 개체를 생성, 합성하는 방법이나 객체의 표현 방법에 독립적으로 시스템을 개발 할 수 있게 한다.

이를 위해, 클래스 생성 패턴은 상속을 이용하여 인스턴스화 하는 방법을 다양하게 할 수도 있고, 인스턴스 생성을 다른 클래스에 위임할 수도 있다.

 

n  [생성패턴이 제기하는 두 가지 주제]

ü  시스템이 어떤 클래스를 사용하는가를 캡슐화

ü  이들 클래스의 인스턴스를 어떻게 만들고, 누가 이를 생성하고 어떻게 생성되는지, 언제 생성할 것인지를 결정하는데 있어서의 유연성

n  [생성패턴의 종류]

ü  Abstract Factory

ü  Builder

ü  Factory Method

ü  Prototype

ü  Singleton

 

반응형

'개발일반' 카테고리의 다른 글

GitHub private Repository 무료 사용가능  (0) 2019.02.20
DoD 5220.22-M 삭제알고리즘  (0) 2011.10.13
1.1 생성패턴:Abstract Factory  (0) 2008.04.14
디자인패턴(Design Patterns)  (0) 2008.04.14
반응형

디자인패턴(Design Patterns)

 

디자인패턴에 대해 이해하고, 예제 작성을 통해 각 디자인 패턴의 특징과 장단점을 파악하고자 한다.
1
차적으로는 디자인패턴에 대한 개인적 이해 및 지식 습득을 위한 것이며, 다른 이들에게 도움이 될 수 있다면, 좋겠다
.

추후 기술하는 대부분의 내용은 "GoF의 디자인 패턴"의 내용을 기반으로
,
내가 이해한 내용에 대한 정리가 될 것이다
.

내용정리는 가급적 "GoF의 디자인 패턴"의 패턴 정리 양식을 따른다.

 

반응형

'개발일반' 카테고리의 다른 글

GitHub private Repository 무료 사용가능  (0) 2019.02.20
DoD 5220.22-M 삭제알고리즘  (0) 2011.10.13
1.1 생성패턴:Abstract Factory  (0) 2008.04.14
1. 생성패턴  (0) 2008.04.14
반응형

Afx의 의미

MFC로 프로그램을 작성하다 보면 Afx로 시작하는 함수들을 많이 볼 수 있다.

Afx는 무슨 의미일까?

간혹 궁금증이 일곤 했다.

그래서~~

Naver님에게 물어봤다.

AfxApplication FrameworKS을 뜻하는 말로, MFC를 개발하던 MS내부 팀의 이름 이란다.

AApplication

FFrameworks

X – FrameworKS

 

궁금하면 물어봐라. 그리고 확인해라

 

반응형

'Windows Programming' 카테고리의 다른 글

듀얼 모니터에서의 좌표값 확인  (1) 2008.07.04
COM DLL만으로 tlb파일 생성및 COM사용하기  (0) 2008.04.28
스크린 크기 구하기  (0) 2008.04.02
[MFC] Windows Control 제어  (0) 2008.03.31
MFC 전역함수  (0) 2008.03.30
반응형

Screen 크기 구하기

 

GetSystemMetrics API를 이용해서 구할 수 있는 스크린 크기는 여러 가지가 있다.

상황에 따라 필요한 화면크기를 구할 때는 다음과 같이 코딩하면 된다.

·        스크린 크기( 해상도 )
int iScreenCx = GetSystemMetrics(SM_CXSCREEN);
int iScreenCy = GetSystemMetrics(SM_CYSCREEN);
이 값은 GetDeviceCaps(HORZRES), GetDeviceCaps(VERTRES)값과 같다고 MSDN에 명기되어 있다

 

·        태스크바를 제외한 윈도우가 위치할 수 있는 화면 크기
MSDN을 보면 SM_CXMAXIMIZED(SM_CYXMAXIMIZED) 플래그가 있다.
이 플래그를 인자로 전달하면 원하는 사이즈를 계산해 줄 꺼라 생각할 수 있지만, 실제로는 그렇지 않다
.
SM_CXMAXIMIZED(SM_CYXMAXIMIZED)
값은 Primary 모니터에서 top-level Maximized되었을 때의 윈도우의 사이즈를 리턴 한다
.
원하는 바와 같은 내용인 것 같지만, 테스트 해보면 다른 값이 나옴을 알 수 있다
.
우선 해당 사이즈를 얻은 후 MoveWindow를 해 보면, right bottom이 예상했던 영역을 몇 픽셀씩 벗어난다. 해당 윈도우를 최대화 했을 경우에는 예상했던 영역에 표시된다
.
그런데 spy로 확인해보면, 두 경우의 윈도우 사이즈가 동일하다
.
왜 이런 현상이 발생하는지는 알수 없지만, 어찌됬든 위의 값을 사용할 수는 없다는 얘기다
.
해답은
SM_CXFULLSCREEN(SM_CYFULLSCREEN)에서 찾을 수 있다.( 이 플래그를 이용하라는 얘기가 아니다
.)
이 플래그를 MSDN에서 찾아보면 풀 스크린 윈도우의 클라이언트 width,height를 리턴 한다고 되어있다. 그리고 친절하게도
태스크 바나 응용프로그램 태스크 바의 영역을 제외한 크기를 얻으려면, SystemParametersInfo( , SPI_GETWORKAREA )를 사용하라고 명기되어 있다
.
이 함수를 이용하면 원하는 값을 얻을 수 있다.


다음은 내 컴퓨터에서 테스트한 각 함수호출의 결과값이다.
테스트 PC 해상도는 1680*1050이다.

GetSystemMetrics( SM_CXSCREEN ) = 1680;
GetSystemMetrics(
SM_CYSCREEN
) = 1050;
GetSystemMetrics(
SM_CXMAXIMIZED
) = 1688;
GetSystemMetrics(
SM_CYMAXIMIZED
) = 1030;
GetSystemMetrics(
SM_CXFULLSCREEN
) = 1680;
GetSystemMetrics(
SM_CYFULLSCREEN ) = 1003;

 

RECT rcWorkArea;
SystemParametersInfo(
SPI_GETWORKAREA
, 0, &rcWorkArea, 0 ) ;
rcWorkArea.right - rcWorkArea.left = 1680;
rcWorkArea.bottom - rcWorkArea.top = 1022;

결국 대부분의 간단한 문제에 대한 해답은 MSDN에 있다.~.

 

 

반응형

'Windows Programming' 카테고리의 다른 글

듀얼 모니터에서의 좌표값 확인  (1) 2008.07.04
COM DLL만으로 tlb파일 생성및 COM사용하기  (0) 2008.04.28
Afx의 의미  (0) 2008.04.14
[MFC] Windows Control 제어  (0) 2008.03.31
MFC 전역함수  (0) 2008.03.30
반응형

Windows Control 제어

 

[체크박스]

CButton *pCheck = (CButton *)GetDlgItem( IDC_CHECK );

if ( pCheck->GetCheck() == 1 )

{

           // checked

}

else

{

           // Unchecked

}

 

[리스트박스]

CListBox *pList = (CListBox *)GetDlgItem(IDC_LIST);

pList->AddString("List Item");

pList->GetText(pList->GetCurSel(), str);

 

[콤보박스]

CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO);

pCmbo->GetLBText(pCombo->GetCurSel(), str);

 

[리스트뷰]

//자동스크롤
m_ListView.EnsureVisible( iRow, FALSE);

반응형

'Windows Programming' 카테고리의 다른 글

듀얼 모니터에서의 좌표값 확인  (1) 2008.07.04
COM DLL만으로 tlb파일 생성및 COM사용하기  (0) 2008.04.28
Afx의 의미  (0) 2008.04.14
스크린 크기 구하기  (0) 2008.04.02
MFC 전역함수  (0) 2008.03.30
반응형

Debug-Mode : 메모리의 의미

 

초기화 하지 않은 변수는 쓰레기 값으로 채워진다” C/C++책을 한번이라도 주의 깊게 보신 분이라면 한번쯤 접해 보셨을 문구라고 생각됩니다.

 

하지만 (디버그 빌드에 한하여)이 쓰레기 값이 어떤 의미 있는 값이라는 것은 알고 계신가요?

이 의미 있는 값에 대해 일부 정리 해 보려 합니다.

 

Memory

설명

0xCDCDCDCD

할당된 Heap메모리에 채워지는 값(초기화하지 않을 경우)

0xFDFDFDFD

할당된 Heap의 경계(,)에 채워지는 값

0xDDDDDDDD

0xFEEEFEEE

Free Heap메모리에 채워지는 값

0xCCCCCCCC

스택에 할당된 메모리에 채워지는 값(초기화하지 않을 경우)

해당 값은 어셈블리 __asm int 3(break)와 동일하여 이 영역을 접근하면 break point에 적중된다.

 

그렇다면 우리는 해당 메모리 값을 통해 어떤 도움을 받을 수 있을까요?

 

디버거가 자체 적으로 위 메모리의 값을 기준으로 오류 판단을 하기도 할 뿐아니라,

디버깅 상황에서 몇가지 도움을 얻을 수는 있을 듯 합니다.

 

예를 들어 메모리를 엑세스 할 때 에러가 발생할 때,

해당 메모리가

n  0xCDCDCDCD로 채워져 있다면, 해당 메모리를 초기화 하지 않고 사용했을 가능성을 용의 선상에 올려 놓을수 있을 테고,

n  0xFEEEFEEE로 채워져 있다면 이미 해제된 메모리를 참조하고 있음을,

n  할당한 메모리의 전/후 경계 부분이 0xFDFDFDFD값이 아니라면 메모리의 범위를 넘어선 write동작을 했음을 유추 할 수 있을 듯 합니다.

 

문제에 대한 완전한 해결책은 될수 없더라도, 적어도 발생한 문제에 대한 한가지 체크 지점을 발견 할 수도 있다는 얘기가 되겠죠.

 

 

ü  메모리 디버깅 관련 참고URL
http://cafe.naver.com/ddugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=22
&

 

 

반응형

+ Recent posts