リージョンについて – プログラミング – Home

通知
すべてクリア

リージョンについて


R
 R
(@R)
ゲスト
結合: 22年前
投稿: 48
Topic starter  

お世話になります。

現在、SDIのViewを領域ごとに分けたくて
CreateRectRgn関数で領域を分けたのですが

領域を分けることができているのか
試しに、DeleteObject関数を読んでみたところ
すべてのViewが空洞となってしまっています。

CRgn hPView1;
hPView1.CreateRectRgn(0, 0, 100, 100);

CRgn hPView2;
hPView2.CreateRectRgn(100,100,100,100);

SetWindowRgn(hPView1,TRUE);
DeleteObject(hPView1);

うまくいきません。アドバイス宜しくお願い致します。


引用解決済
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

やっている事の意味がわかりません。
リージョンをDeleteObjectして何がしたいのでしょう?
あと、リージョンの設定は描画範囲の指定をしているだけで
GDIオブジェクトを削除する事とは直接関係があるとは思えないのですが。

変数名も紛らわしいような気がします。
hPViewだとViewのハンドル用に見えます。
もっと直感的にわかる変数名の付け方の方が良いと思います。

あと、使っている開発環境の説明が全く無いので
質問をする時は毎回必ず書くようにお願いします。


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

あと、MSDNを確認すると

SetWindowRgn 関数が成功すると、システムは、パラメータ hRgn で指定したリージョン
を所有します。
システムは、このリージョンのコピーを作成しません。
したがって、これ以降はこのリージョンハンドルに対して関数を呼び出すべきではありま
せん。
特に、このリージョンハンドルを削除しないでください。
必要がなくなると、システムはこのリージョンハンドルを自動的に削除します。

とあります。
ご自分でも確認してみてください。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 現在、SDIのViewを領域ごとに分けたくて
> CreateRectRgn関数で領域を分けたのですが

Viewの分割は、CSplitterWndを使うのが一般的かと。
http://www.athomejp.com/goldfish/mfc/cobject/3viewwindow.asp

リージョンの使用例としては、次のようなもの。
http://www.kumei.ne.jp/c_lang/sdk/sdk_48.htm
http://www.kumei.ne.jp/c_lang/sdk2/sdk_125.htm
(いずれも非MFCのサンプルなので、CRgnでなくHRGNが使われてる)

その上で、何がやりたいのか分かりやすく書いてもらえると良いと思う。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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