PCに入ってる画像を表示するには? – 固定ページ 2 – プログラミング – Home

PCに入ってる画像を表示するには?
 
通知
すべてクリア

[解決済] PCに入ってる画像を表示するには?

固定ページ 2 / 2

JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

void CReusuView::OnFileOpen()
{
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
CReusuDoc* pDoc = GetDocument();
CFileDialog dlg(TRUE,bmp,*bmp);
if(dlg.DoModal()==IDOK){
pDoc->m_ga =dlg.GetPathName();
}

}
として
void CReusuView::OnInitialUpdate()
{
  CView::OnInitialUpdate();
  CReusuDoc* pDoc = GetDocument();

  m_bitmap.Attach(
  LoadImage(AfxGetInstanceHandle(),
  pDoc->m_ga,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE));
}

したのですがエラーはでなくなったのですが開くをやっても画像がでてきません


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

OnInitialUpdate() がどのような関数であるかご存知ですか?


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

ビューが表示される直前によばれる関数ですよね?


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

ビューが表示される直前によばれる関数ですよね?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

OnFileOpen/OnInitialUpdateの両方にbreak-pointを仕掛け、
どちらが先に呼ばれるか確認したほうがいい。

# いずれにせよ やりかたがヘン
# すくなくとも OnInitialUpdateでやるのはすごくヘン


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

void CReusuView::OnDraw(CDC* pDC)
{
CReusuDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
m_bitmap.Attach(
LoadImage(AfxGetInstanceHandle(),
pDoc->m_ga,IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION | LR_LOADFROMFILE));

pDC->DrawState(0,48,&m_bitmap,DSS_NORMAL);

}

void CReusuView::OnFileOpen()
{
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
CReusuDoc* pDoc = GetDocument();
CFileDialog dlg(TRUE,bmp,*bmp);
if(dlg.DoModal()==IDOK){
pDoc->m_ga =dlg.GetPathName();
}

}

としました 
やはり先ほどと同じ結果になりました

>OnFileOpen/OnInitialUpdateの両方にbreak-pointを仕掛け、
>どちらが先に呼ばれるか確認したほうがいい。

確認したところOnFileOpenのほうが先によばれていました


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

以下のことを確認してみてください。
・OnFileOpenでファイルを選択した後、pDoc->m_gaに期待した値が入っているか。
・画像をロードする部分でpDoc->m_gaに期待した値が入っているか。
・画像のロードは成功しているか。
・OnFileOpenで操作しているpDocとOnDrawで操作しているpDocは、同じものか。

また、確認した所で、期待通りでなかった場合、
なぜ期待通りにならないのか分析/予想をお聞かせください。


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

開くをしたあとにpDoc->m_gaには値は入っていないみたいです
そして開くしウインドウサイズなどさわると

Debug Assertion Failed

Program
File windi.cpp
Line 1120

というエラーが起こります。
考えたところ
開くの処理がダメのようなのですが
間違った書き方をしてるのでしょうか
ご意見お願いします。


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

上のプログラムでは
パスの取得、画像表示ができましたが
ウインドウのサイズをかえると

Debug Assertion Failed

Program
File windi.cpp
Line 1120
がでました


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 24年前
投稿: 180
 

…だから、回答者はあなたと違って、テレパシーは使えないんだけどなぁ
「今私が書いてる、あるプログラムの1120行目でエラーが出ます。教えて下さい。」
という情報で、あなたは何かわかるのですか?


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 23年前
投稿: 160
 

> File windi.cpp
> Line 1120

コピペミスでwingdi.cppではないかと……

BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
ASSERT(m_hObject == NULL); // only attach once, detach on destroy
if (hObject == NULL)
return FALSE;
CHandleMap* pMap = afxMapHGDIOBJ(TRUE); // create map if not exist
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hObject = hObject, this);
return TRUE;
}
の最初のASSERTがwingdi.cppの1120行目ですが。


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 24年前
投稿: 180
 

コピペミスというか、手書きミスですね。
つーか、肝心な情報を確認もせずに間違えたまま書き込む感覚が理解できない。
回答欲しくないんじゃなかろうか…

> ASSERT(m_hObject == NULL); // only attach once, detach on destroy

まあ、まともにコメントすると、only attach onceのとおりかと。
Windowのサイズを変えるだけじゃなくて、Windowを動かしたり、上に別のWindowを重ねて
からどかしてりしても、Debug Assertion Failedとなるでしょうね。
OnDrawがどういう時に呼ばれるのかを勉強して下さい。
そこで毎回ビットマップのロード、GDIオブジェクトへのAttachをしているのが問題。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

プログラミングの入門書とか参考書は、一冊持っていればOKというわけではなくて
自分が持っている本では足りないのであれば、他に本を買い足すとかしないと
とても追いつかないですよ。

特に独学で何とかしようとしているのであれば、
手元にいつも置いておけてすぐに見ることが出来る本が何冊も必要です。
それぞれの本によって得意分野が異なりますからね。
持っている本に載っていないのであれば、載っている本を探しましょうよ。
本を探すのにネットを使ってもいいわけですしね。

どうも断片的な知識だけでプログラミングを進めようとしているみたいなので、
知識をきちんと整理しないと先に進めないと思います。
MFCを使ったフレームワークでどういう実装していくのかを書いてある本が
良いんですけれどね。
MFCプログラミングの入門書って何か良いのありましたかねぇ。
私は実際にプログラミングしながら覚えたので、
体系的に書いてある本を読んだ事が無くて
よく知らないんです。
最近の本でよい物があれば、教えてあげた方が良いかも。


返信引用
JAK
 JAK
(@JAK)
ゲスト
結合: 21年前
投稿: 15
Topic starter  

すいませんでした 画像表示することはできました


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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