VC

ディレクトリ(フォルダ)をコピーする

実装方法としては、 ・ディレクトリの中のファイルをコピーする処理を作成する方法 ・シェル関数を用いる方法 の2つの実現実装方法があります。API版 BOOL CopyDirectory( LPCTSTR lpExistingDirectoryName, LPCTSTR lpNewDirectoryName ) { // 入力値チェ…

(C++)現在のログインしてるユーザ名を取得する

Windows API の GetUserName関数 を使えばいいようです。 //現在のユーザ名取得 TCHAR user[1024]; DWORD dwUserSize; // 取得したユーザ名の文字列の長さ if ( ! GetUserName(user,&dwUserSize) ){ return -1; } MessageBox(NULL,user,_T("ユーザ名"),MB_OK…

メモリマップドファイルのサイズ変更のつもりでCloseHandle()してからCreateFileMappingしても同じ名前じゃ意味が無い

名前変えないと、結局前作ったハンドルが返ってくる。サイズも変わってない。プロセスを落とすまでそうなるらしい。 ひょっとして、同じ名前(今回の場合は、"MAPFILE")で 異なるサイズのオブジェクトを作成しようとしたりしていませんか?ネタ元 http://hp…

ファイルまたはフォルダの移動およびリネーム

VC

BOOL MoveFile( LPCTSTR lpszOld, LPCTSTR lpszNew ) LPCTSTR lpszOld; // 移動/リネームするファイルのアドレス LPCTSTR lpszNew; // 移動/リネーム後のファイルのアドレス // 引数の設定 lpszOld = _T("C:\\sample.txt"); lpszNew = _T("C:\\test.txt");…

パラメータを受け取るラムダ式を受け取るメンバ関数の実装例

VC

…って作った後に参照キャプチャ/コピーキャプチャの存在を知った。 意味ない努力したけどメモ代わりに書いておく。 // ラムダ式受け取る側 #include <functional> ... BOOL Choge::CallFunc(std::function<BOOL(void*)> func,void* p_param){ .... //関数コール BOOL result = func(p_</bool(void*)></functional>…

DEP(Data Execution Prevention:データ実行防止)で実行停止の問題回避方法

VC

リンカ設定の詳細で データ実行防止(DEP)で「いいえ」を選択する。ネタ元 http://www.mitsubishielectric.co.jp/fa/document/technews/plc/fa-d-0051/fad0051d.pdf

.NET Visual Studio Installerを使ったインストーラの作成

VC

基本的な流れ http://computer.shipweb.jp/soft/dotnettips_wininst.htm DLLをCOM登録するにはプロパティでvsdrfCOMSelfReg指定。 http://www.freeml.com/msi/2028/latest マネージドDLLはvsdrfCOMじゃないとエラーになったよ。そういうもの? 作成されるシ…

WindowsVista以降だとCreateFileMapping()でGlobalのプレフィックスを付けた名前で共有メモリは作成できない

VC

うーむ。そうなのか・・・ WindowsVistaだと、管理者権限のないユーザーでログインしてWindowsアプリケーション を起動すると、CreateFileMapping関数がERROR_ACCESS_DENIED(アクセス拒否)で失敗し ます。 管理者権限のないユーザーでログインしていると、…

GetLastError() のエラーリスト

VC

ネタ元 http://ir9.jp/prog/ayu/win32err.htm

CMapを高速に使うためには

初期サイズを定義する SetAtではなく[]を使う 不得意分野では使わない 単純にすべてを羅列するような使い方の場合はCMapではなく、CArrayなどを検討したほうがいいです。 ネタ元 http://www.mfc-programming.com/2010/etc/mfc248.html

CMAPの定義例

CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;この例は MY_STRUCT 値を格納し、 int のキーにアクセスし、参照によって MY_STRUCT のアクセスされた項目を返します。 CMap< CString, LPCTSTR, CPerson, CPerson& > myMap2;この例では CPerson 値を格納し…

VC++でVBのDoEvents関数

VC

MSG msg; if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } }ネタ元 http://www.softist.com/programming/doevents/doevents.htm http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+20…

MFCでファイルの更新日付取得

[vc][mfc] CFileFind find; if(find.FindFile(tmpFilepath)) { find.FindNextFile(); CTime updateTime; find.GetLastWriteTime(updateTime); find.Close(); } ネタ元 http://oissu2.blog77.fc2.com/blog-entry-28.html

グローバルミューテックス

VC

[VC]そのコンピュータで唯一の資源をアクセスするための排他には"Global\\"をつけたグローバルミューテックスにする必要がある。 ミューテックスの名前としてアプリケーション固有の名前を指定する。 その際、その名前の先頭に「Global\」というプレフィック…

C++からVB.NET DLLの関数にDate型で値を渡すならCOleDateTimeを使う

[VC][VB][COM]どうも内部はdoubleの値となっているようで、それを渡せればOKみたい。 #include "ATLComTime.h" … DISPPARAMS params; ::memset(&params, 0, sizeof(DISPPARAMS)); params.cNamedArgs = 0; params.rgdispidNamedArgs = NULL; params.cArgs = 1…

Visual Studio 2013のインストールWin7でできなかったら、こっちからどうぞ

VC

最初 Win8.1PCにインストールしたので気が付かなかったが、Win7では制限がかかることがあるらしい。 Windows 7にVS2013をインストールしようとして軽くはまる こっちからダウンロードしたやつならWin7PCでも問題なかったよ。http://www.microsoft.com/ja-jp/…

BSTRからC文字列への変換

// BSTR to C String BSTR bstrStart; bstrStart = GetBSTR(); TCHAR szFinal[255]; // direct conversion from BSTR to LPCTSTR only works // in Unicode _stprintf(szFinal, _T("%s"), (LPCTSTR)bstrStart); AfxMessageBox(szFinal); _bstr_t bstrInterme…

マネージドDLL(.NETのクラスライブラリ)をC言語やC++から呼ぶ場合

VC VB

消えると困るのでコピペ コピペ元 http://satoshi.web5.jp/memo/connect_dll.htm##2 ======================================== VB.NET DLL側のプログラム プロジェクト名は vb_dllでクラスライブラリ作成( vb_dll.dllがビルドされる )プロジェクト → vb_d…

COM。MFCとVB.NETで作ったDLLでの文字列のやりとりにはBSTR

VC VB

メモ書きです。 BSTRか・・・呼び出し側がSysAllocString()で領域確保 DLLの関数側でセットして返す、なんて使い方。最後には呼び出し側がSysFreeString()する必要あるよ http://msdn.microsoft.com/ja-jp/library/xda6xzx7(v=vs.90).aspx http://www2.wbs.n…

気持ち悪いぐらい安いVisualStudio2013

VC

なんかMicrosoft Visual Studio 2013 Professional 日本語版が15,800円とかなんですけど…。 http://www.dlsoft.info/index.php?route=product/product&keyword=visual&product_id=139 お値段の秘密はこちら。 http://www.dlsoft.info/index.php?route=inform…

日付的文字列をCTimeに変換する簡単な方法

VC

[vc] const CString strDate = _T("2011/02/01 00:00:00"); COleDateTime oleTime; oleTime.ParseDateTime(strDate);これで oleTime に結果が入る。この COleDateTime は CTime にそのまま代入可能...って書いてあったけど嘘くさい。 ネタ元 http://sphere42…

マルチスレッドの場合はCoInitializeとCoUninitializeのペアを繰り返し呼んではならない。最初にCoInitializeしたら、プロセス終了時にCoUninitializeするまで触らないこと

[VC][開発] よくサンプルで CoInitializeとCoUninitializeで処理を挟んだサンプルがあるが、プロセスの最初と最後に呼ぶだけでいいらしい。特にマルチスレッドの場合は要注意なのだそうだ。 ネタ元 プログラム終了時にCOMが消えずにメモリリークする

OutputDebugStringはリリースビルド時に呼び出し削除されない

vc

こんな感じで工夫失いと消せない。 #ifndef _DEBUG #define OutputDebugStringA(x) ((void)0) #define OutputDebugStringW(x) ((void)0) #endif ネタ元 http://blogs.konuma.org/blog/2010/06/outputdebugstri/

コントロールキーの押下状態を知るにはGetKeyState()

vc

こんな感じ if ((GetKeyState(VK_CONTROL) & 0x8000)) { TRACE("ctrlキー押下!\r\n"); } else { TRACE("ctrlキー押下しない!\r\n"); }ネタ元 http://www.softist.com/programming/keystate/keystate.htm

VisualStudioで32bitアプリで2G以上のメモリを使うオプションの設定方法

vc

[vc] 32bitアプリケーション(プロセス)の仮想メモリ使用量は、通常2GBだけど/LARGEADDRESSAWARE オプションで 32bitOS上では、LARGEADDRESSAWAREモードにより、1:3にすることができるため、上限が3GBにできる。 64bitOS上では、LARGEADDRESSAWAREモードに…

C#で作成したクラスライブラリ(DLL)をMFCで利用する

[C#][VC][MFC]消えると困るのでコピペ MFC/C# – C#で作成したクラスライブラリをMFCで利用する 基本 COMを利用してMFCからC#のクラスを利用する C#側 [準備] 1.プロジェクトプロパティ>ビルド 「COM相互運用機能の登録」にチェックを入れる ※自分でregasmを…

実行ファイルのアイコンの変更するにはico上書き

vc

[vc]アイコンファイル(*.ico)をつくって、もとあるやつに上書きするiconは256x256,48x48,16x16で32bitのPNGの絵を@icon変換とかでicoファイルにする。フリーのicoはhttp://icones.pro/とかでも拾えるよ ネタ元 http://sorceryforce.com/visualstudio/execute…

スプラッシュウィンドウを表示してプログラムを起動する (VC++) サンプル

VC

[VC]検索するとサイトが死んでいるがキャッシュで生きてるページがあったのでメモ スプラッシュウィンドウを表示してプログラムを起動する (VC++) 実行モジュール (サンプル設定ファイル等付き) (Bootup.zip) (978 KB) ソース (Bootup.project.zip) (231 KB)

メモリリークを調べる関数 _CrtSetDbgFlag

VC

[VC]普通にデバッグモードで実行すれば、こんな定義しなくても勝手にメモリリーク教えてくれるような・・・。おれの知らないところでだれかがなにか細工してくれているのかな? フラグ 説明 _CRTDBG_ALLOC_MEM_DF デバッグ用のヒープメモリが使われるように…

WinInet を使ってフォームの POST 要求をシミュレートする方法

MFC WinInet クラスを使用する場合 CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // URL-encoded form variables - // name = "John Doe", userid = "hithere", other = "P&Q" CString strFormData = _T("name=John+Doe&us…