File Annotation

Not logged in
5128eecc9f 2011-02-23        kinaba: //--- K.I.LIB ---
5128eecc9f 2011-02-23        kinaba: // kl_wnd.h : window information manager
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #ifndef AFX_KIWINDOW_H__26105B94_1E36_42FA_8916_C2F7FB9EF994__INCLUDED_
5128eecc9f 2011-02-23        kinaba: #define AFX_KIWINDOW_H__26105B94_1E36_42FA_8916_C2F7FB9EF994__INCLUDED_
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
5128eecc9f 2011-02-23        kinaba: // kiWindow : Windowの簡単な管理
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class kiWindow
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: friend void kilib_startUp();
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private: //-- グローバルな初期化処理など ---------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	static void init();
5128eecc9f 2011-02-23        kinaba: 	static void finish();
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: public: //-- 外向きインターフェイス --------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 関連付けられているHWND
5128eecc9f 2011-02-23        kinaba: 	HWND hwnd()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return m_hWnd;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// そのWindow用にアクセラレータをロード
5128eecc9f 2011-02-23        kinaba: 	void loadAccel( UINT id );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// ウインドウがまだ残っているかどうかチェック
5128eecc9f 2011-02-23        kinaba: 	bool isAlive()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			if( !m_hWnd )
5128eecc9f 2011-02-23        kinaba: 				return false;
5128eecc9f 2011-02-23        kinaba: 			if( ::IsWindow(m_hWnd) )
5128eecc9f 2011-02-23        kinaba: 				return true;
5128eecc9f 2011-02-23        kinaba: 			m_hWnd = NULL;
5128eecc9f 2011-02-23        kinaba: 			return false;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 親
5128eecc9f 2011-02-23        kinaba: 	kiWindow* parent()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return kiwnd( ::GetParent( hwnd() ) );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// メッセージ送信
5128eecc9f 2011-02-23        kinaba: 	int sendMsg( UINT msg, WPARAM wp=0, LPARAM lp=0 )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return ::SendMessage( hwnd(), msg, wp, lp );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// [static] キューにあるメッセージを全て処理
5128eecc9f 2011-02-23        kinaba: 	static void msg();
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// [static] メッセージループをまわす。
5128eecc9f 2011-02-23        kinaba: 	enum msglooptype {PEEK, GET};
5128eecc9f 2011-02-23        kinaba: 	static void msgLoop( msglooptype type = GET );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// [static] Windowを強制的に front へ
5128eecc9f 2011-02-23        kinaba: 	static void setFront( HWND wnd );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// [static] Windowを中央へ
5128eecc9f 2011-02-23        kinaba: 	static void setCenter( HWND wnd, HWND rel=NULL );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// [static] HWND -> kiWindow ( もしあれば )
5128eecc9f 2011-02-23        kinaba: 	static kiWindow* kiwnd( HWND wnd )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			kiWindow* ptr = (kiWindow*)::GetWindowLong( wnd, GWL_USERDATA );
5128eecc9f 2011-02-23        kinaba: 			if( !ptr ) return NULL;
5128eecc9f 2011-02-23        kinaba: 			if( ::IsBadCodePtr((FARPROC)&ptr) ) return NULL;
5128eecc9f 2011-02-23        kinaba: 			return ptr;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected: //-- 派生クラス向け -----------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 派生クラスは、作成直前にコレを呼ぶこと。
5128eecc9f 2011-02-23        kinaba: 	static void preCreate( kiWindow* wnd )
5128eecc9f 2011-02-23        kinaba: 		{ st_pCurInit = wnd; }
5128eecc9f 2011-02-23        kinaba: 	// 破棄直前にコレを呼ぶこと。
5128eecc9f 2011-02-23        kinaba: 	void detachHwnd();
5128eecc9f 2011-02-23        kinaba: 	// いったんGET/POSTメッセージループを停止
5128eecc9f 2011-02-23        kinaba: 	static void loopbreak()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			loopbreaker = true;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private: //-- 内部処理 -------------------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// ウインドウハンドル設定
5128eecc9f 2011-02-23        kinaba: 	static LRESULT CALLBACK CBTProc( int code, WPARAM wp, LPARAM lp );
5128eecc9f 2011-02-23        kinaba: 	static HHOOK st_hHook;
5128eecc9f 2011-02-23        kinaba: 	static kiWindow* st_pCurInit;
5128eecc9f 2011-02-23        kinaba: 	void setHwnd( HWND wnd )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			m_hWnd = wnd;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// ウインドウ情報保持用変数
5128eecc9f 2011-02-23        kinaba: 	HWND m_hWnd;
5128eecc9f 2011-02-23        kinaba: 	HACCEL m_hAccel;
5128eecc9f 2011-02-23        kinaba: 	// ダイアログメッセージ
5128eecc9f 2011-02-23        kinaba: 	virtual bool isDlgMsg( MSG* msg )
5128eecc9f 2011-02-23        kinaba: 		{ return false; }
5128eecc9f 2011-02-23        kinaba: 	// GETループ一時抜けだし
5128eecc9f 2011-02-23        kinaba: 	static bool loopbreaker;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected:
5128eecc9f 2011-02-23        kinaba: 	kiWindow();
5128eecc9f 2011-02-23        kinaba: public:
5128eecc9f 2011-02-23        kinaba: 	virtual ~kiWindow();
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
5128eecc9f 2011-02-23        kinaba: // kiDialog : DialogをkiWindowとして管理する
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class kiDialog : public kiWindow
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: public: //-- 外向きインターフェイス --------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モーダルダイアログとして実行
5128eecc9f 2011-02-23        kinaba: 	virtual void doModal( HWND parent=NULL );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モードレスダイアログとして作成
5128eecc9f 2011-02-23        kinaba: 	virtual void createModeless( HWND parent=NULL );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 終了コード取得
5128eecc9f 2011-02-23        kinaba: 	UINT getEndCode()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return m_EndCode;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モーダルか否か
5128eecc9f 2011-02-23        kinaba: 	bool isModal()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return m_bStateModal;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// ダイアログアイテム
5128eecc9f 2011-02-23        kinaba: 	int sendMsgToItem( UINT id, UINT msg, WPARAM wp=0, LPARAM lp=0 )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return ::SendDlgItemMessage( hwnd(), id, msg, wp, lp );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 	HWND item( UINT id )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return ::GetDlgItem( hwnd(), id );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected: //-- 派生クラス向け -----------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// リソースIDで初期化
5128eecc9f 2011-02-23        kinaba: 	kiDialog( UINT id );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// リソースID取得
5128eecc9f 2011-02-23        kinaba: 	UINT getRsrcID()
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return m_Rsrc;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 終了コードをセット
5128eecc9f 2011-02-23        kinaba: 	void setEndCode( UINT endcode )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			m_EndCode = endcode;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モーダルか否かのフラグ"のみ"を切替
5128eecc9f 2011-02-23        kinaba: 	void setState( bool modal )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			m_bStateModal = modal;
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 終了コードをセットして、終了する( IDOK を渡しても onOK() は呼ばれないことに注意! )
5128eecc9f 2011-02-23        kinaba: 	virtual void end( UINT endcode );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// コマンド・メッセージ発生時に呼ばれる
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 		// OK -> onOK     -> if true end(IDOK)
5128eecc9f 2011-02-23        kinaba: 		virtual bool onOK() {return true;}
5128eecc9f 2011-02-23        kinaba: 		// 取消 -> onCancel -> if true end(IDCANCEL)
5128eecc9f 2011-02-23        kinaba: 		virtual bool onCancel() {return true;}
5128eecc9f 2011-02-23        kinaba: 		// WM_INITDIALOG      -> onInit
5128eecc9f 2011-02-23        kinaba: 		virtual BOOL onInit() {return FALSE;}
5128eecc9f 2011-02-23        kinaba: 		// WM_????            -> proc
5128eecc9f 2011-02-23        kinaba: 		virtual BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) {return FALSE;}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private: //-- 内部処理 -------------------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	UINT m_EndCode;
5128eecc9f 2011-02-23        kinaba: 	UINT m_Rsrc;
5128eecc9f 2011-02-23        kinaba: 	bool m_bStateModal;
5128eecc9f 2011-02-23        kinaba: 	bool isDlgMsg( MSG* msg )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			return (FALSE!=::IsDialogMessage( hwnd(), msg ));
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 	static BOOL CALLBACK commonDlg( HWND dlg, UINT msg, WPARAM wp, LPARAM lp );
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
5128eecc9f 2011-02-23        kinaba: // kiPropSheet : PropertySheetをkiWindowとして管理する。
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #define IDAPPLY      (0x3021)
5128eecc9f 2011-02-23        kinaba: #define ID_KIPS_HELP (0x0009)
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class kiPropSheetPage : public kiDialog
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: friend class kiPropSheet;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected: //-- 派生クラス向け ----------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// ダイアログやアイコンのIDで初期化
5128eecc9f 2011-02-23        kinaba: 	kiPropSheetPage( UINT dlgid )
5128eecc9f 2011-02-23        kinaba: 		: kiDialog( dlgid ), m_hIcon( NULL ) {}
5128eecc9f 2011-02-23        kinaba: 	void setIcon( HICON h )
5128eecc9f 2011-02-23        kinaba: 		{ m_hIcon = h; }
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// OK/適用 -> page::onOK -> sheet::onOK -> (if ok 終了)
5128eecc9f 2011-02-23        kinaba: 	// virtual bool onOK()
5128eecc9f 2011-02-23        kinaba: 	// WM_INITDIALOG
5128eecc9f 2011-02-23        kinaba: 	// virtual BOOL onInit()
5128eecc9f 2011-02-23        kinaba: 	// その他
5128eecc9f 2011-02-23        kinaba: 	// virtual BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp )
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private: //-- 内部処理 -------------------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void end( UINT endcode ) {}
5128eecc9f 2011-02-23        kinaba: 	void setInfo( PROPSHEETPAGE* p );
5128eecc9f 2011-02-23        kinaba: 	HICON m_hIcon;
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class kiPropSheet : public kiDialog
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: friend class kiPropSheetPage;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: public: //-- 外向きインターフェイス --------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モーダルダイアログとして実行
5128eecc9f 2011-02-23        kinaba: 	void doModal( HWND parent );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// モードレスダイアログとして作成
5128eecc9f 2011-02-23        kinaba: 	void createModeless( HWND parent );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected: //-- 派生クラス向け ----------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// コンストラクタ辺りで↓これをいじるべし
5128eecc9f 2011-02-23        kinaba: 	PROPSHEETHEADER m_Header;
5128eecc9f 2011-02-23        kinaba: 	kiArray<kiPropSheetPage*> m_Pages;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// 終了
5128eecc9f 2011-02-23        kinaba: 	void end( UINT endcode );
5128eecc9f 2011-02-23        kinaba: 	//
5128eecc9f 2011-02-23        kinaba: 	void sendOK2All()
5128eecc9f 2011-02-23        kinaba: 	{
5128eecc9f 2011-02-23        kinaba: 		for( unsigned int i=0;i!=m_Pages.len(); i++ )
5128eecc9f 2011-02-23        kinaba: 			if( m_Pages[i]->isAlive() )
5128eecc9f 2011-02-23        kinaba: 				m_Pages[i]->onOK();
5128eecc9f 2011-02-23        kinaba: 	}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// OK/適用 -> page::onOK -> sheet::onOK -> (if ok 終了)
5128eecc9f 2011-02-23        kinaba: 	// virtual void onOK()
5128eecc9f 2011-02-23        kinaba: 	// キャンセル -> sheet::onCancel -> 終了
5128eecc9f 2011-02-23        kinaba: 	// virtual void onCancel()
5128eecc9f 2011-02-23        kinaba: 	// PSCB_INITIALIZED
5128eecc9f 2011-02-23        kinaba: 	// virtual BOOL onInit()
5128eecc9f 2011-02-23        kinaba: 	// 適用
5128eecc9f 2011-02-23        kinaba: 	virtual void onApply() {}
5128eecc9f 2011-02-23        kinaba: 	// ヘルプ
5128eecc9f 2011-02-23        kinaba: 	virtual void onHelp() {}
5128eecc9f 2011-02-23        kinaba: 	// その他コマンド
5128eecc9f 2011-02-23        kinaba: 	virtual void onCommand( UINT id ) {}
5128eecc9f 2011-02-23        kinaba: 	// ファイルドロップ
5128eecc9f 2011-02-23        kinaba: 	virtual void onDrop( HDROP hdrop ) {}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private: //-- 内部処理 ---------------------------------------
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void begin();
5128eecc9f 2011-02-23        kinaba: 	bool m_bStateModal;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	static kiPropSheet* st_CurInitPS;
5128eecc9f 2011-02-23        kinaba: 	WNDPROC m_DefProc;
5128eecc9f 2011-02-23        kinaba: 	bool isDlgMsg( MSG* msg )
5128eecc9f 2011-02-23        kinaba: 		{ return (FALSE!=PropSheet_IsDialogMessage( hwnd(),msg )); }
5128eecc9f 2011-02-23        kinaba: 	static int CALLBACK main_initProc( HWND dlg, UINT msg, LPARAM lp );
5128eecc9f 2011-02-23        kinaba: 	static LRESULT CALLBACK main_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp );
5128eecc9f 2011-02-23        kinaba: 	static BOOL CALLBACK page_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp );
5128eecc9f 2011-02-23        kinaba: 	static UINT CALLBACK page_initProc( HWND dlg, UINT msg, LPPROPSHEETPAGE ppsp );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: protected:
5128eecc9f 2011-02-23        kinaba: 	kiPropSheet();
5128eecc9f 2011-02-23        kinaba: public:
5128eecc9f 2011-02-23        kinaba: 	~kiPropSheet()
5128eecc9f 2011-02-23        kinaba: 		{ for( unsigned int i=0; i!=m_Pages.len(); i++ ) delete m_Pages[i]; }
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
5128eecc9f 2011-02-23        kinaba: // kiListView : ListViewコントロールの簡単なラッパ
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class kiListView
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: public:
5128eecc9f 2011-02-23        kinaba: 	kiListView( kiDialog* dlg, UINT id )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			m_hWnd = ::GetDlgItem( dlg->hwnd(), id );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void insertColumn( int y, const char* title,
5128eecc9f 2011-02-23        kinaba: 						int width=100, int fmt=LVCFMT_LEFT )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			LVCOLUMN col;
5128eecc9f 2011-02-23        kinaba: 			col.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH;
5128eecc9f 2011-02-23        kinaba: 			col.pszText = const_cast<char*>(title);
5128eecc9f 2011-02-23        kinaba: 			col.cx = width;
5128eecc9f 2011-02-23        kinaba: 			col.fmt = fmt;
5128eecc9f 2011-02-23        kinaba: 			::SendMessage( m_hWnd, LVM_INSERTCOLUMN, y, (LPARAM)&col );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void insertItem( int x, const char* str, LPARAM param=0, int iImage=-1 )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			LVITEM item;
5128eecc9f 2011-02-23        kinaba: 			item.mask = LVIF_TEXT | LVIF_PARAM | (iImage!=-1 ? LVIF_IMAGE : 0);
5128eecc9f 2011-02-23        kinaba: 			item.pszText = const_cast<char*>(str);
5128eecc9f 2011-02-23        kinaba: 			item.iItem = x;
5128eecc9f 2011-02-23        kinaba: 			item.iSubItem = 0;
5128eecc9f 2011-02-23        kinaba: 			item.iImage = iImage;
5128eecc9f 2011-02-23        kinaba: 			item.lParam = param;
5128eecc9f 2011-02-23        kinaba: 			::SendMessage( m_hWnd, LVM_INSERTITEM, 0, (LPARAM)&item );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void setSubItem( int x, int y, const char* str )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			LVITEM item;
5128eecc9f 2011-02-23        kinaba: 			item.mask = LVIF_TEXT;
5128eecc9f 2011-02-23        kinaba: 			item.pszText = const_cast<char*>(str);
5128eecc9f 2011-02-23        kinaba: 			item.iItem = x;
5128eecc9f 2011-02-23        kinaba: 			item.iSubItem = y;
5128eecc9f 2011-02-23        kinaba: 			::SendMessage( m_hWnd, LVM_SETITEM, 0, (LPARAM)&item );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	void setImageList( HIMAGELIST Large, HIMAGELIST Small )
5128eecc9f 2011-02-23        kinaba: 		{
5128eecc9f 2011-02-23        kinaba: 			::SendMessage( m_hWnd, LVM_SETIMAGELIST, LVSIL_NORMAL, (LPARAM)Large );
5128eecc9f 2011-02-23        kinaba: 			::SendMessage( m_hWnd, LVM_SETIMAGELIST, LVSIL_SMALL,  (LPARAM)Small );
5128eecc9f 2011-02-23        kinaba: 		}
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private:
5128eecc9f 2011-02-23        kinaba: 	HWND m_hWnd;
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #endif