< À§Àúµå ¸ðµå >

Àüȸ´Â
Åë»óÀÇ ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ ÀÛ¼ºÇß½À´Ï´Ù¸¸ CPropertySheetImplŬ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÎ SetWizardMode() À» È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ À§Àúµå ŸÀÔÀÇ ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ ÀÛ¼ºÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

 

CPropertyPage<IDD_PROPPAGE_VERSION> page;

 

CPropertySheet sheet;

sheet.AddPage(page);

 

sheet.SetWizardMode();  // À§Àúµå ¸ðµå·Î ¼³Á¤

 

sheet.DoModal();

                      


¿ì¼±  Àüȸ ÀÛ¼ºÇÑ ÇÁ·ÓÆÛƼ ÆäÀÌÁö¿ëÀÇ ´ÙÀ̾ó·Î±× ÀÚ¿ø IDD_PROPPAGE_VERSION À» ÁöÁ¤ÇØ ÇÁ·ÓÆÛƼ ÆäÀÌÁö¸¦ ÀÛ¼ºÇØ ±×°ÍÀ» ÇÁ·ÓÆÛƼ ½ÃÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù.  ±×¸®°í SetWizardMode()¿¡ ÀÇÇØ À§Àúµå ¸ðµå·Î ÇÕ´Ï´Ù.  ±×¸®°í ´ÙÀ̾ó·Î±× ÀÚ¿øÀÇ Å¸ÀÌÆ² ij¸¯ÅÍ ¶óÀÎÀÌ À§ÀúµåÀÇ Å¸ÀÌÆ²·Î¼­ Ç¥½ÃµË´Ï´Ù. ÀÌ¿Í °°ÀÌ À§Àúµå ¸ðµåÀÇ ÇÁ·ÓÆÛƼ ½ÃÆ®ÀÇ ÀÛ¼ºÀº Åë»óÀÇ ÇÁ·ÓÆÛƼ ½ÃÆ®ÀÇ °æ¿ì¿Í ¼­·Î ³Ê¹« ¹Ù²ò´Ï´Ù.

¡¡
±×·±µ¥ À§ÀÇ ¿¹¿¡¼­´Â [¿Ï·á]¹öưÀÌ ¾ø½À´Ï´Ù. ±×¸®°í ÇÁ·ÓÆÛƼ ÆäÀÌÁö»óÀÇ ÄÁÆ®·ÑÀÌ ÀÖ´Â Á¶°ÇÀ» ä¿üÀ» °æ¿ì¸¸ [´ÙÀ½¿¡] ¹öưÀ» À¯È¿ÇÏ°Ô ÇÏ°í ½Í´Ù°í ÇÏ´Â ÀÏÀÌ ÀÖ°ÚÁö¿ä. ±×·¯ÇÑ °æ¿ì´Â CPropertyPageImplŬ·¡½º·ÎºÎÅÍ ÆÄ»ý½ÃŲ µ¶ÀÚÀûÀÎ ÀÚ»ê ÆäÀÌÁö Ŭ·¡½º¸¦ ÀÛ¼ºÇØ ±× Áß¿¡SetWizardButtons()¸¦ È£ÃâÇØ ¹öư »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù.

¡¡
´ÙÀ½¿¡ ³ªÅ¸³»´Â °ÍÀº CPropertySheetImpl Ŭ·¡½º³ª CPropertyPageImplŬ·¡½º·ÎºÎÅÍ »ó¼Ó Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¿© µ¶ÀÚÀûÀÎ À§Àúµå ¸ðµå ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ ÀÛ¼ºÇÏ´Â ¿¹ÀÔ´Ï´Ù.

 


¿ì¼± ÇÁ·ÎÁ§Æ®¿¡ ÇÁ·ÓÆÛƼ ÆäÀÌÁö¿ëÀÇ ´ÙÀ̾ó·Î±× ÀÚ¿øÀ» 2°³ Ãß°¡ÇÏ¿© °¢°¢ÀÇ ID¸¦ IDD_PROPPAGE_CUSTOM°ú IDD_PROPPAGE_FINISH·Î º¯°æÇÕ´Ï´Ù.  1¹øÂ°ÀÇ ´ÙÀ̾ó·Î±× ¸®¼Ò½º(ID:IDD_PROPPAGE_CUSTOM)¿¡´Â ID°¡ IDC_CHECK_NEXT ÀÇ Ã¼Å© ¹Ú½º¸¦ Ãß°¡ÇÕ´Ï´Ù.

´ÙÀ½À¸·Î CustomWizard.h¶ó°í ÇÏ´Â Çì´õ ÆÄÀÏÀ» ÁغñÇØ °Å±â¿¡ CCustomPage,  CFinishPage¶ó°í ÇÏ´Â ÇÁ·ÓÆÛƼ ÆäÀÌÁö Ŭ·¡½º¿Í  CCustomWizard¶ó°í ÇÏ´Â ÇÁ·ÓÆÛƼ ½ÃÆ® Ŭ·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù.

// CustomWizard.h

class CCustomPage : public CPropertyPageImpl<CCustomPage>

{

    CButton m_button_topmost;

 

public:

    enum { IDD = IDD_PROPPAGE_CUSTOM };

 

    // constructor¡¡ ¡¡

    CCustomPage(ATL::_U_STRINGorID title = (LPCTSTR)NULL)

        : CPropertyPageImpl<CCustomPage>(title)

    {}

 

    BEGIN_MSG_MAP_EX(CCustomPage)

        MSG_WM_INITDIALOG(OnInitDialog)

        COMMAND_ID_HANDLER_EX(IDC_CHECK_NEXT, OnCheckNext)

        CHAIN_MSG_MAP(CPropertyPageImpl<CCustomPage>)

    END_MSG_MAP()

 

    LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){

        m_button_topmost = GetDlgItem(IDC_CHECK_NEXT);

 

        return TRUE;

    }

 

    void OnCheckNext(UINT uNotifyCode, int nID, HWND hWndCtl){

        OnSetActive();

    }

 

    BOOL OnSetActive(){

        // üũ ¹Ú½º°¡ üũµÇ°í ÀÖ´Â °æ¿ì´Â[´ÙÀ½¿¡]¹öưÀ» À¯È¿ÇÏ°Ô ÇØ ,

        // ±×·¸Áö ¾ÊÀ¸¸é ¹«È¿·Î ÇÑ´Ù. [µ¹¾Æ¿À´Â]¹öưÀº Ç×»ó ¹«È¿.

        SetWizardButtons(m_button_topmost.GetCheck() ? PSWIZB_NEXT : 0);

 

        return TRUE;

    }

};

 

class CFinishPage : public CPropertyPageImpl<CFinishPage>

{

public:

    enum { IDD = IDD_PROPPAGE_FINISH };

 

    // constructor¡¡ ¡¡

    CFinishPage(ATL::_U_STRINGorID title = (LPCTSTR)NULL)

        : CPropertyPageImpl<CFinishPage>(title)

    {}

 

    BEGIN_MSG_MAP_EX(CFinishPage)

        CHAIN_MSG_MAP(CPropertyPageImpl<CFinishPage>)

    END_MSG_MAP()

 

    BOOL OnSetActive(){

        // [µ¹¾Æ¿À´Â]¹öư°ú[¿Ï·á]¹öưÀ» À¯È¿ÇÏ°Ô ÇÑ´Ù.

        // µ¡ºÙ¿©[´ÙÀ½¿¡]¹öưÀº[¿Ï·á]¹öưÀ¸·Î ¿Å°ÜÁø´Ù.

        SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);

 

        return TRUE;

    }

};

 

class CCustomWizard : public CPropertySheetImpl<CCustomWizard>

{

public:

    CCustomPage m_pageCustom;

    CFinishPage m_pageFinish;

 

    // constructor¡¡ ¡¡

    CCustomWizard(ATL::_U_STRINGorID title = (LPCTSTR)NULL,

        UINT uStartPage = 0, HWND hWndParent = NULL)

        : CPropertySheetImpl<CCustomWizard>(title, uStartPage, hWndParent)

    {

        SetWizardMode();  // À§Àúµå ¸ðµå·Î ¼³Á¤

        AddPage(m_pageCustom);

        AddPage(m_pageFinish);

    }

 

    BEGIN_MSG_MAP_EX(CCustomWizard)

        CHAIN_MSG_MAP(CPropertySheetImpl<CCustomWizard>)

    END_MSG_MAP()

};

                      


CCustomPage Ŭ·¡½º´Â À§ÀúµåÀÇ 1ÆäÀÌÁö°¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ÇÁ·ÓÆÛƼ ÆäÀÌÁö¿¡´Â üũ ¹Ú½º°¡ ÇÑ °³ ÀÖ¾î üũ¸¦ ³ÖÀ¸¸é SetWizardButtons(PSWIZB_NEXT)°¡ ºÒ·ÁÁ® [´ÙÀ½¿¡] ¹öưÀÌ À¯È¿ÇÏ°Ô µË´Ï´Ù. µ¡ºÙ¿©OnSetActive()´Â ÇÁ·ÓÆÛƼ ÆäÀÌÁö°¡ ¾×ƼºêÇÏ°Ô µÉ ¶§¸¶´Ù ºÒ·Á °©´Ï´Ù¸¸ ÇÁ·ÓÆÛƼ ÆäÀÌÁö°¡ ÃÖÃʷΠǥ½ÃµÇ¾úÀ» ¶§´Â üũ ¹Ú½º´Â üũµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ SetWizardButtons(0)°¡ ºÒ·ÁÁ® [µ¹¾Æ¿À´Â] ¹öưµµ [´ÙÀ½¿¡] ¹öưµµ ¹«È¿°¡ µË´Ï´Ù.

CFinishPageŬ·¡½º´Â À§ÀúµåÀÇ 2ÆäÀÌÁö°¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ÇÁ·ÓÆÛƼ ÆäÀÌÁö´Â ½ºÅÂÆ½ ÄÁÆ®·Ñ·Î ¸Þ¼¼Áö¸¦ Ç¥½ÃÇϰí ÀÖÀ» »ÓÀÔ´Ï´Ù. µ¡ºÙ¿© ÀÌ ÆäÀÌÁö°¡ À§ÀúµåÀÇ ÃÖÈÄÀ̹ǷÎOnSetActive()¿¡¼­´Â PSWIZB_FINISHÀ» ÁöÁ¤ÇØ SetWizardButtons()¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î [´ÙÀ½¿¡] ¹öưÀ»[¿Ï·á]¹öưÀ¸·Î º¯°æÇϰí ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ [´ÙÀ½¿¡] ¹öư°ú [¿Ï·á] ¹öưÀº °øÅëÀÇ ¹öưÀ» »ç¿ëÇÕ´Ï´Ù.

CCustomWizard Ŭ·¡½º´Â »ó±âÀÇ 2°³ÀÇ ÇÁ·ÓÆÛƼ ÆäÀÌÁö Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î °¡Á® constructor ¡¡ À¸·Î AddPage()¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ Ãß°¡Çϰí ÀÖ½À´Ï´Ù.  ±×¸®°í  constructor¿¡¼­´Â SetWizardMode()À» È£ÃâÇØ ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ À§Àúµå ¸ðµå·Î Çϰí ÀÖ½À´Ï´Ù.

¡¡
´ÙÀ½¿¡ ³ªÅ¸³»´Â °ÍÀº CCustomWizard Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù.

// stdafx.h

#include <atlbase.h>

#include <atlapp.h>

extern CAppModule _Module;

#include <atlwin.h>

 

#include <atlcrack.h>

#include <atlmisc.h>

#include <atlctrls.h>

#include <atldlgs.h>  // common dialog¸¦ »ç¿ëÇϱâ À§ÇØ(¶§¹®¿¡)

                      

 

// maindlg.h

class CMainDlg : public CDialogImpl<CMainDlg>

{

public:

    enum { IDD = IDD_MAINDLG };

 

    // ¸Þ¼¼Áö ¸Ê

    BEGIN_MSG_MAP_EX(CMainDlg)

        MSG_WM_INITDIALOG(OnInitDialog)

        COMMAND_ID_HANDLER_EX(IDC_BUTTON_OPENDLG, OnButtonOpenDlg)

        COMMAND_ID_HANDLER_EX(IDOK, OnOK)

        COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)

    END_MSG_MAP()

 

    LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){

        // ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡

        CenterWindow();

 

        // Å« ¾ÆÀÌÄÜ ¼³Á¤

        HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR,

            ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));

        SetIcon(hIcon, TRUE);

       

        // ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤

        HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR,

            ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));

        SetIcon(hIconSmall, FALSE);

 

        return TRUE;

    }

 

    void OnButtonOpenDlg(UINT uNotifyCode, int nID, HWND hWndCtl){

        CCustomWizard wizard;

 

        if(wizard.DoModal() == IDOK){

            // [¿Ï·á]¹öưÀ» ´­·¯ ´Ý¾ÒÀ» ¶§ÀÇ Ã³¸®

        }

    }

 

    void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){

        EndDialog(nID);

    }

 

    void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){

        EndDialog(nID);

    }

};

                      

 

// CommDlg.cpp

#include "stdafx.h"

 

#include "resource.h"

 

#include "CustomWizard.h"

#include "maindlg.h"

 

CAppModule _Module;

 

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nCmdShow)

{

    HRESULT hRes = ::CoInitialize(NULL);

    ATLASSERT(SUCCEEDED(hRes));

 

    ::DefWindowProc(NULL, 0, 0, 0L);

 

    AtlInitCommonControls(ICC_COOL_CLASSES | ICC_WIN95_CLASSES);

 

    hRes = _Module.Init(NULL, hInstance);

    ATLASSERT(SUCCEEDED(hRes));

 

    int nRet = 0;

    // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà

    {

        CMainDlg dlgMain;

        nRet = dlgMain.DoModal();

    }

 

    _Module.Term();

    ::CoUninitialize();

 

    return nRet;

}

                      


¡¡
¿ì¼± ¸®¼Ò½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.  ´ÙÀ̾ó·Î±×¿¡ ¹öư ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ¸®¼Ò½º ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù.

ÄÁÆ®·Ñ¸í

¸®¼Ò½º ID

Ǫ½¬ ¹öư

IDC_BUTTON_OPENDLG


¡¡
´ÙÀ½¿¡ stdafx.h ¿¡¼­´Â atldlgs.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.

¡¡
CMainDlgŬ·¡½º¿¡¼­´Â ¹öư¿ëÀÇ Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯 OnButtonOpenDlg()¸¦ Ãß°¡ÇØ °Å±â¼­ CCustomWizard Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ DoModal()¿¡ ÀÇÇØ µ¶ÀÚÀûÀÎ À§Àúµå ¸ðµå ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.  µ¡ºÙ¿© Ç¥½ÃÇÑ À§Àúµå ¸ðµåÀÇ ÇÁ·ÓÆÛƼ ½ÃÆ®¸¦ [¿Ï·á]¹öưÀ» ´­·¯ ´ÝÀ¸¸é DoModal()´Â IDOK¸¦ µ¹·ÁÁÝ´Ï´Ù.

¡¡
¸¶Áö¸·À¸·Î CommDlg.cpp ¿¡¼­ maindlg.h Çì´õÀÇ ¾Õ¿¡ CustomWizard.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.



Wizard97½ºÅ¸ÀÏ

¡¡SetHeader()³ª SetWatermark()¸¦ È£ÃâÇϸé PSH_WIZARD97Ç÷¡±×°¡ ¼³Á¤µÇ¾î À§Àúµå¸¦ Wizard97 ½ºÅ¸ÀÏ·Î ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¡¡
´ÙÀ½¿¡ ³ªÅ¸³»´Â °ÍÀº ¹æ±Ý Àü ÀÛ¼ºÇÑ À§Àúµå Ŭ·¡½º¸¦ Wizard97½ºÅ¸ÀÏ¿¡ °íÃÄ ¾²´Â ¿¹ÀÔ´Ï´Ù.

 

 

// CustomWizard.h

class CCustomPage : public CPropertyPageImpl<CCustomPage>

{

    CButton m_button_topmost;

 

public:

    enum { IDD = IDD_PROPPAGE_CUSTOM };

 

    // constructor¡¡ ¡¡

    CCustomPage(ATL::_U_STRINGorID title = (LPCTSTR)NULL)

        : CPropertyPageImpl<CCustomPage>(title)

    {

        // Çì´õ ŸÀÌÆ²À» ¼³Á¤

        SetHeaderTitle(_T("ÃÖÃÊÀÇ ÆäÀÌÁö"));

        SetHeaderSubTitle(_T("ºÎÁ¦"));

    }

 

    BEGIN_MSG_MAP_EX(CCustomPage)

        MSG_WM_INITDIALOG(OnInitDialog)

        COMMAND_ID_HANDLER_EX(IDC_CHECK_NEXT, OnCheckNext)

        CHAIN_MSG_MAP(CPropertyPageImpl<CCustomPage>)

    END_MSG_MAP()

 

    LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){

        m_button_topmost = GetDlgItem(IDC_CHECK_NEXT);

 

        return TRUE;

    }

 

    void OnCheckNext(UINT uNotifyCode, int nID, HWND hWndCtl){

        OnSetActive();

    }

 

    BOOL OnSetActive(){

        // üũ ¹Ú½º°¡ üũµÇ°í ÀÖ´Â °æ¿ì´Â[´ÙÀ½¿¡]¹öưÀ» À¯È¿ÇÏ°Ô ÇØ ,

        // ±×·¸Áö ¾ÊÀ¸¸é ¹«È¿·Î ÇÑ´Ù. [µ¹¾Æ¿À´Â]¹öưÀº Ç×»ó ¹«È¿.

        SetWizardButtons(m_button_topmost.GetCheck() ? PSWIZB_NEXT : 0);

 

        return TRUE;

    }

};

 

class CFinishPage : public CPropertyPageImpl<CFinishPage>

{

public:

    enum { IDD = IDD_PROPPAGE_FINISH };

 

    // constructor¡¡ ¡¡

    CFinishPage(ATL::_U_STRINGorID title = (LPCTSTR)NULL)

        : CPropertyPageImpl<CFinishPage>(title)

    {

        // ¿öÅÍ ¸¶Å©¸¦ Ç¥½ÃÇϱâ À§Çؼ­ Çì´õ¸¦ ºñÇ¥½Ã(?/font>

        m_psp.dwFlags |= PSP_HIDEHEADER;

    }

 

    BEGIN_MSG_MAP_EX(CFinishPage)

        CHAIN_MSG_MAP(CPropertyPageImpl<CFinishPage>)

    END_MSG_MAP()

 

    BOOL OnSetActive(){

        // [µ¹¾Æ¿À´Â]¹öư°ú[¿Ï·á]¹öưÀ» À¯È¿ÇÏ°Ô ÇÑ´Ù.

        // µ¡ºÙ¿©[´ÙÀ½¿¡]¹öưÀº[¿Ï·á]¹öưÀ¸·Î ¿Å°ÜÁø´Ù.

        SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);

 

        return TRUE;

    }

};

 

class CCustomWizard : public CPropertySheetImpl<CCustomWizard>

{

public:

    CCustomPage m_pageCustom;

    CFinishPage m_pageFinish;

 

    CBitmap bmpHeader;     // Çì´õ¿ë ºñÆ® ¸Ê

    CBitmap bmpWatermark;  // ¿öÅÍ ¸¶Å©¿ë ºñÆ® ¸Ê

 

    // constructor¡¡ ¡¡

    CCustomWizard(ATL::_U_STRINGorID title = (LPCTSTR)NULL,

        UINT uStartPage = 0, HWND hWndParent = NULL)

        : CPropertySheetImpl<CCustomWizard>(title, uStartPage, hWndParent)

    {

        // Çì´õ¿ë ºñÆ® ¸ÊÀ» ¼³Á¤

        bmpHeader.LoadBitmap(IDB_BITMAP_HEADER);

        SetHeader(bmpHeader);

 

        // ¿öÅÍ ¸¶Å©¿ë ºñÆ® ¸ÊÀ» ¼³Á¤

        bmpWatermark.LoadBitmap(IDB_BITMAP_WATERMARK);

        SetWatermark(bmpWatermark);

 

        AddPage(m_pageCustom);

        AddPage(m_pageFinish);

    }

 

    BEGIN_MSG_MAP_EX(CCustomWizard)

        CHAIN_MSG_MAP(CPropertySheetImpl<CCustomWizard>)

    END_MSG_MAP()

};

                      


¿ì¼± Çì´õ¿ëÀ¸·Î ´ÙÀ½°ú °°Àº ºñÆ®¸Ê ¸®¼Ò½º¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇØ ID¸¦ IDB_BITMAP_HEADER·Î ÇÕ´Ï´Ù.



±×¸®°í ¿öÅÍ ¸¶Å©(Æ´»õ¸¦ ¸¸µé¾î )¿ëÀ¸·Î ´ÙÀ½°ú °°Àº ºñÆ®¸Ê ¸®¼Ò½º¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇØ ID¸¦ IDB_BITMAP_WATERMARK·Î ÇÕ´Ï´Ù.



ÀÌ·¯ÇÑ ºñÆ®¸Ê ¸®¼Ò½º´Â CCustomWizard Ŭ·¡½ºÀÇ constructorÀ¸·Î À§Àúµå·Î ¼³Á¤ÇÕ´Ï´Ù.

À§ÀúµåÀÇ  1ÆäÀÌÁö°¿¡´Â Çì´õ ŸÀÌÆ²À» Ç¥½ÃÇÕ´Ï´Ù. ±× ¶§¹®¿¡ CCustomPage Ŭ·¡½ºÀÇ constructor ¡¡ À¸·Î SetHeaderTitle()¿Í SetHeaderSubTitle()¸¦ È£ÃâÇÕ´Ï´Ù.

À§ÀúµåÀÇ 2ÆäÀÌÁö °¿¡´Â ¿öÅÍ ¸¶Å©¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¿öÅÍ ¸¶Å©¸¦ Ç¥½ÃÇϱâ À§Çؼ­´Â Çì´õ¸¦ ºñ Ç¥½Ã·Î ÇÒ Çʿ䰡 Àֱ⶧¹®¿¡ CFinishPage Ŭ·¡½ºÀÇ constructorÀ¸·Î PSP_HIDEHEADER Ç÷¡±×¸¦ ¼³Á¤ÇÕ´Ï´Ù.