Visual Studio
Redmineダウンローダ開発メモ(10) 正規ビューワーの開発-タブ追加の流れ - ドナドナされるプログラマのメモの続き。 タブビューワー機能はできたので、最後の大物として検索機能を入れる。検索機能の実装は以下4ステップに分ける。 全JSONの結合 検索 表示 …
Redmineダウンローダ開発メモ(8) 簡易ビューワーの開発-ひとくぎり - ドナドナされるプログラマのメモの続き。 個別Issueしか開けなかった簡易ビューワーをもとに、複数のIssueを開いたりRedmineプロジェクト全体に対する検索ができる正規ビューワーを作る。…
Redmineダウンローダ開発メモ(7) 簡易ビューワーの開発-途中経過 - ドナドナされるプログラマのメモの続き。 マークダウンのサポートなどが一通りできたのでいったんリリース。DownloaderもViewerに必要なデータをダウンロードするために1.4.0へ更新。 Redmi…
Redmineダウンローダ開発メモ(6) 簡易ビューワーの開発方針 - ドナドナされるプログラマのメモの続き。 とりあえず_issue.jsonを解釈しテンプレートhtmlに基づき表示するところまではできた。 github.com RedmineViewer1.0.0外観 でも、まだマークアップをサ…
copilotやgeminiに何度も騙されながらWebView2にドラッグアンドドロップされたファイルをアプリ側で取得することに成功したのでメモ。 2026年3月現在、WebView2はドラッグ&ドロップされたファイルをアプリ側に知らせる直接のAPIを持っていない。そのため、間…
Redmineダウンローダ開発メモ(5) ビューワーの開発方針 - ドナドナされるプログラマのメモの続き。 簡易ビューワーの開発方針というか要件を以下のように定める。 要件 JSONファイルをドラッグ&ドロップするとJSONファイルの中身を表示する。 表示の仕方はR…
Redmineダウンローダ開発メモ(4) ひとまずリリース - ドナドナされるプログラマのメモの続き(続いちゃった)。 ダウンローダを作ったのはいいけど、保存データが生JSON改行抜きなので視認性がすこぶる悪い。なので、ダウンロードしたデータを活用するにはビ…
Redmineダウンローダ開発メモ(3) ソフト開発-3 Redmineサーバーにアクセスする同期コードとか、JSONをCStdioFileからUTF-8で保存するコードとか - ドナドナされるプログラマのメモ の続き。 欲しい機能を一通り実装し終わったのでリリースした。 ソフトへの…
Redmineダウンローダ開発メモ(3) ソフト開発-2 - ドナドナされるプログラマのメモ の続き。cppRESTを使ってRedmineサーバーからIssue一覧を取得するコードを書いた。cppRESTはメインの処理が別スレッドで実行される非同期ライブラリであり同時に複数のタスク…
あまりにも久しぶりなので、MFCアプリのワーカースレッド作成と、ワーカースレッドから親スレッドGUIへのアクセスについて復習。ポイントは以下。 ワーカースレッドの作成はAfxBeginThread()を使う( マルチスレッド: MFC でのワーカー スレッドの作成 | Micr…
Redmineダウンローダ開発メモ(3) ソフト開発 - ドナドナされるプログラマのメモ の続き。 まずは簡単なテストコードを作り、RedmineサーバーからIssue一覧を取得できるようにした。 次に、ちゃちゃっとダイアログを作った。数百Issueを取得するため、中断ボ…
新しい環境でC++RESTを使うことになったので、C++RESTおよびそのために必要なVCPkgの導入方法をメモ。 GithubよりVCPkgのソースコードをダウンロード。 github.com 中身をsource/repos/vcpkgに展開する。 コマンドプロンプトまたはPowerShellを起動し上記フ…
マイクロソフトのテクニカルノートを読んでいたら、以下のような記述を発見。 「各マクロの実装では、_alloca() 関数を使用して、ヒープではなくスタックからメモリを割り当てます。 スタックからメモリを割り当てると、メモリをヒープに割り当てるよりもは…
SourceTreeでVisualStudioのリソースファイル(.rc)をテキストファイルとして認識・diff表示させるのに苦労したので、手順をメモ。 最初に試したのはgitattributesに*.rc diff=astextplainを追加すること。でもだめだった。そこで、以下を参照しながらやって…
MozJPEGがいつのまにか3.3.1から4.1.1に進化しており、GitHubにて対応要望が出ていた。そこで、開発を再開し4.1.1を適用しようとおもう。できたらいいな。
CriticalSectionの取り扱いを楽にするため、MFCのCCriticalSectionとCSimpleLockを使おうとして罠にハマったという話。 CCriticalSectionはCSemaphore等と異なりLock待ちのタイムアウトができない。そのため、ロックできなかったら諦める!という実装が不可…
RedmineのデータをREST API経由でダウンロードするプログラムを作るためにcpprestを導入しようとした際に苦労した点のメモ。 前記ソフトをMFCランタイムをダウンロードできない/しづらい環境でも使えるようにするため、MFCをスタティックライブラリとして組…
Factorioでアイテム生産に必要な工場の数を試算するためのツール, FactorioFactoryCalculatorを公開しました。これを使えば、例えば製造サイエンスパックを毎秒3個作るために必要な、生産力モジュール1の工場の数やそのための発展基板工場の数などが試算でき…
解決したい課題 MFCを使ったソフトにおいて重い処理をしている最中に、進捗等を表示するダイアログを表示したくなることは多々ある。しかし、単純にダイアログを作って表示しようとしても、以下のようにうまく行かないことが多い。 重い処理が終わるまでダイ…
ダイアログバー上のエディットボックスから文字列を取得するのにちょっと苦労したのでメモ。 問題の背景 ダイアログを作る場合、通常はCDialog等を継承した、そのダイアログ固有のクラスを作成する。しかしMicrosoft曰く、CDialogBarは通常固有のクラスを作…
今時ドキュメントビューアーキテクチャなんて人は居ないだろうけど、メモ。 CDocumentからCViewにメッセージを投げたいときや関数を直接呼び出したいときに困るのが、CViewのアドレス取得方法。特に、自分はCSplitterWndを多用したためCViewが複数あり決め打…
CArchive::ReadString()とCArchive::WriteString()を使って文字列を読み書きしようとしたら文字化けしてハマったのでメモ。 以下のようなコードを書いたら、読み込み時に文字化けした。 void Serialize(CArchive &ar){ TCHAR path[MAX_PATH+1]; if(ar.IsStor…
とあるリソースをVisual Studio2019で開こうとしたら、error RC2104: undefined keyword or key name: WS_EX_COMPOSITED というエラーが出た。 error RC2104: undefined keyword or key name: WS_EX_COMPOSITED でも、おかしい。このキーワードはWindowsに存…
Visual Studioの出力ウィンドウに文字を出力する_RPT系関数は便利だが、なぜかTCHAR版が無い。 (_RPT系関数の参考) donadona.hatenablog.jp 仕方ないので、TCHAR版を作ってみた。なお、毎回_CRT_WARNを書くのが面倒だったので入力不要としている。別のもの…
Semaphoreの参照カウント数を知るために、カウント数を保持するクラスを作ってみたのだがうまくカウントしてくれない。原因を調べるために、CMultiLockのコードを読んでみたらびっくりした。Unlock()とかはCSyncObjectクラスのUnlock()を呼び出すようになっ…
Visual StudioにてC / C++のプログラミングをする際に、32bit向けと64bit向けでコードを変えたくなる場合がある。切り替え自体は当然#ifdefでやるのだが、どの定数で判定するのが良いのだろうか?以下、整理してみた。情報ソースはマイクロソフトの以下記事…
Visual Studioのリソースエディタで、ダイアログのクラスを追加しようとして「クラスの追加」を選び必要事項を入力したら、「クラスが登録されていません」というエラーがでてしまった。 クラスが登録されていません 直接の原因はわからないが、適切なプロジ…
どのようにマルチスレッド化するかを考え中。 考えられる方針は大きく2つ。 ファイルを1個開くたびに1スレッド作り、1変換をするたびに1スレッドを作り、1個書き出すたびに1スレッド作る。ブルジョワ方針。 物理メディアごとに1スレッド作り、当該メディアで…
libPNGについて、win32とx64で速度が違うのか調べてみた。 ■使用環境 OS: Windows10 64bit バージョン1909 CPU:Ryzen 7 3700X 3.6GHz メモリ: PC10700 (1088MHz) ■計測方法 libPNGのRUN_TESTS所要時間を3回計測する。ビルドはいずれもRelease。 ■計測結果 wi…
画像ファイルのロード、変換、保存をする部分の構造はどうしようかなあ。最近のPCはCPUのコア数が多いので、できればマルチスレッド対応としたい。その場合、どういうプログラム構成とすればいいのだろう? データ処理の流れはシンプルだ。 二次記憶からデー…