ArcGIS Onlineに避難所データを追加する

LinkDataウェブサイトから、我孫子市避難所のテーブルデータ(テキスト)をダウンロードする。 http://linkdata.org/work/rdf1s1682i ArcGISウェブサイトにサインインし、マップを選択する。 http://www.arcgis.com/home/index.html マイマップ画面にて「追…

ArcGIS API for JavaScriptで地図アプリ作成

GIS

ArcGIS API for JavaScriptを用いることで、WebGISアプリを簡単に作成することができる。 このAPIは、教育機関による教育目的での利用、非営利目的での利用の場合、無償で利用できる。まず、以下のようなコード(jsapi.html)を作成し、[C:\inetpub\wwwroot]…

OpenLayersとOpenStreetMapを用いた地図アプリケーションの開発その1

GIS

下図のようなWebアプリケーションの開発手順を何回かに分けて記載する。 主な機能は下記 ・地図を表示 ・地図上に表示する地物のリストを表示 ・リストのチェックボックスをチェックすると地図上の該当地物上にアイコン表示 ・アイコンをクリックすると該当…

ウインドウスタイルを変更する

MFCアプリケーションのウインドウ属性を変更するには、PreCreateWindow関数でCREATESTRUCT構造体のstyle属性を設定する。 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) { return FALSE; } // 最大化ボタン…

仮想デストラクタ

C++

派生クラスを作成した場合、コンストラクタは基底クラス→派生クラスの順に呼ばれる。 一方デストラクタは、派生クラス→基底クラスの順に呼ばれる。非仮想関数では、基底であっても派生であっても、インスタンスの型を見てどちらのクラスの関数を呼び出すかを…

メモリリーク対応

C++

_CrtSetBreakAllocを用いると、指定したメモリ割り当て位置にブレークポイントを設定できる。 下記のようなログが出た場合、strcore.cpp(156)を呼び出している個所を特定する際に用いる。 ただし、毎回固定位置にメモリ割り当てされる場合にしか使えない。 D…

エラー「ヒープが壊れていることが原因として考えられます。」

C++

mallocで確保した領域を初期化せずにstrcatしていたため、確保した領域内のゴミの後ろに文字列が連結されていた。今まではmalloc後にstrcpyしていたが、そこをコメントアウトしたことで発生していた。 回避するには、mallocした後はstrcatではなくstrcpyする…

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

■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() { // …