LVIS_DROPHILITED?
HILIGHTED だろJK.
Archive for July, 2009
HILIGHTED だろJK.
loadXMLを使うと encoding が期待通り処理されない。
以下のようにする。
VARIANT var; { SAFEARRAYBOUND rgb={strlen(xml),0}; //末尾にNULL文字つけちゃだめ SAFEARRAY* psa = SafeArrayCreate(VT_UI1,1, &rgb); if(!psa){ assert(false); return false; } char* buf; SafeArrayAccessData(psa,(void**)&buf); // 作成したSAFEARRAYのポインタ取得及びロック memcpy(buf,xml,strlen(xml)); // 末尾のNULL文字分のバッファは無い! SafeArrayUnaccessData(psa); // アンロック var.vt=VT_ARRAY|VT_UI1; var.parray=psa; } bool ret=manifest->load(var); ::SafeArrayDestroy(var.parray); if(!ret){ ::OutputDebugString(manifest->GetparseError()->Getreason()); ::OutputDebugString(manifest->GetparseError()->GetsrcText()); return false; }
末尾にNULLが付いているとパースエラーになるのが落とし穴。
IWebBrowserを乗っけたダイアログ上でTextFieldを含んだJavaAppletを開き、そのあたりをいじっているとメインスレッドがフリーズ。
なんだろうと思ってブレークをかけてみると、ダイアログの子要素に対してWM_GETDLGCODEがものすごい勢いで投げまくられている状態。
で、調査した。
WM_GETDLGCODEのなんたるか:
http://msdn.microsoft.com/ja-jp/library/ms645425
http://support.microsoft.com/kb/83302/en
タブコントロールを使っている場合に同じ状況に陥るケースが頻繁に報告されている。僕には関係ない。次。
http://blog.goo.ne.jp/satomi_takeo/e/b058ef705da6ca88ec87db660878c789
あたりっぽいんだが、リンク先サイトが死んでいて状況を追えず。次。
http://www.guyswithtowels.com/articles/2002-08-15-1600.html#ModelessDialogs
具体的なコードも出ていて助かる。が、メッセージポンプはMFC側にあるので、この通りに実装するの難しそう。
Change this sentence and title from admin Theme option page.