2012-03-01から1ヶ月間の記事一覧

文字コードについてのまとめ

■Unicode すべての文字を16ビットで表し、1つの文字コードで多国語処理が可能。■UTF8 Unicodeを8ビット単位で符号化する符号化方式。■EUC 主にUnixで用いられ、複数バイト文字を扱う。■マルチバイト文字 1文字あたり1バイト以上の可変バイト列として表したも…

ネイティブコードを呼び出す際の警告

C#

マネージコードから、DLLのネイティブコードを呼び出すことを、P/Invoke(Platform Invoke)という。stringやIntPtrなどはマネージコードとネイティブコードで表現方法が異なるため、CLIによって変換処理が行われる。 このように、異なるシステム間でデータを…

整数を文字列に変換する

C++

整数を文字列に変換するには、stringstreamを用いる。 16進数で文字列に変換するには、マニピュレータstd::hexを用いる。 #include std::stringstream ss;// マニピュレータを用いて16進数に変換 ss

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

C#

タスクトレイにアイコンを表示するには、ツールバーのNotifyIconを用いる■手順 ツールバーのNotifyIconを、フォームにドラッグする NotifyIconのプロパティのIconに、適当なアイコンを設定する NotifyIconのイベントのMouseClickをダブルクリックする 自動生…

閉じるボタン等でのアプリ終了を無効化

C#

閉じるボタン等でアプリを終了するのを禁止するには、WndProcをオーバーライドしてWM_SYSCOMMANDのSC_CLOSEを無視すればよい。 この方法では、閉じるボタンは押せる状態だが、押してもアプリは終了しなくなる。 また、アプリ左上のアイコンをクリックして表…

特定のフォームにメッセージを送信する

C#

メッセージを送信したい相手のウインドウハンドルがわからない場合、FindWindowを用いれば特定の相手のウインドウハンドルを取得できる。 この取得したウインドウハンドルを指定してSendMessageを呼ぶことで、特定のウインドウにメッセージを送信する。■送信…

クライアント領域をドラッグしてフォームを移動する

C#

マウスイベントが発生するとWM_NCHITTESTメッセージがWindowsからフォームに投げられる。 このメッセージに対してフォームは、クリックされた場所がタイトルバーであればHTCAPTION、クライアント領域であればHTCLIENTを返す。 WndProcをオーバーライドすると…

プルダウンリストを作り、"済"であればその行をグレーにする

TODOリストなどで、要件の済んだ項目をグレーアウトする場合などに用いる。■プルダウンリストの作成 「データ」→「データの入力規則」→[設定]で、入力値の種類を[リスト]にし、値を設定する。■プルダウンによる色変更 対象範囲を選択し、[ホーム]→[条件付き…

ボタン押下時にメニューを表示する

C#

フォームのボタンを押したときに、ポップアップメニューを表示し詳細項目を選択できるようにする場合など。ツールボックス→すべてのWindowsフォーム→ContextMenuStripをフォームにドラッグする。 メニュー項目を入力する。 入力したメニュー項目をダブルクリ…

アプリの二重起動防止

ミューテックスに識別名(アプリ名)をつけて作成し、そのミューテックスを取得できる場合のみアプリを起動する。他のスレッドが実行中であればWaitOneメソッドは待ち状態となる。 タイムアウトを0にしているので、即座にfalseが返る。■C# // アプリケーショ…

名前付きパイプを用いたプロセス間通信

CreateNamedPipeでパイプを作成し、プロセス間でそのパイプに対してデータの読み書きを行うことでデータのやり取りを行う。WindowsAPIのReadFileやWriteFileを用いて、ファイルに読み書きする感覚で通信ができる。■サーバ側 void Server::CreatePipe() { // …