私の mfc プログラムは、クライアント領域に次の形状を描画します。形状を再配置するために、この横にボタンを配置したいと考えています。
ツールバーまたはメニュー ボタンを使用できることはわかっていますが、ボックスのすぐ隣にボタンを配置する方法はありますか? このようなもの:
私の mfc プログラムは、クライアント領域に次の形状を描画します。形状を再配置するために、この横にボタンを配置したいと考えています。
ツールバーまたはメニュー ボタンを使用できることはわかっていますが、ボックスのすぐ隣にボタンを配置する方法はありますか? このようなもの:
を作成しCButton
、適切に配置するだけです。
//.h
#define MYBUTTONID 10000 //or whatever doesn't conflict with your existing resources
public class CMyVew : public CView
{
CButton m_Button;
virtual void OnInitialUpdate();
void RepositionButton();
}
//.cpp
void CMyVew::OnInitialUpdate()
{
//this creates the actual button GUI window
m_Button.Create("Rearrange", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(0,0,0,0), this, MYBUTTONID);
RepositionButton();
}
void CMyVew::RepositionButton()
{
//work out button position you need
m_Button.MoveWindow(x, y, width, height);
}
ボタンは一度だけ作成され、描画自体を処理することに注意してください。などなど気にする必要はありませんOnDraw()
。
心配する必要があるのは、ボタンの位置を移動するときだけです。これが、機能を分離した理由ですRepositionButton()
。たとえば、 を使用していCScrollView
て、ユーザーがスクロールした場合、ボタン ウィンドウはこれを認識しないため、スクロール イベントに反応して呼び出す必要があります。RepositionButton()
ON_BTN_CLICKED
メッセージ マップを追加することで、他のボタンと同じようにボタンのメッセージに反応できます。