2

私の mfc プログラムは、クライアント領域に次の形状を描画します。形状を再配置するために、この横にボタンを配置したいと考えています。

ここに画像の説明を入力

ツールバーまたはメニュー ボタンを使用できることはわかっていますが、ボックスのすぐ隣にボタンを配置する方法はありますか? このようなもの:

ここに画像の説明を入力

4

2 に答える 2

5

を作成し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メッセージ マップを追加することで、他のボタンと同じようにボタンのメッセージに反応できます。

于 2012-09-09T09:50:15.500 に答える