VC

Excelで開いているワークブック(WorkBook)の名前を表示 OLE

VC

// 開いているワークブック名をファイルを表示 for(int i = 0 ; i

Visual Studio 2010 + MFCでExcelを操作する OLE

ClassWizeard等からクラスの追加を選ぶ 「TypeLibからのMFCクラス」を選ぶ ここでMicrosoft Office Excel 12.0 Object Libraryを選んで「>>」ボタンで全て追加 ヘッダーファイルがガシガシ生成される 何故か#import文が入っていて、コンパイル時にエラー(…

プロセス間通信でデータをやり取りするときは WM_COPYDATAというメッセージ がキーワード

VC

ウインドウメッセージによるプロセス間通信(WM_COPYDATA) http://d.hatena.ne.jp/tekk/20091017/1255737721 ウインドウ管理 / プロセス間通信 http://eternalwindows.jp/winbase/window/window15.html

タスクトレイ ポップアップルメニューに、レ点チェック項目を利用する

VC

自前で値を保存していおいて、ポップアップメニュー表示時にON/OFFや文字列を差し替える。 afx_msg LRESULT Hoge::OnUserPopup(WPARAM wParam, LPARAM lParam) { // カーソルの現在位置を取得 POINT point; ::GetCursorPos(&point); switch(lParam) { case W…

Windows7にVisualC++6.0をインストールは強引に。

VC

インストールしようとすると「プログラム互換性アシスタント」に警告されるけど、そのまま強引にインストールして問題ないそうです。 ネタ元 http://www9.plala.or.jp/oga/vc6.html

フォルダ指定ダイアログを使う

VC

初期フォルダを指定するにはコールバック関数が必要と、めんどくさいよ。 // 初期フォルダ指定コールバック関数 TCHAR BrowseCallbackProc_buff[1024]=_T("c:\\"); int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData) { if(…

出力フォルダにソリューション(Win32/x64)も付けたいなら「$(Platform)」 

VC

32bitと64bitの実行ファイルを作るときに必要になる。出力ディレクトリを $(SolutionDir)$(Configuration)\$(Platform)\とすればOK

UNICODEの全角/半角/カタカナ/ひらがな/漢字を判定するにはGetStringTypeEx()

vc

以下コピペ 文字の種類を判別する方法。 GetStringTypeEx APIを使用する。 // 引数dataはUnicode文字列 void CXxxxx::xxxx(const wchar_t *data) { // 文字列の文字数 int length = wcslen(data); // 文字情報の配列 WORD *type = new WORD[length]; // 文字…

VisualStudio2010とかは、フィルター階層とフォルダ階層を同一にできない

VC

全部プロジェクトルートにファイルが置かれるのが前提みたい。フォルダ作って、その中のファイルをプロジェクトにいれると、インクルード階層がおかしくなって、コンパイルは通るけど赤い波線がでてうざい。 うーんやりづらいなぁ ネタ元 http://www.geociti…

急にデバックでブレークポイントが設定できなくなり、"ソースコードが元のバージョンと異なります"となる場合の対処法

vc

VSのバグっぽい。適当にコメント行を追加して、再度ビルドしなおしたら治った。 ネタ元 http://social.msdn.microsoft.com/Forums/ja/vcgeneralja/thread/eb1744d6-4304-45a2-a69c-502f826b1f40

アプリケーションのカレントパス取得にはGetCurrentDirectory()

VC

TCHAR szCurrentDir[_MAX_PATH]; GetCurrentDirectory(_MAX_PATH,szCurrentDir);ネタ元 http://rararahp.cool.ne.jp/vc/vctips/api.htm

シングルトンパターンの実装(C++風)

VC

オブジェクトが1個のみということを保証するクラスの書き方。 class SingletonClass { private: SingletonClass(void) {} public: static SingletonClass& getInstance(void) { static SingletonClass singleton; return singleton; } void doSomething(void…

UTF8→UTF16の変換にはMultiByteToWideChar()を使う

VC

ネタ元 http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200701/07010007.txt

CEditViewの改行コードは¥r¥n

VC

気づくのに随分時間かかった・・・。

ミューテックスによる2重起動防止の罠

VC

罠1:ミューテックスの作成前チェックとしてOpenMutex()を利用してはしてはいけない 罠2:CreateMutex()の戻りをチェックを省略してはいけない 罠3::CreateMutex()第1引数のLPSECURITY_ATTRIBUTESにNULLを指定してはいけない ネタ元 http://d.hatena.n…

ミューテックスの簡単な使い方

VC

コンストラクタとかでCreateMutex()同期処理ではこんな感じに書き、 WaitForSingleObject() ...多重アクセスされると困る変数やオブジェクトを利用する処理 ReleaseMutex()最後にデストラクタでCloseHandle()する

アプリケーション間でメモリマップドファイルを利用してメモリ共有

VC

ヘタにSOCKETとかで通信するより速いという噂。CreateFileMapping()で ハンドルに INVALID_HANDLE_VALUE を指定するとファイルすら作らない共有ができる データ送出の流れ CreateFileMappingで、メモリマップドファイルを作成する。 MapViewOfFileで、メモリ…

DLLでC側からVBA側へ文字列を渡す

VC

VBA側宣言のByVal x As Stringと VBA側でStringの領域を確保しておくのがミソVC++側 extern "C" __declspec (dllexport) int __stdcall Test2(char *X, char *Y); extern "C" __declspec (dllexport) int __stdcall Test2(char *X, char *Y) { Y[0] = 'A'; Y…

ワイド文字 マルチバイト文字 Shift-jis Unicodeのややこしい違いが明確になる図

VC

ネタ元 http://marupeke296.com/CPP_charUnicodeWideChar.html

プロセス間で動的メモリを共有・・・は難しいみたい

VC

http://d.hatena.ne.jp/ir9Ex/20051126/1132980505 CreatFileMapping とか、結局ファイルでやり取りするしか無いのかな。

DLLを経由しEXCEL VBAから参照渡しを使うには ByRef を利用する

VC

VBA Declare Function Foo Lib "test.dll" (ByRef result As Long) As LongVC++ extern "C" __declspec(dllexport) void __stdcall Foo(long &result);

共有メモリにあるポインタ変数に対してnewとかしても、そのエリアは共有じゃないよ

VC

あくまで #pragma data_seg("SHAREDMEM") 〜 #pragma data_seg()とかで囲んだエリアが共有。ここの中の変数にnewしたアドレスを入れて、別アプリに渡そうとしても、newしたメモリ空間は元アプリ固有のものだから、 そのアドレス使ったら、あっさり死ぬよ。 ※…

構造体の静的初期化

VC

配列の静的初期化なんて、めったにやらないから書き方忘れちゃってた。共有メモリで使う場合、初期化コード書かないと共有エリアになってくれないから、どうしても必要。 struct XXX{ char a[32]; char b[32]; char c[32]; char d[24]; } static struct XXX …

strtokのワイド文字版 wcstok_s

VC

入力が "コマンド|データ"という|で切りたい場合はこんな感じで使う。 CString sCommand; CString sData; TCHAR *next; sCommand = wcstok_s(pWbuffer,_T("|"),&next); sCommand.MakeLower(); // 小文字化 sData = wcstok_s(NULL,_T("|"),&next); sData.Mak…

charからwchar_tへの変換 mbstowcs_s

VC

setlocale()忘れがち。注意。 #include <locale.h> ... // pbuffer = 入力 setlocale(LC_ALL,"Japanese_Japan.932"); TCHAR pWbuffer[500]; size_t ReturnValue; mbstowcs_s(&ReturnValue, pWbuffer,(char*)pbuffer,500);逆にwchar_tからcharへの変換はwcstombs() ネタ</locale.h>…

マルチバイト文字列とワイド文字列

VC

ややこしやhttp://nano-niche.jugem.jp/?eid=57 ワイド文字(ワイドもじ)とは、主にC言語およびC++における文法要素で、1文字あたりのバイト数を通常より多くしたデータ型である。wchar_t型が実際に拡張実行文字集合を表現できるかどうかは処理系に依存し、…

WindowsDLLの共有メモリの使い方

VC

異なるアプリでメモリ共有ができる方法を探してます。これを試してみよう http://d.hatena.ne.jp/seraphy/20050118 http://nazochu.blogspot.jp/2011/08/dll.html

VC++2010でDLLを作って、かつ、デバッグする

VC

案外情報が無いし手間取った。 新規プロジェクトでMFC DLLを作成 呼び出されたい関数をcppに作成。 __declspec(dllexport)と__declspec(dllimport) がキモ extern "C" __declspec(dllexport) long AddLong(long, long); long AddLong(long i, long j){ retur…

キーボードの状態を取得する(WindowsAPI)

VC

以下2つの関数を利用する方法がある。 ・GetAsyncKeyState ・GetKeyboardState ネタ元 http://rina.jpn.ph/~rance/directx8/03/03.html

MD5ハッシュを生成するにはCrypt 関連 API を使用すればよい

VC

ネタ元 http://orangeknowledge.jpn.org/tips/mfc029.html