プログラミング

バイナリファイルからデータを取得する(C#)

FileStreamを利用する。紛らわしいクラスが複数あるのでFileStreamのメンバを豪華にしてFileStreamだけにしたほうが良いのではないかと思ったりする StreamReader → テキストファイル向け。名前からしてテキストファイル向けかわからない! Stream → 抽象ク…

フォーム内に子フォームを配置する(MDIではない)

プロジェクトから普通にフォームを追加した後、下記のように記述する。 ChildForm childForm = new ChildForm(); this.childForm.TopLevel = false; // thisは親フォーム this.childForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this…

Tomcat6.0.18のセットアップに関しての注意

Tomcat6.0.18をインストールし、http://localhost:8080/にアクセスしてもレスポンスが返ってこない場合がある。その場合は下記の点をチェックする・Tomcatのインストールディレクトリ\conf\tomcat-users.xmlの文字コードをutf-8に変更する ・他のアプリで808…

eclipseセットアップに関して

PHP開発環境を手っ取り早く構築するためにはEclipse(Pleiades)を使用する。 デバッグもできるようにするためにはZendDebuggerも組み込む。 ZendDebuggerを組み込んだ場合、Eclipseのソフトウェアの更新をしないと Incompatible Debug Server Versionとエラー…

error C2248 に関してその2

昨日の続き。 下記のテストクラス class CTestClass { public: CTestClass() { ::AfxMessageBox(_T("コンストラクタ")); } CTestClass(const CTestClass& obj) { ::AfxMessageBox(_T("コピーコンストラクタ")); } CTestClass& operator=(const CTestClass& o…

error C2248 に関して

VC++2003は問題なかったがVC++2005でビルドすると error C2248: 'CObject::CObject' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません とCFileクラス(CFileクラスはCObjectを継承している)からエラーが出ている。 何のことかよく…

バイナリStreamの書き出し方法

プログラミング的には難しくないが、 クラスの設計思想に対して私の認識が合わなく一苦労。 いつでも思い出せるようにメモしておく。 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System…

緯度・経度から住所を取得する

以前、緯度・経度から住所を取得できるライブラリとか無いか探したが 見つからなかったのであきらめていた。下記のサイトでそのようなAPIを 提供しているということを知り早速試してみた。 GeoPoint APIのAPIキーを取得する サイトの説明を追っていけば取得…

youtubeデスクトップクライアントサンプルを動かす

1.参照で示しているページからVisualStudio2005向けのソリューション一式をダウンロードする 2.http://code.google.com/apis/youtube/dashboard/developerSignupとhttp://code.google.com/apis/youtube/dashboard/ で必要事項を記述し、"Client ID"と"Develo…

longlongの書式指定子

VS2005においてlonglong型の書式指定子として%lldを 使用していたのだが、VS2003でコードを動かすとどうもうまくいかない。 ググッて見ると下記のこのサイトを発見。 VC++2003.NET では『%lld』、『%llu』は使えないようです。 VC2003では%I64dですか。ふむ…

カスタムボタンの作成

図のように普通状態のときは白、マウスオーバーの時は黄色、押した時は青色 のように動作するボタンが欲したかったのでカスタムボタンを作成。まず、プロジェクトから、追加、ユーザーコントロールを選択し、 新しい項目の追加画面でカスタムコントロールを…

7-ZIP32.DLLを使用しフォルダごと圧縮するその2

7-ZIP32.DLLをC#で利用する パスがロングネームだと失敗するときがあるのでショートネームにしている [DllImport("7-zip32.dll", CharSet = CharSet.Ansi)] private extern static int SevenZip(IntPtr hWnd, string strCommandLine, StringBuilder strOutPu…

MFCDLL内の関数をC#で呼び出す

過去の資産をC#で利用したい。 その基本的なやり方を示します。 MFCDLLのプロジェクトを作成し、 apiModule.cppを追加し下記のように記述します。 defファイルに関数名を記述します。apiModule.cpp #include "StdAfx.h" void WINAPI Dll_ShowMessage(const C…

USBメモリを挿した際の自動再生ウインドウをキャンセルする

USB機器とデータをやり取りするアプリを作っていると、 USB機器をPCに挿した際に自動再生ウインドウが アプリの前面に表示されてしまう。そのウインドウを表示させない方法。OnInitDialogでQueryCancelAutoPlayのメッセージを登録する m_cancelWindowMessage…

7-ZIP32.DLLを使用しフォルダごと圧縮する

使いやすいように関数ポインタの型をtypedefする typedef int (WINAPI *SevenZipFunc_)(const HWND _hwnd, LPCSTR _szCmdLine, LPSTR _szOutput, const DWORD _dwSize); ボタンを押したら圧縮を開始 LGPLのため動的に呼び出すようにしている void CMy7zipTes…

リストコントロールアイテムのカスタムドロー

NM_CUSTOMDRAWのイベントハンドラに下記のように記述する。 アイテムの設定を変更するとそれ以降のアイテムに影響するので デフォルト設定をしておかなければならない void CnmCustomDrawTestDlg::OnNMCustomdrawListNum(NMHDR *pNMHDR, LRESULT *pResult) {…

画像を透過色で透過する

右の画像の赤色の部分を透過したい 下記はMFCでのやり方 m_cBitmapはCBitmap型 IDB_BMP_IMGはイメージのリソースID 赤色で透過したいのでRGB(255, 0, 0) OnInitDlgで m_cBitmap.LoadBitmap(IDB_BMP_IMG); OnPaintで CPaintDC dc(this); BITMAP bmp; m_cBitma…

アプリケーションのインストールパスの取得方法

アプリケーションをインストールするとHKEY_LOCAL_MACHINEのSoftware\\Microsoft\\Windows\\CurrentVersion\\Uninstall に情報が書き込まれるのでそれを利用してアプリケーションのインストールパスを取得する。 下記のコードはGoogle Earthの場合。参考: ht…

UTF8変換

厳密ではないけどマルチバイト環境でもunicode環境でも使えるUTF8に変換する関数。 マルチバイト環境の時にMultiByteToWideCharとWideCharToMultiByteを 使わなければいけないのはどうにかならないものか。 int GetUTF8String(const TCHAR *pInBuf, char *pO…

ソート覚書

今までわざわざ面倒な方法でソートしていた。 こんな簡単にできるのに一体何をやっていたのだろう。 #include "stdafx.h" #define _CRT_RAND_S // の直前に#define すること #include #include #include #include #include class CSizeLess { public: bool o…

CAtlRegExpの使い方

boost::regexを試そうと思っていたが先にATLのCAtlRegExpを試してみる。文字列が正規表現にマッチしていなくても matchContext.m_uNumGroupsは中括弧括りの個数分だけ値を保持するものなのか・・・。 #include "stdafx.h" #include // CAtlRegExp #include i…

リストコントロールアイテムのソートの仕方

void ClistCtrlSortTestDlg::PrepareListHeader() { LVCOLUMN lvColumn; ::memset(&lvColumn, 0, sizeof(LVCOLUMN)); lvColumn.mask = LVCF_TEXT | LVCF_WIDTH; lvColumn.cx = 100; lvColumn.pszText = _T("num"); m_numList.InsertColumn(0, &lvColumn); } …

Boost.Regexライブラリ作成メモ

C:\Program Files\Microsoft Visual Studio 8\VC\binにパスを通す DOSプロンプトを起動してC:\Program Files\boost\boost_1_34_1\libs\regex\buildに移動する vcvars32.batを実行する nmake -f vc8.mak を実行する nmake -f vc8.mak installを実行する boost…

フォルダ選択ダイアログを表示するソースコード

int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED) { ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } return 0; } BOOL SelectFolderDlg(HWND hParent, CStrin…

よく忘れるのでメモ

Boost.regex PCRE 鬼車(oniguruma) ICU(boost.regexと組み合わせても使える) WWWCやnPopの作者Nakkaさんが公開している正規表現ライブラリLibrary CAtlRegExp ソース元 http://www.mylab.jp/diary/20060106.html

クラステンプレート引数に値を入れることが可能なことを知る。

でもあまり用途が思いつかない・・・。 #include "stdafx.h" template class ClassByClass { T t; }; template class ClassByValue { int m_value; public: ClassByValue() : m_value(value) {} }; int _tmain(int argc, _TCHAR* argv[]) { ClassByClass cla…