どんな質問にもマジレスするスレ(弐)
■ このスレッドは過去ログ倉庫に格納されています
#include <string>
#include <iostream>
typedef unsigned int uint32; /* uint32 というデータ型を作成。 (処理系によって整数型のビット幅が違うため、違う環境では変更を容易にするため。) */
std::string f(uint32 x){ /* f(uint32 buttons) : 引数 buttons からオプションを調べる */
std::string result;
char *btn[] = {"vbOKOnly", "vbOKCancel", "vbAbortRetryIgnore", "vbYesNoCancel", "vbYesNo", "vbRetryCancel", "???", "???"};
char *ico[] = {"???", "vbCritical", "vbQuestion", "vbExclamation", "vbInformation", "???", "???", "???", "???"};
char *dfbtn[] = {"vbDefaultButton1", "vbDefaultButton2", "vbDefaultButton3", "vbDefaultButton4"};
size_t b = x & 7, i = (x & 112) >> 4, db = (x & 768) >> 8;
if(b > 5 || !i || (i > 5) || x & 0xFFFFFC80) {
result = "ERROR!";
return result;
}
result = btn[b];
result += " | ";
result += ico[i];
result += " | ";
result += dfbtn[db];
return result;
}
int main(int argc, char *argv[]){ /* 実際に表示してみる */
uint32 i;
char *btn[] = {"vbOKOnly", "vbOKCancel", "vbAbortRetryIgnore", "vbYesNoCancel", "vbYesNo", "vbRetryCancel", "???", "???"};
char *ico[] = {"vbCritical", "vbQuestion", "vbExclamation", "vbInformation"};
char *dfbtn[] = {"vbDefaultButton1", "vbDefaultButton2", "vbDefaultButton3", "vbDefaultButton4"};
for(i = 0; i < 1024; ++i){
std::cout << "f(" << i << ") = " << f(i) << '\n';
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています