MFCボタンコントロールButton押下・弾発イベント実装例

1893 ワード

MFCのボタンコントロールButton自体には、クリック、ダブルクリックなどのメッセージ応答イベントがありますが、個別の「押す」と「弾き出す」にはカスタマイズが必要です.以下はボタンカスタマイズイベントの例です.
1-プロジェクトディレクトリにクラスを右クリックして追加します.
2-C++Classを追加する.
3-CButtonベースのクラスを追加し、CPTZButtonと命名し、名前は自分の必要に応じて勝手に取ればいい.
4-PTZButton.hにコードを追加すると以下のようになります.
#if !defined(PTZ_BUTTON_CONTROL_H_) // 
#define PTZ_BUTTON_CONTROL_H_ 

#if _MSC_VER > 1000 // C 1000, vc6.0 1200
#pragma once
#endif // _MSC_VER > 1000

class CPTZButton : public CButton
{
//  
public:
	CPTZButton();
	virtual ~CPTZButton();
protected:
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);// 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	DECLARE_MESSAGE_MAP()
};

#endif

5-PTZButton.cppに追加されたコードは以下の通りです.
#include "stdafx.h"
#include "PTZButton.h"//   

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CPTZButton::CPTZButton()
{

}

CPTZButton::~CPTZButton()
{

}

BEGIN_MESSAGE_MAP(CPTZButton, CButton)
	
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	
END_MESSAGE_MAP()

/*************************************************
 :    	OnLButtonDown
 :	 
 :   
 :   			
 :		
*************************************************/
void CPTZButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// 
	
	CButton::OnLButtonDown(nFlags, point);
}

/*************************************************
 :    	OnLButtonUp
 :	 
 :   
 :   			
 :		
*************************************************/
void CPTZButton::OnLButtonUp(UINT nFlags, CPoint point) 
{
        //  
	CButton::OnLButtonUp(nFlags, point);
}

6-次に追加したボタンを関連付ける.
ダイアログボックスにButtonコントロールを追加->コントロールの右クリックで変数を追加->ダイアログボックスのヘッダファイルで
ボタン変数定義でCButtonをCPTZButton->完成に修正します.
CPTZButton m_ptzupMC;// CButton m_ptzupMC, CPTZButton m_ptzupMC

7-他に弾発イベントを押すボタンを追加する必要がある場合は、6ステップを繰り返して1つずつ追加します.