ダイヤログのピクチャーボックスに描かれた絵をウインドウを閉じたり、縮小しても消えないようにしたいです。BITMAPINFOHEADERやStretchDIBitsを使えばいいのかなとおもうのですけど、やり方がいまいちわかりません・・教えてください。
私が足したプログラムは次のだけです。
void CMy00000View::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
int x, y;
CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
CPen* oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);
そりゃ,単に描画してもだめでしょう。
CStatic::SetBitmapあたりを使えばいいです。
とりあえず,Windowsのシステムを知るのが先かな?
一応SDI形式です
OnPaint関数内にコードを書き込んでも問題ないと思います。
void CTestView::OnButton1()
{
m_BtnNo = 1;
Invalidate(FALSE);
}
void CTestView::OnButton2()
{
m_BtnNo = 2;
Invalidate(FALSE);
}
void CTestView::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト
int x, y;
CRect r;
CWnd* h;
CDC* pDC;
CPen* oldp;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
switch( m_BtnNo )
{
// ボタン1の処理
case 1:
h = GetDlgItem(IDC_FIGURE);
h->GetClientRect(r);
pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);
break;
// ボタン2の処理
case 2:
CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
pDC->FillSolidRect(0,0,r.right,r.bottom,
RGB(255,255,255));
break;
}
}
こんな感じかな?
ツイート | ![]() |