File Annotation

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