MFCのRUNTIMECLASSの検討
よろしくお愿いします
マルチドキュメントのプログラムでは、InitInstance()という重要な初期化関数にこのようなコードがあります.
************************************************************
CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_PAINTETYPE, RUNTIME_CLASS(CPainterUsePatternDoc), RUNTIME_CLASS(CChildFrame),//custom MDI child frame RUNTIME_CLASS(CPainterUsePatternView)); AddDocTemplate(pDocTemplate);
*************************************************************
奥のRUNTIME_CLASSは見たことがありません.何ですか.
AFXでH内アクティブコード
*************************************************************
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))
#define ASSERT_KINDOF(class_name, object)/ ASSERT((object)->IsKindOf(RUNTIME_CLASS(class_name)))
*************************************************************
この定義は私にはわかりませんが、「##」は何ですか??MSDNで調べた
*************************************************************
//paster(n)をprintf("token"#n"=%d",token#)と定義する
//では
マルチドキュメントのプログラムでは、InitInstance()という重要な初期化関数にこのようなコードがあります.
************************************************************
CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_PAINTETYPE, RUNTIME_CLASS(CPainterUsePatternDoc), RUNTIME_CLASS(CChildFrame),//custom MDI child frame RUNTIME_CLASS(CPainterUsePatternView)); AddDocTemplate(pDocTemplate);
*************************************************************
奥のRUNTIME_CLASSは見たことがありません.何ですか.
AFXでH内アクティブコード
*************************************************************
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))
#define ASSERT_KINDOF(class_name, object)/ ASSERT((object)->IsKindOf(RUNTIME_CLASS(class_name)))
*************************************************************
この定義は私にはわかりませんが、「##」は何ですか??MSDNで調べた
*************************************************************
#define paster( n ) printf( "token" #n " = %d", token##n ) int token9 = 9;
//paster(n)をprintf("token"#n"=%d",token#)と定義する
//では
paster( 9 );//
printf( "token" "9" " = %d", token9 );
//なるprintf( "token9 = %d", token9 );
***********************************************************
'##' ,
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))
マクロ RUNTIME_CLASS(class_name)は((CRuntimeClass*)(&class_name::class##class_name))
class_nameはクラス を すパラメータです
CRuntimeClassは です
class_nameクラスの1つはclassと ばれていますnameの のアドレスを り してクラスを
タイプをstruct CRuntimeClass*タイプに
( き)