昨日に引き続き、MSDN にて知識吸収。
今日は普段あまり活用していない Visio について、使いこなせるようなヒントを得られればと思い、
「Visio ソリューション開発テクニック」というものを視聴した。
例によって、マインドマップにメモを取ったので公開しておく。
*「-」ボタンで縮小して、ドラッグしながら見られます
主に開発記です。 調べたこと、試したことなどを記録しています。
*「-」ボタンで縮小して、ドラッグしながら見られます
今日は時間があったので MSDN のセミナーを覗いてみた。
過去のセミナーでオンライン化されているもののうち、面白そうなのがいくつかあった。
その中で「マイクロソフトの開発プロジェクト管理」っていうのがあったので視聴。
・・・なぜって、リアルタイムでまるで体制のなってないチームで仕事をしているので。。。
まぁ、特に変わったことは言ってなかったのだけど、これまでの経験で培ってきたものが間違ってはいないという確認ができた。
んで、せっかくマインドマップも作ったし(ただ見るだけだと頭に入ってこないから)、公開してみる。
なんというか、便利な世の中だ。
*「-」ボタンで縮小して、ドラッグしながら見られます
VARIANT型について
VSFlexGridの関数の引数がVARIANTでlongをどう渡すかこまった。
しかし、vc++には_variant_tという便利なものがあった。
こんな感じ。
long lNum = 123;
hoge(_variant_t(lNum)); // hoge は関数
便利!
SQL Server 2005 Express
Ⅰ問題
MFC の CDatabase および CRecordset が Unicode に対応していない。
ExecuteSQL でクエリがANSIに変換されてしまう。
Ⅱ対応
MFC のクラスを以下のクラスに変更する
CDatabase → CDaoDatabase
CRecordset → CDaoRecordset
Ⅲ参考
http://support.microsoft.com/kb/139759/en-us
http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-12/msg02521.html
http://objectmix.com/ado-dao-rdo-rds/49403-cdatabase-does-not-support-unicode.html
追記 2009.06.12: このページへの訪問がおおいので、サンプルコードを書いてみました。
// 文字列がすべて半角か確認する
BOOL IsAllHankaku( const TCHAR* pTarget, int nLen )
{
// 文字の種別を取得する
WORD* pType = new WORD[ nLen ];
GetStringTypeEx(
LOCALE_SYSTEM_DEFAULT // ユニコード版プロジェクトでは、無視される引数
,CT_CTYPE3 // 全角、半角、ひらがな等を判定するタイプ
,pTarget // 判定対象となる文字配列
,nLen // 判定対象となる文字配列のサイズ
,pType // 判定結果の配列
);// 結果がすべて半角なら TRUE をかえす
BOOL isAllHankaku = TRUE;
for( int i = 0; i < nLen; i++ ){
if( !(pType[i] & C3_HALFWIDTH) ){
isAllHankaku = FALSE;
break;
}
}delete [] pType;
return isAllHankaku;
}int _tmain(int argc, _TCHAR* argv[])
{
// ロケール設定
std::wcin.imbue( std::locale("japanese") );
std::wcout.imbue( std::locale("japanese") );
std::wcout << _T("文字列を入力してください:");
std::wstring szTarget;
std::wcin >> szTarget;
// 上記の関数を呼び出しBOOL isAllHan = IsAllHankaku( szTarget.c_str(), szTarget.length() );
if( isAllHan ){
std::wcout
<< _T("この文字列は、すべて半角文字です:")
<< szTarget
<< std::endl;
}
else{
std::wcout
<< _T("この文字列には、全角文字が含まれています:")
<< szTarget
<< std::endl;
}return 0;
}