bitmapの保存 – プログラミング – Home

通知
すべてクリア

[解決済] bitmapの保存


kei
 kei
(@kei)
ゲスト
結合: 23年前
投稿: 43
Topic starter  

【環境:Win98,VC++6.0,MFC】
始めまして、VC++初心者です。

View初期表示前にメモリ上にビットマップを作成しておき、
そのビットマップをファイルに保存したいと考えています。
ビットマップを保存する際、ビットマップオブジェクトのポインタがうまく取得できません。
以下(1)のように作成したビットマップをGetCurrentBitmap()で取得はできないのでしょう
か?

(1)ビットマップ作成
void CPenDeviceView::OnInitialUpdate()
{
CClientDC dc(this) ;
if (m_dcPlot.GetSafeHdc() == NULL)
{
  m_dcPlot.CreateCompatibleDC(&dc) ;
  m_bmpPlot.CreateCompatibleBitmap(&dc, m_PicSize.cx, m_PicSize.cy) ;
  m_pbmpOldPlot = m_dcPlot.SelectObject(&m_bmpPlot) ;
  m_dcPlot.BitBlt( 0, 0, m_PicSize.cx, m_PicSize.cy, NULL, 0, 0, WHITENESS );
 }
}

(2)ビットマップ保存
void CPenDeviceDoc::OnFileSaveAs()
{
 CPenDeviceView *pView = (CPenDeviceView *)((CMainFrame*)AfxGetMainWnd());
 SaveBmp( &(pView->m_dcPlot) );
}
void CPenDeviceDoc::SaveBmp(CDC* pDC)
{
 BITMAP bmp;
 CBitmap *pbmp;
 try
 {
   pbmp = pDC->GetCurrentBitmap(); <-- ここがうまくいかず、
   pbmp->GetBitmap( &bmp );  <-- ここでエラーが発生。
    ・・以下省略 ・・
 }
}


引用未解決
トピックタグ
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 24年前
投稿: 76
 

>CPenDeviceView *pView = (CPenDeviceView *)((CMainFrame*)AfxGetMainWnd());

pViewが本当にビューへのポインタなのかをまず確認してください。
違っていた場合は、フレームウィンドウクラス(CFrameWnd)のメンバの中から、
ビューを取得する関数を探してみてください。


返信引用
kei
 kei
(@kei)
ゲスト
結合: 23年前
投稿: 43
Topic starter  

ビューの取得を以下のように変更したらうまくいきました。
ありがとうございました。

 CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
 CPenDeviceView *pView = (CPenDeviceView *) pFrame->GetActiveView();


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました