TNB Library
TnbDummyWindowEx.h
[詳解]
1#pragma once
11#include "TnbDummyWindow.h"
12#include "TnbThreadDispatch.h"
13
14
15
16//TNB Library
17namespace TNB
18{
19
20
21
35{
36 DEFSUPER(CDummyWindow);
37public:
38
43 CDummyWindowEx(UINT cmc = 0xBFFF)
44 {
45 m_in.m_pPartner = this;
46 m_in.m_createMessage = cmc;
47 }
48
60 bool CreateByTemplate(CDummyWindowEx::IListener* I, UINT templateId, HWND hParent = NULL)
61 {
62 Destroy();
63 m_in.m_pListener = I;
64 m_in.m_templateId = templateId;
65 m_thread.SetListener(&m_in);
66 #ifdef _DEBUG
67 m_thread.Start(_T("CDummyWindowEx::MessagePump"));
68 #else
69 m_thread.Start();
70 #endif
71 m_thread.PostMessage(m_in.m_createMessage);
72 loop ( i, 10 )
73 {
74 if ( IsWindow() )
75 {
76 return true;
77 }
78 ::Sleep(100);
79 }
80 Destroy();
81 return false;
82 }
83
87 void Destroy(void)
88 {
89 m_thread.Stop();
90 }
91
92private:
94 bool Create(CDummyWindow::IListener* I, LPCTSTR lpszTitle = NULL, LPCTSTR lpszClassName = NULL, DWORD dwStyle = WS_OVERLAPPEDWINDOW, HMENU hMenu = NULL, HWND hParent = NULL);
96 void SetBrush(HBRUSH b);
97
99 class CInner : public CThreadDispatch::IListener
100 {
101 public:
102 CDummyWindowEx* m_pPartner;
103 CDummyWindow::IListener* m_pListener;
104 UINT m_templateId;
105 UINT m_createMessage;
111 virtual void OnThreadDispatchSetup(void)
112 {
113 }
123 virtual bool OnThreadDispatchReceive(UINT nMsg, WPARAM wParam, LPARAM lParam)
124 {
125 if ( nMsg == m_createMessage )
126 {
127 m_pPartner->_super::CreateByTemplate(m_pListener, m_templateId, NULL);
128 }
129 else if ( nMsg == WM_QUIT )
130 {
131 m_pPartner->_super::Destroy();
132 }
133 return true;
134 }
135 };
136
137 CThreadDispatch m_thread;
138 CInner m_in;
139};
140
141
142
143};
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
ダミーウィンドウ関係のヘッダ
スレッド処理関係のヘッダ
拡張ダミーウィンドウクラス
CDummyWindowEx(UINT cmc=0xBFFF)
コンストラクタ.
void Destroy(void)
[操作] ウィンドウの破棄.
bool CreateByTemplate(CDummyWindowEx::IListener *I, UINT templateId, HWND hParent=NULL)
[操作] ウィンドウの作成(テンプレート使用).
ダミーウィンドウクラス
bool IsWindow(void) const
[確認] ウィンドウの有無.
スレッド処理制御クラス
bool PostMessage(UINT nMsg, WPARAM wParam=0, LPARAM lParam=0) const
[設定] スレッドへPostMessage
void SetListener(IListener *piListener)
[登録] リスナー登録
bool Start(LPCTSTR lpszName=NULL)
[設定] スレッド開始
bool Stop(void)
[設定] スレッド停止
TNB Library
Definition: TnbDoxyTitle.txt:2
ダミーウィンドウクラスのリスナーインターフェース
スレッド処理制御のリスナーインターフェース