'컴퓨터공학부 > 고급컴퓨터프로그래밍(MFC)' 카테고리의 다른 글
윈도우 프로그래밍 Chapter 4 연습문제 1번 (0) | 2010.10.20 |
---|---|
윈도우 프로그래밍 Chapter 1 연습문제 (0) | 2010.10.05 |
윈도우 프로그래밍 Chapter 2 심화문제 2번문제 (0) | 2010.10.05 |
윈도우 프로그래밍(visual C++ MFC Programming) 개정판 3장 연습문제 (0) | 2010.10.04 |
윈도우 프로그래밍 Chapter 4 연습문제 1번 (0) | 2010.10.20 |
---|---|
윈도우 프로그래밍 Chapter 1 연습문제 (0) | 2010.10.05 |
윈도우 프로그래밍 Chapter 2 심화문제 2번문제 (0) | 2010.10.05 |
윈도우 프로그래밍(visual C++ MFC Programming) 개정판 3장 연습문제 (0) | 2010.10.04 |
과제 (0) | 2010.10.25 |
---|---|
윈도우 프로그래밍 Chapter 1 연습문제 (0) | 2010.10.05 |
윈도우 프로그래밍 Chapter 2 심화문제 2번문제 (0) | 2010.10.05 |
윈도우 프로그래밍(visual C++ MFC Programming) 개정판 3장 연습문제 (0) | 2010.10.04 |
1.HelloSDK예제를 실행시 윈도우가 두개 나타나도록 수정하시오.단 하나는 최대화 상태로, 다른 하나는 최소화 상태로 실행된다.
hwnd = CreateWindow("HelloClass", "HelloSDK", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
hwnd1 = CreateWindow("HelloClass", "HelloSDK", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
ShowWindow(hwnd1, SW_SHOWMINIMIZED);
2.HelloMFC예제를 실행시 윈도우가 두개 나타나도록 수정하시오.단 하나는 최대화 상태로, 다른 하나는 최소화 상태로 실행된다.
m_pMainWnd = new CMainFrame;
m_pMainWnd1 = new CMainFrame;
m_pMainWnd->ShowWindow(SW_SHOWMINIMIZED);
m_pMainWnd1->ShowWindow(SW_SHOWMAXIMIZED);
3.HelloMFC예제를 마우스 왼쪽 한번 클릭 대신 더블 클릭 때 메시지 박스가 나타나도록 수정하시오.단,메시지 맵을 사용하지 않고 가상함수를 상속하는 방식으로 처리한다.
virtual BOOL PreTranslateMessage(MSG* pMsg);
...
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_LBUTTONDBLCLK)
{
MessageBox("마우스더블클릭.", "마우스 메시지");
return TRUE;
}
return CFrameWnd::PreTranslateMessage(pMsg);
}
과제 (0) | 2010.10.25 |
---|---|
윈도우 프로그래밍 Chapter 4 연습문제 1번 (0) | 2010.10.20 |
윈도우 프로그래밍 Chapter 2 심화문제 2번문제 (0) | 2010.10.05 |
윈도우 프로그래밍(visual C++ MFC Programming) 개정판 3장 연습문제 (0) | 2010.10.04 |
2. Console 예제를 수정하여, 다음 표의 데이터를 보관한다. 그리고 이름을 입력하면 키와 몸무게를 출력하라.
이름 |
키(cm) |
몸무게(kg) |
홍길동 |
172 |
72 |
박철수 |
164 |
67 |
오영희 |
166 |
51 |
구오성 |
182 |
80 |
김순희 |
159 |
48 |
최성주 |
177 |
69 |
신여정 |
172 |
51 |
보통 맵을 사용하는 것과 동일하지만, 키 외에 저장되는 데이터가 하나 이상이므로 구조체를 사용해야 한다. 따라서 PHYSIQUE 라는 구조체를 사용하여 CMapStringToPtr 객체에 저장한 후, 입력한 이름을 검색하여 해당 키와 몸무게를 출력한다. CMapStringToPtr 객체에 데이터를 저장할 때 new 연산자를 사용하여 메모리를 할당하므로, 프로그램을 종료할 때 반드시 메모리를 모두 해제해 주어야 한다.
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
…
else
{
CMapStringToPtr mapData;
mapData["홍길동"] = new PHYSIQUE(172, 72);
mapData["박철수"] = new PHYSIQUE(164, 67);
mapData["오영희"] = new PHYSIQUE(166, 51);
mapData["구오성"] = new PHYSIQUE(182, 80);
mapData["김순희"] = new PHYSIQUE(159, 48);
mapData["최성주"] = new PHYSIQUE(177, 69);
mapData["신여정"] = new PHYSIQUE(172, 51);
cout << "이름을 입력하면 키와 몸무게를 알 수 있습니다" << endl;
TCHAR szName[100];
CString strName;
void *pData;
cin >> szName;
strName = szName;
if (mapData.Lookup(strName, pData) == TRUE)
{
PPHYSIQUE pphysique = (PPHYSIQUE)pData;
cout << (LPCTSTR)strName << "의 키: " << pphysique->uiHeight;
cout << ", 몸무게: " << pphysique->uiWeight << endl;
}
else
cout << "존재하지 않는 이름입니다" << endl;
POSITION pos = mapData.GetStartPosition();
while (pos)
{
mapData.GetNextAssoc(pos, strName, pData);
delete pData;
}
}
…
}
MFC 템플릿을 사용하기 위해 다음과 같이 afxtempl.h 헤더 파일이 필요하다. PHYSIQUE 는 키와 몸무게를 UINT 멤버로 포함하는 구조체다.
#include "afxtempl.h"
typedef struct tagPHYSIQUE
{
tagPHYSIQUE() {
};
tagPHYSIQUE(UINT uiH, UINT uiW)
: uiHeight(uiH), uiWeight(uiW) {
};
UINT uiHeight;
UINT uiWeight;
} PHYSIQUE, *PPHYSIQUE;
과제 (0) | 2010.10.25 |
---|---|
윈도우 프로그래밍 Chapter 4 연습문제 1번 (0) | 2010.10.20 |
윈도우 프로그래밍 Chapter 1 연습문제 (0) | 2010.10.05 |
윈도우 프로그래밍(visual C++ MFC Programming) 개정판 3장 연습문제 (0) | 2010.10.04 |
과제 (0) | 2010.10.25 |
---|---|
윈도우 프로그래밍 Chapter 4 연습문제 1번 (0) | 2010.10.20 |
윈도우 프로그래밍 Chapter 1 연습문제 (0) | 2010.10.05 |
윈도우 프로그래밍 Chapter 2 심화문제 2번문제 (0) | 2010.10.05 |