ActiveXにおけるコントロール貼り付け時のBitmap表示について

[戻る]
ゆき 2003/12/01(月) 10:43:42
ゆきと申します。

VC++ 6.0を使用して、ActiveXを作成していますが、VB上で、作成した
OCX(コントロール)をフォームに貼り付けると、貼り付けたコントロールの
ビットマップが画面に表示されません。
以下のようにしていますが、何故でしょうか?
誰か、教えて頂けませんでしょうか?

void CxxxCtrl::OnDraw(
     CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
    CBitmap bitmap

    bitmap.LoadBitmap(IDB_CTRLBITMAP);

    BITMAP bim;
    bitmap.GetBitmap(&bim);

    CDC dcImg;

    if (!dcImg.CreateCompatibleDC(pdc))
        return;

    CBitmap* pOBitmap = dcImg.SelectObject(&bitmap);

    pdc->BitBlt(0, 0, bim.bmWidth, bim.bmHeight, &dcImg, 0, 0, SRCCOPY);
    dcImage.SelectObject(pOBitmap);
}

OSは、Win2000です。
IDB_CTRLBITMAPは、リソース上でのビットマップで、32×32です。
ツールバー上のコントロールは表示されます。
pdc->FillRectなどで、塗りつぶしを行うと表示されます。

それでは、宜しくお願いします。

επιστημη [E-Mail] [HomePage] 2003/12/01(月) 11:23:46
VC++超初心者会議室 に全く同じ投稿がありました。
マルチポストはマナー違反です。

# 発言される前に「使用上の注意」を必ずお読み下さい。
# http://rararahp.cool.ne.jp/cgi-bin/lng/lng.htm

... 2003/12/01(月) 16:28:56
>    dcImage.SelectObject(pOBitmap);
は
     dcImg.SelectObject(pOBitmap);

だと思いますが、ActiveX ControlWizardで作成したプロジェクトに
上記ソースのみ記述して作ってみたらVB上でフォームに貼り付けても
正しく表示されました。
ActiveX Test コンテナでもうまく表示されませんか?

これだけの部分のプロジェクトを一度作成して試してみてはどうでしょう。


私が良くやるのがVBに貼り付けてVBを終了しないままビルドして
OCX作成に失敗してたり。
>リンク中...
>LINK : fatal error LNK1104: ファイル "Debug/ActXXXX.ocx" を開けません。


試した環境は
OS Win2000
VS  SP5です。

ゆき 2003/12/01(月) 17:41:24
[[解決]]
>    dcImage.SelectObject(pOBitmap);
は
     dcImg.SelectObject(pOBitmap);

の間違いでした。すいません。

もう一度、プロジェクトを作成し直して、実行してみたら、うまく表示されました。

ありがとうごじました。

古いスレッドには追加発言できません。