![]()
|
![]()
#ifndef _CEFANLIB_H_
#define _CEFANLIB_H_
//*************************************************************************
// MFCを使わない人のためのCEFANらくちんライブラリヘッダファイル
// CeFanLib.h
// 作成 :Ver 0.1 2000/09/09 かっぴー@WindowsCE FAN
// 更新歴:
//*************************************************************************
#include <Windows.h>
#include <Windowsx.h>
#define CEFANWIN_DEFAULT 0
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリのベースクラスです。
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
class CEFANBase
{
public:
static HINSTANCE m_hInst;
HWND m_hWnd; //ウィンドウハンドル
HWND m_hPWnd;//親ウィンドウハンドル
HMENU m_hMenu;//メニューハンドル
CEFANBase() {
m_hWnd = m_hPWnd = NULL;
m_hMenu = NULL;
};
~CEFANBase() {};
LRESULT Show(int mode = SW_SHOW );
LRESULT MoveToCenter(BOOL bRepaint = TRUE);
};
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANWin/Dlgクラス用のメッセージ分岐処理を簡単に書くためのマクロです。
// ATLの実装方法とよくにています。
// 作成 :Ver 0.1 2000/09/09 かっぴー@WindowsCE FAN
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#define BEGIN_MSG_MAP()\
public: \
LRESULT ProcessWindowMessage(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam ) \
{ \
BOOL done = false;\
LRESULT lResult;
#define MESSAGE_HANDLER( MsgToBeHandled, FunctionName ) \
if( uMessage == MsgToBeHandled ){ \
done = TRUE; \
lResult = FunctionName(uMessage, wParam, lParam, done ); \
if(done)return lResult; \
}
#define COMMAND_HANDLER( CmdIdToBeHandled, FunctionName) \
if(uMessage == WM_COMMAND && LOWORD(wParam) == CmdIdToBeHandled){ \
done = TRUE; \
lResult = FunctionName(uMessage, wParam, lParam, done ); \
if(done)return lResult; \
}
#define END_MSG_MAP() \
return ::DefWindowProc(hWnd, uMessage, wParam, lParam);\
}
#define BEGIN_DLG_MSG_MAP()\
public: \
BOOL ProcessWindowMessage(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam ) \
{ \
BOOL done = false;\
BOOL lResult;\
#define END_DLG_MSG_MAP() \
return FALSE; \
}
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANWinクラス
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
class CEFANWin : public CEFANBase
{
public:
CEFANWin();
virtual ~CEFANWin();
LRESULT Create( LPCTSTR ClassName, //ウィンドウクラス名
LPCTSTR WinName, //ウィンドウ名(キャプションにでるよ)
DWORD Style=WS_VISIBLE, //ウィンドウスタイル
int x=CW_USEDEFAULT, //ウィンドウ左上X座標
int y=CW_USEDEFAULT, //ウィンドウ左上Y座標
int w=CW_USEDEFAULT, //ウィンドウ幅
int h=CW_USEDEFAULT, //ウィンドウ高さ
HWND hPWin=NULL ); //親ウィンドウハンドル
virtual LRESULT ProcessWindowMessage(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam )=0;
};
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANDlgクラス
//
// WM_INITDIALOGメッセージ応答を行う場合
// SetFocusでダイアログ内コントロールにフォーカスを与えた→FALSE
// SetFocusでダイアログ内コントロールにフォーカスを与えなかった→TRUE
// を返してください。
// それ以外のメッセージに応答を行う場合
// メッセージ処理を行った→TRUE
// メッセージ処理を行わなかった→FALSE
// を返してください。
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
class CEFANDlg : public CEFANBase
{
public:
LRESULT m_ReturnValue;
CEFANDlg();
virtual ~CEFANDlg();
LRESULT Create( LPCTSTR TemplateName, HWND hPWin );
LRESULT SendDlgItemMessage(int id, UINT msg,WPARAM wp, LPARAM lp );
virtual BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)=0;
};
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリ専用初期化ルーチン
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
extern LRESULT CEFANInitialize( HINSTANCE hInst );
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリ専用Windowクラスレジスター
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
extern ATOM CEFANRegisterWinClass( WNDCLASS& WC );
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリデフォルトウィンドウプロシージャ
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
extern LRESULT CALLBACK DefCEFANWinProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam );
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリデフォルトダイアログプロシージャ
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
extern BOOL CALLBACK DefCEFANDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam );
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// CEFANらくちんライブラリダイアログ作成用マクロ
// 十分なマクロがまだ用意されていないので拡張してつかってください。
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#define lpCEFANBUF(ID) BUF##ID
#define CEFAN_TEXTEDIT_DEFINE(ID,MAXLEN) TCHAR BUF##ID[MAXLEN+1]
#define CEFAN_TEXTEDIT_GET(ID,MAXLEN) GetDlgItemText(m_hWnd,ID,BUF##ID,MAXLEN)
#define CEFAN_TEXTEDIT_PUT(ID) SetDlgItemText(m_hWnd,ID,BUF##ID)
#define CEFAN__TEXTEDIT_SETLIMIT(ID,MAXLEN) SendDlgItemMessage(ID,EM_SETLIMITTEXT,MAXLEN,0)
#define CEFAN_CBOX_DEFINE(ID,MAXLEN) TCHAR BUF##ID[MAXLEN+1]
#define CEFAN_CBOX_ADD_STRING(ID,STR) ::SendDlgItemMessage(m_hWnd,ID,CB_ADDSTRING,0,(LPARAM)(LPCSTR)STR )
#define CEFAN_CBOX_SET_SELECTNO(ID,SELNO) ::SendDlgItemMessage(m_hWnd,ID,CB_SETCURSEL,(SELNO),0)
#define CEFAN_CBOX_GET_SELECTNO(ID,HENSUU) (HENSUU)=::::SendDlgItemMessage(m_hWnd,ID,CB_GETCURSEL,0,0)
#define CEFAN_CBOX_GET_SELECTLBTEXT(ID,MAXLEN) {long sn=::SendDlgItemMessage(m_hWnd,ID,CB_GETCURSEL,0,0);\
::SendDlgItemMessage(m_hWnd,ID,CB_GETLBTEXT,sn,(LPARAM) (LPCSTR)BUF##ID );}
#endif
|
===更新履歴===
2000/9/10 初稿
Reported by かっぴー
![]()
(C)2000 Windows CE FAN