SelectObjectについて – プログラミング – Home

通知
すべてクリア

[解決済] SelectObjectについて


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

パワーポイントのスライドを読み込んで表示するプログラムを
作っています

すべてのスライドを表示するモードをつけたいので
新しいスライドを開くたびにスライドをビットマップで保存して、
すべてのスライドを表示するようにしているのですが
全画面表示するたびに一つずつSelectObjectに値が読み込まれなくなっていきます

プログラムは

HBITMAP Slide[50];という配列に
新しいスライドが表示されるたびに画像を保存します

そして
SelectObject(hmdc, Slide[i*Column+j+1]);でオブジェクトを選択し

StretchBlt(hdc, j*Width, i*Hight, BMP_W/Column, BMP_H/Column, hmdc, 0, 0, BMP_W,
BMP_H, SRCAND);
でスライド枚数に合わせた表示をします

SelectObjectでオブジェクトを選択すると
保存したオブジェクトは削除されますか??


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

あるHDCに選択中のビットマップは、他のHDCに選択することは
できません。

HBITMAP hbmp_old = ( HBITMAP)::SelectObject( hmdc, Slide[i*Column+j+1]);

: // 何らかの処理

SelectObject( hmdc, hbmp_old); // 選択したBMPの選択を外す

のような「選択を外す」処理がされていない疑いがあります。
この辺は大丈夫ですか。


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

ここに書かれているコードだけでは何とも。

ただ、ビットマップのオブジェクトはハンドルを
破棄しない限りは無効にはならないと思います。
ここに書かれている内容ではハンドルが無効になっているのか
ハンドルは有効だけど、ビットマップの内容が消えてしまって
いるのかがわかりません。
(多分真っ黒になっているのではと予想していますが)

質問する場合、起こっている現象を出来る限り具体的に
説明してください。関数呼び出しでエラーが発生しているので
あればその内容まで。

提示されているコードも元のコードを行ごと貼り付けているのか
行の内の一部を貼り付けているのかわかりませんし、
関数呼び出し時の返却値を受け取る部分の記述も無いので
これで判断するのは無理です。

少なくとも状況を再現できる最小のコードを提示する必要があります。
もっとも、最小のコードを探っている内に間違いに気がつくケースは
少なく無いと思いますけれど。


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

仲澤@失業者さんPATIO さん
ありがとうございます

仲澤@失業者さんのおっしゃった通り
選択を外すを言う処理ができていませんでした。


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

解決にチェックし忘れました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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