C++

技術メモ

CMFCToolBarのリソースを修正したのにソフトウェアに反映されない

特に初期状態から変更していない場合、CMFCToolBarはレジストリにボタンの配置位置などを保存しています。初回起動時以降はリソースではなく保存されたレジストリの方を参照します。
技術メモ

if文でfor文みたいに初期化

周回遅れですがC++17について調べていたら便利な文法が追加されたことを知りました。 findは処理が重いのでmapの要素が数万件とかになるとitrに結果を代入してチェック、存在する場合はitrから要素にアクセスするのがいいのですが、いちいちitrへの代入文をif文の前に書くのが嫌だったんですよね。この場合、itrのスコープがif文内なのも分かりやすいです。
技術メモ

CStringをstd::stringに変換

マルチバイト環境での変換の話です。 表題の変換について調べると以下のような例がよく紹介されています。 GetBuffer()でLPTSTR型(TCHAR*)のポインタを取得して代入している形です。この場合、このポインタを使用して文字列の内容を変更していないのでReleaseBuffer()は不要です。
技術メモ

フォルダパス末尾の区切り文字対策

フォルダのパスとファイル名を結合してファイルパスを作成したいことがあります。 C#では以下のように結合することでフォルダパスの末尾に区切り文字があってもなくても問題なく結合してくれます。(ただし色々と注意点もある)
技術メモ

CPropertyPageでフォーカスが指定できない

MFCやってるとよくわからない仕様にぶち当たることが多いです。 今回はCPropertyPageに配置した複数のコントロールに対してOnSetActiveでフォーカスを手動指定しているはずなのに反映されないという事象です。
技術メモ

MDIアプリケーションのメニューバーの項目を非表示にする

MFCでMDI形式のアプリケーションを作成したとき、デバッグメニューなどのメニュー項目がメニューバーから消せなくて困っていました。リソースは変更せずに動的に削除したい場合どうすればよいのでしょうか?