いつもお世話になります。
VC++6.0MFCダイアログベースでアプリを開発しているのですが、
ビットマップ画像(100×100)をダイアログに貼り付けています。
円の画像ですが、ビットマップなので四角の画像になっています。
そこで楕円のリージョンを作って、
// 楕円のリージョンを作る
m_rgn.CreateEllipticRgn(0,0,100,100);
// ウィンドウのリージョンを設定する
SetWindowRgn((HRGN)m_rgn ,TRUE);
こんな感じで表示したらウィンドウは丸くなっています。
そこで上記で作成したリージョンの上をマウスがオーバーしたら
画像を差し替えたいのですが、どうしても、ダイアログ
の領域(四角)で反応してしまいます。
CPoint pos;
CRect rect;
GetCursorPos(&pos);
GetWindowRect(&rect);
if (rect.PtInRect(pos)) {
// マウスが上に来ている
m_bMouseOver = TRUE;
} else {
// マウスは上にはない
m_bMouseOver = FALSE;
}
こんな感じでm_bMouseOverの中身を見て画像を差し替えています。
リージョンで作成した楕円の上だけで反応させるには
どのようにすればいいのでしょうか?
わかりにくいかもしれませんがアドバイスよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
あまり MFC には詳しくないのですが、
> GetWindowRect(&rect);
> if (rect.PtInRect(pos)) {
CRect は「矩形領域」を表すクラスですから、四角で反応するのは当たり前でしょう。
リージョンを表すクラス CRgn にも PtInRegion() メソッドがあるので、
それを使ってマウスが上にあるかどうかを判定すれば良いんじゃないか、と。
if (rect.PtInRect(pos)) {
↓
if (m_rgn.PtInRect(pos)) {
って。
ご教授ありがとうございます。
m_rgn.PtInRegion(pos)
で正常動作いたしました。
CRgn にも PtInRegion ってのがあるんですねー。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Illustrator(イラストレーター) ワードに貼った画像のキャンバスと画像本体のサイズの調整 2 2022/05/19 18:31
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- 中古パソコン NEC LaVie Tab E PC-TE508BAW 1 2022/10/25 07:03
- タブレット タブレットのランプ 2 2022/10/25 22:03
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- ホームページ作成・プログラミング さくらサーバーに置いているホームページを改修したいです 2 2022/11/06 17:13
- スピーカー・コンポ・ステレオ ワード。オブジェクトの上に半円を描くには。 2 2022/10/06 13:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArduinoのジャイロモジュールMP...
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 列挙型(enum型)変数について
-
卒業研究でよく分からないとこ...
-
C言語初心者 構造体 課題について
-
C++でデスクトップGUIアプリ開...
-
C言語初心者 構造体 課題について
-
win10で、正確な待ち時間の作り方
-
[C言語]fputsとfprintfの違い
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
C言語初心者 ポインタについて...
-
あなたは、Excelはどうやって学...
-
C言語初心者です、、、お助けく...
-
システムエンジニアの適正について
-
Stuck
-
Notepad++の関数リスト表示の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
-
質問失礼します。 プログラム言...
-
double型が正常に認識されてい...
-
Notepad++の関数リスト表示でC...
-
どちのほうがすきですか?
-
Stuck
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
C言語の関数と配列に関する質問
-
C言語って古いですか?
-
Linuxでの開発環境構築や設定の...
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
c言語
-
大量のデータを読み込んで表示...
-
こんなことてしますか??
おすすめ情報