最初から画像表示

解決


絵心  2007-08-30 05:59:38  No: 66140

このソースをOnInitDialog関数に書いても動作しません。
クリックすれば画像表示するようです。
デザイン用の画像なので最初から表示したいのですが表示しません。
どうしたらよろしいのですか?

CDC* myPictDC = m_pict.GetDC();        // 現在のDCを取得

    CDC workDC;                            // 作業用DC
    CBitmap myBMP;                         // ビットマップ処理用オブジェクト

    CRect myRECT;
    m_pict.GetClientRect(myRECT);          // サイズ取得
    myPictDC->FillSolidRect(myRECT, RGB(255, 255, 255)); // 全域を白で塗り潰す

    myBMP.LoadBitmap(IDB_BITMAP1);         // 画像読込
    workDC.CreateCompatibleDC(myPictDC);   // myPictDCと互換性のあるメモリDC
                                           // を作成する
    CBitmap* oldBMP = workDC.SelectObject(&myBMP);  // myBMP選択
    myPictDC->BitBlt(0, 0, 256, 192, &workDC, 0, 0, SRCCOPY); // 画像転送
    workDC.SelectObject(oldBMP);           // 元のビットマップに戻す
    m_pict.ReleaseDC(myPictDC);


wclrp ( 'o')  2007-08-30 06:20:54  No: 66141

FAQみたいなもんだな。

OnInitDialogの時点ではウィンドウの描画前なので。

m_pictは子ウィンドウだと思うが
親ウィンドウで描画しても
タイミングによってはその後にm_pictが自分を描画することがある。
どういうタイミングかと聞かれても困るけど
そうなる可能性がある。

描画させたいときWM_PAINTが呼ばれます。
WM_PAINTで描画するのが基本。
こう言うとむかつくかもしれないが
基本だし
たくさん情報があるはずだからWebや本で調べてください。

m_pictを見えないウィンドウにして座標を示す目的だけに使用して
ダイアログのWM_PAINTでダイアログのDCで描画する手もある。


絵心  2007-08-30 07:31:24  No: 66142

ありがとうございます!おかげで解決しました!


絵心  2007-08-30 07:31:42  No: 66143

すいません、解決です!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加