SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送
メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

dKingyoMacro.h

解説を見る。
00001 
00002 
00003 #include "dkutilConfig.h"
00004 
00005 
00006 #ifndef DKINGYO_MACRO____//一回だけ読み込む
00007 #define DKINGYO_MACRO____
00008 
00009 
00011 #define VISUAL_LASTERROR() \
00012 {\
00013   LPVOID lpMsgBuf;\
00014   FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,\
00015                NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );\
00016   ::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );\
00017   LocalFree( lpMsgBuf );\
00018 }
00019 
00020 #ifdef _DEBUG
00021 
00022 #   define DEBUGMB(s) MessageBox(NULL,s,"DEBUG MESSAGE BOX",MB_OK)
00023 #else
00024 #   define DEBUGMB(s)
00025 #endif
00026 
00027 #define MB(str) MessageBox(NULL,str,"Message",MB_OK)//MessageBox
00028 
00029 #define ODS(str) OutputDebugString(str)//OutputDebugString
00030 
00032 #define SWAP_NUM(a,b) \
00033     a = b - a ;\
00034     b -= a ;\
00035     a += b 
00036 
00037 #define SM_OFFSET(p_type,field)     ((unsigned int)&(((p_type)NULL)->field))
00038 
00040 #define SET_RECT(rect, l, t, r, b) \
00041 {\
00042     rect##.left   = l;\
00043     rect##.top    = t;\
00044     rect##.right  = r;\
00045     rect##.bottom = b;\
00046 }
00047 
00048 #define NULL_CHAR_ARRAY(s) memset((void *)s,0,sizeof(s))
00049 
00077 
00078 #define SET_VA_LIST(buff,buffnum,origin) \
00079     va_list VaList;\
00080     va_start( VaList , origin ) ;\
00081     _vsnprintf( buff ,buffnum, origin , VaList ) ;\
00082     va_end( VaList ) 
00083 
00092 
00093 #define SET_VA_LIST_INSERT_YEN_N(s,snum,origin) \
00094     {\
00095         SET_VA_LIST(s,snum,origin);\
00096         size_t len = strlen(s);\
00097         if(s[len-1] != '\n'){\
00098             if(len >= snum - 1){\
00099                 s[len-1]='\n';\
00100             }else{\
00101                 strncat(s,"\n",len);\
00102             }\
00103         }\
00104     }
00105 /*
00106 //可変引数関数を作る時,文字列バッファを使う場合に必要なバッファの数を得る
00107 #define GET_VALIST_CHAR_BUFF_NUM(origin) \
00108     {
00109         va_list VaList;\
00110         va_start( VaList , origin ) ;\
00111         int len = strlen(origin);
00112         for(int i=0;i<len;i++){
00113             if (_ismbblead((int) origin[i])){
00114                 i++;
00115                 continue;
00116             }
00117             if(origin[i] == '%'){//%を見つけたなり
00118                 if(!(i + 1 >= len)){//バッファオーバーフローしないようであれば
00119                     switch(origin[i+1]){
00120                     case 'c'://文字
00121                     case 's'://文字列
00122                     case 'd'://
00123                     case 'u':
00124 
00125                  printf("%i : %o - 符号付8進数(%dと冗長)と符号なし8進数\n" , 0xff , 0xff);
00126         printf("%x : %X - 符号なし16進数、小文字と大文字\n" , 0xff , 0xff);
00127 
00128         printf("%e : %E - [-]d.dddd e [sign]ddd 形式符号付きの値\n" , 1.24 , 1.24);
00129         printf("%f - [-]dddd.dddd 形式の符号付きの値\n" , 1.24);
00130         printf("%g : %G - f,eうち精度を表現できる短い方の書式\n" , 1.24 , 1.24);
00131 
00132         printf("%s : %S - ヌル文字までの文字列\n", STR , STR);
00133 
00134         printf("Kitty%n <- ここまでの出力数を保存\n" , &i);
00135         printf("%d - ストリームまたはバッファに書き込まれた文字数\n" , i);
00136         printf("%p - ポインタを表示\n" , i);
00137 */
00144 
00145 #define BEGIN_GET_MANY_ARG(result,s,add,str) \
00146     { \
00147         size_t strnum = strlen(str) + add;\
00148         s = (char *)::malloc(strnum);\
00149         result = false;\
00150         if(s){\
00151             SET_VA_LIST(s,strnum,str);\
00152             result = true;\
00153         }\
00154     }
00155 
00158 
00159 #define END_GET_MANY_ARG(mem) \
00160     {\
00161         if(mem){::free(mem);mem=NULL;}\
00162     }
00163 //  WARNINGマクロ(yane SDKより
00164 #ifdef _DEBUG
00165 #   define DK_WARNING(s) {\
00166     CHAR buf[256];              \
00167     wsprintf(buf,"%sファイルの%d行 %s\n",__FILE__,__LINE__,s);  \
00168     MessageBox(NULL,buf,"WARNING!!",MB_OK); \
00169     * LPLONG(0xcdcdcdcd) = 0;   \
00170     }
00171 #   define YANE_WARNING(b,s)                \
00172         if(b) {                     \
00173             CHAR buf[256];              \
00174             wsprintf(buf,"%sファイルの%d行 %s\n",__FILE__,__LINE__,s);  \
00175             MessageBox(NULL,buf,"WARNING!!",MB_OK); \
00176             * LPLONG(0xcdcdcdcd) = 0;   \
00177         }
00178     //  最後の* LPLONG(0xcdcdcdcd) = 0;の部分は、メモリエラーをわざと起こすコード
00179 #else
00180 #   define YANE_WARNING(var,s) {}
00181 #   define DK_WARNING(s) {}
00182 #endif
00183 
00184 //**********************************************************
00185 //その他もろもろのセッティング
00186 //**********************************************************
00187 
00189 #ifdef inline
00190     #define DINLINE inline
00191     //#ifdef __inline
00192     //  #undef DINLINE
00193     //  #define DINLINE __inline
00194     //#endif
00195 #else
00196     #define DINLINE 
00197 #endif
00198 
00199 //ユーザーが例外処理を使うかどうか?
00200 #ifdef USE_DKINGYO_THROW
00201 
00202 #   define DK_THROW(str) throw str
00203 #else
00204 #   define DK_THROW(str) MessageBox(NULL,str,"例外発生",MB_OK);
00205 #endif
00206 
00207 
00208 
00209 
00210 
00211 #endif//end of DKINGYO_MACRO____ once include defined

dKingyoUtilClass (dkutil)に対してMon Jun 9 01:32:40 2003に生成されました。 doxygen1.3