MFC ActiveX(OCX)の作成について

[戻る]
なおぞう 2017/08/23(水) 17:20:36
お世話になります。

開発環境Win7 VisualStudio2010 VC++ MFC でHtmlに載せるActiveX(OCX)を作成しています。

OCXの作成は初めてでして、ネットでいろいろ調べているのですがなかなか思うように表
示できません。(ブラウザはIE11です)
※ActiveXのデフォルトの円表示はできているので、HTMLへの組み込みは間違えていません。
OCXのサンプルも見つけられず、以下のようなコードを書いてみたのですがHTML画面は
真っ白になってしまいます。
何が悪いのか、ご指摘を戴けますようお願い致します。
JPGファイルを使うのでGDI+を利用する事にしました。


CMyTESTCtrl::CMyTESTCtrl() //コンストラクタでGDI+開始
{
  InitializeIIDs(&IID_DMyTEST, &IID_DMyTESTEvents);
  Gdiplus::GdiplusStartupInput input;
  Gdiplus::GdiplusStartup(&token,&input,NULL);
}


CMyTESTCtrl::~CMyTESTCtrl() //デストラクタでGDI+終了
{
  Gdiplus::GdiplusShutdown(token);//ISHII ADD
}

// OnDraw - 描画関数で、画像表示
void CMyTESTCtrl::OnDraw( 
  CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
    if (!pdc)
        return;


  // GDI+のGraphicsオブジェクトを用意して描画準備
    HDC hdc = pdc->GetSafeHdc();
    Gdiplus::Graphics graphics(hdc)

    Gdiplus::Image image(L"..\\test.JPG");
    graphics.DrawImage( &image, 0, 0 );

}

また、他にもボタンやらラベルやら用意しなくてはならないのですが、どうしたら実現出
来るのか分からない状態です。VC++でのOCXのことが書いてある書籍やサンプルHPなどを
ご存知でしたら教えていただけると大変助かります。よろしくお願いします。

ITO 2017/08/26(土) 15:52:19
https://msdn.microsoft.com/ja-jp/library/yc13as7d.aspx

これはどうかな?

なおぞう 2017/08/28(月) 14:10:27
>ITOさま

いつもありがとうございます。
やっと、画像を表示する事ができました。(更に写真表示枠を作りその中にて画像の大き
さや位置を調整するという作業があるので先は長いです)

以下のコードで実現できました。

if (!pdc)
  return;

HDC hdc = pdc->GetSafeHdc();
Gdiplus::Graphics graphics(hdc);
Gdiplus::Image image(L"C:\\tmp\\IMG.JPG");

int width = image.GetWidth();
int height = image.GetHeight();

Gdiplus::Bitmap offScreenBitmap(width, height);
Gdiplus::Graphics offScreen(&offScreenBitmap);

// 描画処理 ↓この書き方で画像のちらつきがなくなるみたいです
offScreen.DrawImage(&image , 0 , 0);
graphics.DrawImage(&offScreenBitmap, 0, 0);

これからもよろしくお願いします。

なおぞう 2017/08/28(月) 14:10:42
[[解決]]
クローズ忘れました。

ITO 2017/08/31(木) 10:47:28
>(更に写真表示枠を作りその中にて画像の大き
>さや位置を調整するという作業があるので先は長いです)
FormViewにして、picture controlを使えば枠等も楽かも知れません。

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