wrongwrongな開発日記

しんまいさんの忘備録

.Net FrameWork

【VB】自作したコンポーネントをデザイナーに表示する【.Net】

↓の記事の続きです。 wrongwrong163377.hatenablog.com 前回の問題点 コンポーネントをデザイナーで扱えないので、デザインの確認が難しい状態でした。 今回はデザイナーで自作コンポーネントを扱う手順を書きます。かなりバットノウハウなやり方ですが……。 …

【DxLib】描画スレッドで宣言したハンドルへの描画が止まる問題への対処【.Net】

別スレッドにおいてDxLibを動かして描画を行うプログラムで、exeから起動時に描画が停止する状況と、対応策をまとめます。 プロジェクト全体はGitHubに有ります。 github.com ※このサンプルは描画はUIスレッドから行うという原則に反しているので良くないで…

【VB】関数ポインタっぽいことをする【.Net】

cやc++の関数ポインタは、相手に処理を渡したいというときに非常に便利なので、別言語でもそれっぽいことがしたいです。 以前の記事ではJavaでFunctionを使ってこれを実現しました。 今回は.NetのFuncを使い、VBで同じようなことを実現します。 参考記事 @Ry…

【VB】フォームをコンポーネントのように扱う【.Net】

Windows Formアプリケーションで、複数の画面で同じように使う機能(外見的な部分というよりは内部ロジック)がある場合、機能をまとめたフォームをコンポーネントとして機能を使い回すと便利です。 この記事ではそのやり方をまとめます。サンプルプロジェク…

【日記】プロジェクトをクラスライブラリに分割する中で後悔したこと

二度と繰り返したくないので言語化します。 背景 ソースコードを流用して別プロジェクトを作ろうとする中で、複数のプロジェクトから同じコードを使いたいので、機能のクラスライブラリへの分割を行っています。 内容はVB.NetのWindowsフォームアプリケーシ…

【OpenCV】JetBrains RiderでNuGetを使いOpenCVの.Netラッパーを導入する【.Net】

OpenCVでちょっとしたプログラムを作りたいけれど、WindowsとUbuntuが混ざった別々の4つ位の環境で動かしたい状況で、全部に一々環境構築するのが面倒くさい感じになりました。 クロスプラットフォームで動く.Net/JetBrains Riderを使い、NuGetでOpenCVの.Ne…

【DxLib】DxLib由来のウィンドウを表示しない【.Net】

DxLibはWIndowsフォームアプリと組み合わせ、フォームやピクチャボックスに対して描画することが可能です。 一方、何もしなければDxLib由来の描画領域ができてしまい邪魔になるので、それを生成しないようにします。 この記事の内容は以下の質問掲示板におい…

【VB】タスクバーに進捗率を表示する【.Net】

Windows Vista以降ではタスクバーに以下の画像のような進捗を表示することができます。 ということでシンプルなサンプルを作成しました。 GitHubにプロジェクト全体を上げてあります。 github.com 準備 プロジェクト まずWindowsフォームアプリのプロジェク…

【VB】Progress<T>を使ってみた【.Net】

outside6.wp.xdomain.jp 上記記事をVB向けに写経したのでまとめます。 リポジトリ GitHubにプロジェクト全体を上げています。 github.com 準備 Windowsフォームアプリでプロジェクトを開始し、Form1へ以下のようにスタートボタン(Button1)とプログレスバー(P…

【プログラミング】CodeIQ用入出力類

CodeIQを色々な言語でやってると「入出力どうやったっけ」って場面が増えたり、出先でやる時作り直したりがダルかったりしたので、入出力類だけ自分用にまとめます。 CとC#は追加したいですが、とりあえずいったん飽きたのでこれまで。 gist.github.com

【VB】Taskを用いて非同期ファイル操作の続き【.Net】

wrongwrong163377.hatenablog.com 上記記事の続きです。 改良点 前回の記事では色々とまとめた結果粒度が小さくなってしまっていたので、粒度を上げてみました。 ソースコード outside6.wp.xdomain.jp 公開後に上記記事を見つけたので修正を行いました。修正…

【VB】表示中の画像ファイルが削除できない問題の解決法【.Net】

表示中の画像ファイルが削除できない問題の解決法 - .NET Tips (VB.NET,C#...) 上記記事において「MemoryStream使った方がいい」という旨のコメントが有り、実際ボタンに設定した画像を削除しようとしてうまく行かなかったので(検証してないけどもしかして…

【VB】MsgBoxを処理を止めずに出す【.Net】

簡易まとめ Taskを使えば以下のコードで出来ます。処理を止めずにMsgBoxを出し、メッセージボックスのリザルトを受け取ることも出来ます(後述)。 Task.Run(Sub() MsgBox("Async") End Sub) やること WindowsフォームアプリではMsgBoxを用いてメッセージを…

【.Net】VB/C#のStructureはNothingにならない

タイトルの通りで、結論から言うとStructureは値型であるためNothingにはなりません。 困った状況 Classを返す関数ではNothingを返すことができますが、同じことをStructureでやってもNothingにならないため、IsNothingなどで比較を行うとコードが誤作動しま…

【DxLib】透過を有効にしたDrawGraph系関数での描画がおかしくなった時確認すること【.Net】

遭遇した問題への備忘録です。 対処法 DxLibDotNet(@VB)ではDX.TRUEとTrueは等価ではないので、DrawGraph系関数を含め使用時には確認が必要です。 状況 DxLibDotNetで、DrawGraph系関数で透過を有効にして画像を2枚描画しようとすると、2回目に描画=表に来る…

【VB】Taskを用いて非同期にファイル操作【.Net】

wrongwrong163377.hatenablog.com 続きを書きました、プログラム的にはこっちのが出来がいいはずです。 きっかけ 作成中のプログラムでファイルのコピー待ちの時間が気になったので、非同期でやってみました。 IOがボトルネックなプログラムで並列処理やって…

【VB】VBでJavaでいうNull初期化【.Net】

備忘用に。 自分はJavaではNullで初期化しておいて後から値が入っているかチェックするようなやり方をよくしていました。 VBではNullは用意されていませんが、Nothingで初期化してIsNothingメソッドでチェックすることで同じように扱えます。

【VB】GetDetailsOfメソッドでは確実に動画/画像の幅や高さを取得できない【.Net】

wrongwrong163377.hatenablog.com この記事の続きみたいな記事です。 状況 調査結果では↓のように出ていました。 309:フレーム高 311:フレーム幅 これは動画のフレームの高さと幅を表していますが、この情報はファイルによっては入っていないことがあります…

【VB】GetDetailsOfメソッドのiColumn番号と内容の対応【.Net】

背景 環境 調査結果 調査結果から 調査方法 Shell32の参照設定 コード 参考にしたページ 追記 背景 最近VBでffmpegと連携したコードのメンテナンス(と言っていいのだろうか)をしています。その中で、「導入が面倒なのでできるだけffmpegを使わない形でコー…