ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

VisualC#

C++で作ったDLLをC#のアプリケーションでデバッグする方法

C++で作ったDLLをC#で使うにはDllImportで宣言すればよい。 using System.Runtime.InteropServices [DllImport("kernel32.dll")] extern static bool Beep(uint dwFreq, uint dwDuration); via http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32a…

テキストから時刻を得る

.NETで時刻を扱うにはDateTimeクラスを使えばよい。 ToStringメソッドで文字列として出力すると、次のようになる。 2008/03/15 1:23:45逆にこの文字列からDateTimeへと変換するにはParseメソッドを使う。 string text = "2008/03/15 1:23:45"; DateTime time…

ファイルが存在するか調べる

ファイルが存在するかどうか調べるには、Existsメソッドを使えばよい。 if (System.IO.File.Exists(@"test.txt")) { // ファイルが存在したときの処理 } アクセス権がないファイルの場合はファイルが存在していてもfalseを返すことに注意。

フォルダ選択

ユーザーにファイルの選択ではなく、フォルダを選択させたいときは FolderBrowserDialogコンポーネントを使えばよい。 フォームにツールボックスからFolderBrowserDialogを貼り付けてShowDialogメソッドで表示させる。戻り値でダイアログが閉じられた状況を…

TimerのTickイベントの処理中にさらにTickイベントは呼ばれるのか

TimerコンポーネントのTickイベントの処理が重くて、その処理が終わらないうちにIntervalに設定した時間が過ぎた場合、Tickイベントはまた呼び出されるのかという疑問。 次のようなソースで試してみた。 int a; private void timer1_Tick(object sender, Eve…

VisualC#で常駐ソフトを作る方法

私がVisualC#を使って常駐ソフトを作った方法のまとめ。 使用したソフトはMicrosoft Visual C# 2005 Express Editon。 1.新しいプロジェクトの作成 通常のアプリケーションを作るときと同じように、メニューの「ファイル」から「新しいプロジェクト」を選び…

MessageBox

デバッグのための表示で便利なのは、やっぱりMessageBox。.NET Frameworkでの使い方は次の通り。 MessageBox.Show("message"); ウィンドウにキャプションを付けたい場合は次の通り。 MessageBox.Show("message", "caption"); そのほか、ボタンを追加したり、…

参照するファイルを実行ファイルに埋め込む

システムトレイに表示するアイコンをファイルとして持つのではなく、実行ファイルに埋め込む方法。実行ファイルに埋め込むにはリソースとしてプロジェクトに登録すればよい。 プロジェクトのプロパティを開いて、リソースタブを選択。 リソースの追加を選ん…

数値を桁数を指定して文字列にする方法

.NET Frameworkでは文字列にするToStringメソッドがある。数値で桁数を指定して足りないところを0で埋めて文字列にしたい場合は、ToStringメソッドの引数に書式指定文字列を指定する。たとえば、10進で4桁にしたい場合は"d4"となる。 int value = 123; Syste…

時間

DateTime構造体やTimeSpan構造体を使って時刻に関する処理を行って結果を表示したいのだが、なかなか自分の思うような文字列にならなくて苦労している。ヘルプを見ていると文字列関連の機能が充実していることはわかるのだが、いろいろありすぎて、自分が求…

常駐型アプリケーションでのキーボード入力

常駐しているアプリケーションで、そのウィンドウがアクティブでないときにもキー入力の判定を行いたかったので、メッセージループについて調べていたのだが、C#ではいまいちよく分からず。 とりあえず、タイマーを使って、定期的にキー入力のチェックをする…

C#のアプリケーションでWin32APIやDLLの関数を呼ぶ方法

C#のアプリケーションでWin32APIを呼びたい場合は、DllImport属性を使って関数を宣言すればよい。 たとえば、id:toburau:20060815で書いたGetAsyncKeyState関数を使いたい場合は次の通り。 using System.Runtime.InteropServices; [DllImport("user32.dll")]…

ウィンドウを表示しない

タスクトレイにアイコンを表示するようにしたときに、アプリケーションのウィンドウを表示させず、タスクバーにも表示させない方法。 フォームのWindowStateをMinimizedに、ShotInTaskbarをFalseにすればよい。 this.ShowInTaskbar = false; this.WindowStat…

アプリケーション設定その2

VisualStudioのアプリケーション設定を使ってウィンドウの位置やサイズを保存する方法。 フォームのプロパティウィンドウから、(ApplicationSettings)にある(PropertyBinding)を選択して、アプリケーション設定のバインドを行うダイアログを開く。このダイア…

アプリケーション設定

各種設定をXMLファイルに出力するようにしていたが、VisualStudioには「アプリケーション設定」という機能があり、プロパティの値や各種情報を保存したり取得することができる。 という機能があることを知ったのだが、いまいち設定方法が分からない。という…

閉じるボタンでアプリケーションを終了させないようにする 解決編

昨日の方法ではApplication.Exit()でも終了できなくなってしまう。そこで、FormClosingイベントでフォームが閉じられた理由を調べ、閉じるボタンが押されたような場合はキャンセルするようにすれば良い。 private void Form1_FormClosing(object sender, For…

閉じるボタンでアプリケーションを終了させないようにする

ウィンドウの閉じるボタンを押したときにアプリケーションを終了させないようにするには、フォームが閉じるときに発生するFormClosingイベントでキャンセルするようにすればよい。 private void Form1_FormClosing(object sender, FormClosingEventArgs e) {…

プログラムソースに日本語が使える?

コンテキストメニューを作成していたときのこと、終了メニューを作ろうと思い、「終了」をメニューのTextに設定して、ダブルクリックしてClickイベントのコードを書こうとしたら、追加されたコードに日本語が。 private void 終了ToolStripMenuItem_Click(ob…

システムトレイのアイコンを右クリックしたときのメニュー

システムトレイのアイコンを右クリックしたときに表示されるメニューを追加するには、NotifyIconコンポーネントのContextMenuStripプロパティにコンテキストメニューを設定すればよい。 コンテキストメニューはツールボックスからContextMenuStripコンポーネ…

タスクトレイのアイコンをダブルクリックしたときの処理

タスクトレイのアイコンをダブルクリックしたときに何かの処理を行いたい場合は、NotifyIconコンポーネントにDoubleClickというイベントがあるので、それで処理を行えばよい。 タスクトレイの処理を追加するのは大変かと思っていたけど、.NETFrameworkにはNo…

タスクトレイにアイコンを表示する

フォームに[ツールボックス]ウィンドウからNotifyIconコンポーネントを追加し、Iconプロパティにアイコンファイルを設定する。これがタスクトレイに表示されるアイコンとなる。 Textプロパティでマウスカーソルをアイコンの上に置いたときに表示されるテキス…

コントロールのサイズと位置を変更する

コントロールのサイズ、つまり幅と高さはWidth,Heightプロパティで変更する。たとえばフォームのサイズを100x100にするには次の通り。 public partial class Form1 : Form { public changeSize() { this.Width = 100; this.Height = 100; } } コントロールの…

XMLの読み込み その2

前回(id:toburau:20080115)書いたプログラムでは、XMLファイルが想定したもの以外では正しく動作しない。ということでelementを確認しながら読み込む方法。 <width>100</width> <height>100</height>このようなXMLファイルからwidthとheightの値を取得するプログラムは次の通り。 int width;…

XMLについて

単純なXMLファイルの読み書きはできるようになったが、ちょっと要素数を増やしたり、ネストを深くしたりしたら、うまく読み書きできなくなってしまった。やっぱりXMLの知識不足。 連載:.NETで簡単XML - @IT ということで、このサイトで勉強。

フォームの開始時と終了時

設定ファイルでウィンドウのサイズを記録して、次回起動したときにそのサイズにしたい。ということで、フォームの開始時にフォームのサイズを設定、フォームの終了時にサイズを保存することにした。 フォームの開始時はLoadイベントを、終了時はFromClosedイ…

XMLファイルの読み込み

XMLファイルを読み込むにはXmlReaderを使えばよい。 コメントの扱いなどの詳細な設定はXmlReaderSettingsを使う。 using System.Xml; XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.IgnoreComments = …

XMLファイルの出力

XMLファイルを出力するにはXmlWriterを使えばよい。 エンコードやタブをどうするかなどの設定はXmlWriterSettingsを使って設定する。 using System.Xml; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentCha…

コントロールを配列で作る方法で参考にしたサイト。 C# と VB.NET の入門サイト さらに人から教えてもらったC#やVisual StudioなどのTIPSが載っているサイト。いろんなTIPSが数多く載っているので便利。 .NET Tips - DOBON.NET

コントロールの配列

昨日のコントロールを配列のように扱いたいということに関して参考になるウェブサイトを発見。 http://jeanne.wankuma.com/tips/control/arraycontrol.html 何のことはない、実際にコントロールを配列で作成すればいいだけ。無理にVisualStudioのデザインで…

コントロールがたくさん

フォームにぺたぺたとコントロールをたくさん付けたのはいいが、これを効率よく処理するにはどうしたらよいのだろう。 たとえば、5個のパラメータを表示するのにテキストボックスを5個貼り付けて、その値を表示するような場合。 textBox1.Text = Data[0].ToS…