親ウィンドウでイベント処理をする – プログラミング – Home

親ウィンドウでイベント処理をする
 
通知
すべてクリア

親ウィンドウでイベント処理をする


SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

子クラスで受けたWM_NCHITTESTのイベントを親ウィンドウで
処理させたいのですがその場合、どうしたらいいのでしょうか?

親にメッセージを送る?のが一番いい方法なのでしょうか?
その場合は、親ウィンドウのWinProc?で処理させるのでしょうか?

初心者ですみません。

LRESULT CViewTest::OnNcHitTest(CPoint point)
{
return CWnd::OnNcHitTest(point);
}


引用解決済
トピックタグ
SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

すみません、説明を追加します。
親ウィンドウで子ウィンドウ(親と同じサイズ)を作成し
親ウィンドウと子ウィンドウを一緒に移動させたいのです。

子で下記のようにすると子だけが動いてしまいます。
親と子を一緒に移動させるにはどうしたらいいでしょうか?

LRESULT CViewTest::OnNcHitTest(CPoint point)
{
return return HTCAPTION;
}


返信引用
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

↓こんな感じでどうでしょうか?

LRESULT CViewTest::OnNcHitTest(CPoint point)
{
return HTTRANSPARENT;
}

LRESULT 親ウィンドウ::OnNcHitTest(CPoint point)
{
LRESULT result = 基本クラス::OnNcHitTest(point);
if (result == HTCLIENT)
return HTCAPTION;
else
return result;
}

HTTRANSPARENTを返せば、自身をすり抜けて後ろのウィンドウ
(すなわち親ウィンドウ)にWM_NCHITTESTメッセージが流れます。

複数の子ウィンドウが重なっているようなケースでは上手く
いかないかもしれません。


返信引用
SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

ありがとうございます。
これで親ウィンドウを移動させることができました。

同じようにして右端にある場合は、サイズを変更するみたいなことが
なことをしたいのですが、これだとHTBOTTOMRIGHTが飛んできません。
こういう使い方はできないということなのでしょうか?

LRESULT 親ウィンドウ::OnNcHitTest(CPoint point)
{
LRESULT result = 基本クラス::OnNcHitTest(point);
  
  if (result == HTBOTTOMRIGHT)
//処理?? 

if (result == HTCLIENT)
return HTCAPTION;
else
return result;
}


返信引用
SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

下記のようにようにすればウィンドウの移動とサイズ変更が可能になりました。
サイズ変更する場合は、子ウィンドウのサイズが変更されません。
子ウィンドウのサイズをMoveWindowで変更するしか方法はないのでしょうか?

LRESULT 親ウィンドウ::OnNcHitTest(CPoint point)
{  
  LRESULT result = 基本クラス::OnNcHitTest(point);

  if (point タイトルバーのマウスが範囲内だったら)
return HTCAPTION;

  if (point サイズ変更可能な範囲内だったら)
return HTBOTTOMRIGHT;

  return result;
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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