ビットマップ


あい  2003-01-15 22:22:04  No: 50932  IP: [192.*.*.*]

ダイヤログのピクチャーボックスに描かれた絵をウインドウを閉じたり、縮小しても消えないようにしたいです。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);

編集 削除
YuO  2003-01-15 22:54:52  No: 50933  IP: [192.*.*.*]

そりゃ,単に描画してもだめでしょう。
CStatic::SetBitmapあたりを使えばいいです。

とりあえず,Windowsのシステムを知るのが先かな?

編集 削除
あい  2003-01-15 23:40:48  No: 50934  IP: [192.*.*.*]

一応SDI形式です

編集 削除
dson  2003-01-22 02:00:45  No: 50935  IP: [192.*.*.*]

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;
    }       
}

こんな感じかな?

編集 削除