VC
// 開いているワークブック名をファイルを表示 for(int i = 0 ; i
ClassWizeard等からクラスの追加を選ぶ 「TypeLibからのMFCクラス」を選ぶ ここでMicrosoft Office Excel 12.0 Object Libraryを選んで「>>」ボタンで全て追加 ヘッダーファイルがガシガシ生成される 何故か#import文が入っていて、コンパイル時にエラー(…
ウインドウメッセージによるプロセス間通信(WM_COPYDATA) http://d.hatena.ne.jp/tekk/20091017/1255737721 ウインドウ管理 / プロセス間通信 http://eternalwindows.jp/winbase/window/window15.html
自前で値を保存していおいて、ポップアップメニュー表示時にON/OFFや文字列を差し替える。 afx_msg LRESULT Hoge::OnUserPopup(WPARAM wParam, LPARAM lParam) { // カーソルの現在位置を取得 POINT point; ::GetCursorPos(&point); switch(lParam) { case W…
インストールしようとすると「プログラム互換性アシスタント」に警告されるけど、そのまま強引にインストールして問題ないそうです。 ネタ元 http://www9.plala.or.jp/oga/vc6.html
初期フォルダを指定するにはコールバック関数が必要と、めんどくさいよ。 // 初期フォルダ指定コールバック関数 TCHAR BrowseCallbackProc_buff[1024]=_T("c:\\"); int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData) { if(…
32bitと64bitの実行ファイルを作るときに必要になる。出力ディレクトリを $(SolutionDir)$(Configuration)\$(Platform)\とすればOK
以下コピペ 文字の種類を判別する方法。 GetStringTypeEx APIを使用する。 // 引数dataはUnicode文字列 void CXxxxx::xxxx(const wchar_t *data) { // 文字列の文字数 int length = wcslen(data); // 文字情報の配列 WORD *type = new WORD[length]; // 文字…
全部プロジェクトルートにファイルが置かれるのが前提みたい。フォルダ作って、その中のファイルをプロジェクトにいれると、インクルード階層がおかしくなって、コンパイルは通るけど赤い波線がでてうざい。 うーんやりづらいなぁ ネタ元 http://www.geociti…
VSのバグっぽい。適当にコメント行を追加して、再度ビルドしなおしたら治った。 ネタ元 http://social.msdn.microsoft.com/Forums/ja/vcgeneralja/thread/eb1744d6-4304-45a2-a69c-502f826b1f40
TCHAR szCurrentDir[_MAX_PATH]; GetCurrentDirectory(_MAX_PATH,szCurrentDir);ネタ元 http://rararahp.cool.ne.jp/vc/vctips/api.htm
オブジェクトが1個のみということを保証するクラスの書き方。 class SingletonClass { private: SingletonClass(void) {} public: static SingletonClass& getInstance(void) { static SingletonClass singleton; return singleton; } void doSomething(void…
ネタ元 http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200701/07010007.txt
気づくのに随分時間かかった・・・。
罠1:ミューテックスの作成前チェックとしてOpenMutex()を利用してはしてはいけない 罠2:CreateMutex()の戻りをチェックを省略してはいけない 罠3::CreateMutex()第1引数のLPSECURITY_ATTRIBUTESにNULLを指定してはいけない ネタ元 http://d.hatena.n…
コンストラクタとかでCreateMutex()同期処理ではこんな感じに書き、 WaitForSingleObject() ...多重アクセスされると困る変数やオブジェクトを利用する処理 ReleaseMutex()最後にデストラクタでCloseHandle()する
ヘタにSOCKETとかで通信するより速いという噂。CreateFileMapping()で ハンドルに INVALID_HANDLE_VALUE を指定するとファイルすら作らない共有ができる データ送出の流れ CreateFileMappingで、メモリマップドファイルを作成する。 MapViewOfFileで、メモリ…
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…
ネタ元 http://marupeke296.com/CPP_charUnicodeWideChar.html
http://d.hatena.ne.jp/ir9Ex/20051126/1132980505 CreatFileMapping とか、結局ファイルでやり取りするしか無いのかな。
VBA Declare Function Foo Lib "test.dll" (ByRef result As Long) As LongVC++ extern "C" __declspec(dllexport) void __stdcall Foo(long &result);
あくまで #pragma data_seg("SHAREDMEM") 〜 #pragma data_seg()とかで囲んだエリアが共有。ここの中の変数にnewしたアドレスを入れて、別アプリに渡そうとしても、newしたメモリ空間は元アプリ固有のものだから、 そのアドレス使ったら、あっさり死ぬよ。 ※…
配列の静的初期化なんて、めったにやらないから書き方忘れちゃってた。共有メモリで使う場合、初期化コード書かないと共有エリアになってくれないから、どうしても必要。 struct XXX{ char a[32]; char b[32]; char c[32]; char d[24]; } static struct XXX …
入力が "コマンド|データ"という|で切りたい場合はこんな感じで使う。 CString sCommand; CString sData; TCHAR *next; sCommand = wcstok_s(pWbuffer,_T("|"),&next); sCommand.MakeLower(); // 小文字化 sData = wcstok_s(NULL,_T("|"),&next); sData.Mak…
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>…
ややこしやhttp://nano-niche.jugem.jp/?eid=57 ワイド文字(ワイドもじ)とは、主にC言語およびC++における文法要素で、1文字あたりのバイト数を通常より多くしたデータ型である。wchar_t型が実際に拡張実行文字集合を表現できるかどうかは処理系に依存し、…
異なるアプリでメモリ共有ができる方法を探してます。これを試してみよう http://d.hatena.ne.jp/seraphy/20050118 http://nazochu.blogspot.jp/2011/08/dll.html
案外情報が無いし手間取った。 新規プロジェクトでMFC DLLを作成 呼び出されたい関数をcppに作成。 __declspec(dllexport)と__declspec(dllimport) がキモ extern "C" __declspec(dllexport) long AddLong(long, long); long AddLong(long i, long j){ retur…
以下2つの関数を利用する方法がある。 ・GetAsyncKeyState ・GetKeyboardState ネタ元 http://rina.jpn.ph/~rance/directx8/03/03.html
ネタ元 http://orangeknowledge.jpn.org/tips/mfc029.html