Win32

UTF-8の文字列をコンソールに出そうとしたけど出せなかった

なんとなくTwitterのタイムラインをWin32 APIバリバリで取得してみようと頑張ってたんですが、どうも文字を出力するところで納得がいかなかったので憂さ晴らし。WindowsのコンソールでUTF-8の文字列を出力しようとするとき、以下のようなパターンがあります…

ファイル名の比較

半角の大文字小文字だけ無視して文字列を比較する方法。要するに、Windowsにおいて同じファイルのパスかどうかを比較する方法。 if (::CompareString(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, fileNameA.c_str(), -1, fileNameB.c_str(), -1) == CSTR_EQUAL…

スタティックコントロールにスクロールバー

試行錯誤の結果、ようやく実現することが出来ました。見た目だけスクロールバーをつけるなら、普通なんですが、なかなか動作してくれませんでした。で、最終的に参考になったのは http://www.codeguru.com/Cpp/controls/staticctrl/comments.php/c2907/?thre…

もうめちゃくちゃ

製作中のダイアログボックスの宣言 class CRectInputDlg : public CDialogImpl , public CWinDataExchange , public IRectInputDlg , public IRectInputCtrlListener もはや、多重継承を悪とみなす人にとっては耐えがたい構造に。子ウィンドウから親ウィンド…

CWnd::OnPaintの不思議

ダイアログベースのアプリで、ダイアログ内にCWndから派生したウィンドウと、タブコントロールが貼り付けてあるんですが、タブを切り替えてもなぜか内容が表示されないバグに悩まされました。二度クリックすると表示されます。ちなみに、タブコントロール云…

結局単純な結末

こんなんでよかったんだろうか…。CTabCtrl::AdjustRectの使い方が今ひとつ分かりませんが、まぁ動いてるので。 001 for( int i = 0; i < PROP_MAX; ++i ){ 002 m_pProp[ i ]->Create( anDialogID[ i ], &m_cPropTab ); 003 CRect rc; 004 m_pProp[ i ]->GetW…

モードレスプロパティシート

なんだかんだで、モードレスなプロパティシートをダイアログ内に配置するのはあまり好ましくないようです。さらにコモンコントロールをモードレスプロパティシートに配置するとフリーズするとかなんとか。結局、タブを使えという結論のようで。

プロパティシート

ウィンドウ内にモードレス&チャイルドなプロパティシートを埋め込むたくらみ。そもそもCPropertySheetはモーダルか、モードレス(といっても非チャイルドのダイアログ)としての使い方しかしないようなので、MSDNではよくわかりませんでした。で、手探りで…

ドラッグ&ドロップで起動したときのカレントディレクトリ

が、なぜかC:\になってしまうのが非常にショックでした。しかたがないので、ドロップしたファイルのパスと同じところをカレントディレクトリにするという方法で逃げ。キーワードは、string::rfind("\\")です。

CreateDialogParamの5th引数は、WM_INITDIALOGのlParamに飛んでいく。とりあえず、thisを投げてSetWindowLong(hWnd, GWL_USERDATA, lParam)とでもしておけばよさそう。

CommonControls - ImageList

なんだか面白いですね。マスク指定できるとは器用な。ということで、「HIMAGELISTをImageList_Drawで描画」vs「HBITMAPをBitBltで描画」をやってみました。 三秒間32x32のフルカラー画像を描画しまくった数 HIMAGELIST: 70000程度 HBITMAP: 60000程度 まぁま…