kyuseo의 게임 프로그래밍

F10 메뉴 및 시스템 단축키 비활성화 하는 방법 (VC++) 본문

C++ 개발

F10 메뉴 및 시스템 단축키 비활성화 하는 방법 (VC++)

kyuseo 2009. 6. 9. 15:29

개요..

 

F10 및 시스템 단축키 비활성화 또는 변경하는 방법 (VC++)을 설명해드립니다.

 

일반적으로 게임이나 메뉴를 사용하지 않는 어플리케이션을 개발할 경우에는 F10 단축키를 사용할 필요가 없습니다.

 

특히 게임을 개발 할 경우 F10 키를 사용한다면 게임화면이 멈추는 현상이 발생되기 때문에 해당 기능을 비활성화 하는 방법을 설명 드립니다.

 

 

방법

 

1. OnSysCommand 를 재정의한다.

 

 

 

2. SC_KEYMENU 기능을 비활성화 한다...

 

 

 

해당 소스코드..

 

 

/**

    @class    CMainWnd

    @date    2006/5/3

    @author 채경석(kyuseo99@chol.com)

    @brief    

*/

class CMainWnd : public CWnd, public CLauncher

{

    DECLARE_DYNAMIC(CMainWnd)

 

public:

    CMainWnd();

    virtual ~CMainWnd();

 

    BOOL Create( LPCSTR szDllFileName, int nClientLauncherBuild

 

protected:

    DECLARE_MESSAGE_MAP()

    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

    virtual BOOL PreTranslateMessage(MSG* pMsg);

    virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);

 

    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

    afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

    afx_msg void OnDestroy();

    afx_msg void OnPaint();

    afx_msg BOOL OnEraseBkgnd(CDC* pDC);

    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

 

protected:

    BOOL m_bRelayEvent; ///< 릴레이이벤트를할수있는가?

};

 

 

 

void CMainWnd::OnSysCommand(UINT nID, LPARAM lParam)

{

    // X 버튼을WM_CLOSE 로변환한다.

    if( nID == SC_CLOSE )

    {

        PostMessage( WM_CLOSE );

    }

    else if( nID == SC_KEYMENU )

    {

    }    

    else

    {

        CWnd::OnSysCommand(nID, lParam);

    }

}