Solution46
CWndTitleBar.cpp
[詳解]
1 //=============================================================================
2 /// @file
3 /// タイトルバークラス実装ファイル
4 ///
5 /// タイトルバークラス実装ファイルです。
6 ///
7 /// $Id: CWndTitleBar.cpp 245 2019-03-20 15:03:41Z admin $
8 /// $Date: 2019-03-21 00:03:41 +0900 (2019/03/21 (木)) $
9 /// $Author: admin $
10 ///
11 /// @attention なし
12 
13 #pragma managed( push, off )
14 
15 //=============================================================================
16 // インクルードファイル
17 #include <CWndTitleBar.h>
18 
19 //=============================================================================
20 // ウィンドウライブラリ名前空間
21 namespace LibWindow {
22  //=========================================================================
23  // タイトルバークラス
24  //=========================================================================
25  // 構築子と解体子
26  //-------------------------------------------------------------------------
27  // コンストラクタ
29  // 基底クラスコンストラクタ
30  : CWndBase()
31  {}
32 
33  //=========================================================================
34  // 公開関数
35  //-------------------------------------------------------------------------
36  // ウィンドウ作成関数
37  bool CWndTitleBar::Create( HWND hParent, HMENU hMenu ) noexcept {
38  // 処理ブロック
39  bool result = false;
40  do {
41  // 基底クラスの関数を実行する
42  if ( !CWndBase::Create( hParent, hMenu ) ) {
43  // 失敗!
44  break;
45  }
46 
47  // フォントを設定する
48  ::SendMessageW( m_hWnd, WM_SETFONT, reinterpret_cast< WPARAM >( ::GetStockObject( DEFAULT_GUI_FONT ) ), 0 );
49 
50  // 成功!
51  result = true;
52  } while ( false );
53 
54  // 実行結果を返す
55  return result;
56  }
57 
58  //-------------------------------------------------------------------------
59  // WM_NCHITTESTメッセージ処理関数
60  LRESULT CWndTitleBar::WmNcHitTest() noexcept {
61  // 処理ブロック
62  LRESULT result = 0;
63  do {
64  // マウス右ボタン押下状態を調べる
65  SHORT nState = ::GetKeyState( VK_RBUTTON );
66  if ( 0x8000 != ( 0x8000 & nState ) ) {
67  // ヒットテストコードを取得する
68  result = HTTRANSPARENT;
69 
70  // 終了!
71  break;
72  }
73 
74  // 基底クラスの関数を実行する
75  result = CWndBase::WmNcHitTest();
76  } while ( false );
77 
78  // 実行結果を返す
79  return result;
80  }
81 }
82 
83 #pragma managed( pop )
virtual bool Create(HWND hParent=nullptr, HMENU hMenu=nullptr) noexcept
ウィンドウ作成関数
Definition: CWndBase.cpp:58
タイトルバークラスヘッダファイル
HWND m_hWnd
ウィンドウハンドル
Definition: CWndBase.h:1539
ウィンドウライブラリ名前空間
Definition: CommandIdDef.h:22
virtual LRESULT WmNcHitTest() noexcept
Definition: CWndBase.h:636
基本ウィンドウクラス
Definition: CWndBase.h:31
CWndTitleBar() noexcept
コンストラクタ
virtual bool Create(HWND hParent, HMENU hMenu=nullptr) noexcept override
ウィンドウ作成関数
virtual LRESULT WmNcHitTest() noexcept override
各種メッセージ処理関数