VC

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

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.mlexp.com/techlib/2011/02/vc.h…

マルチスレッドの場合は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…

ダイアログ(CDialog)の返り値指定にはEndDialog()

[vc][mfc]EndDialog(1);ってやると、1が返るようになる ネタ元 http://www.crimson-systems.com/tips/t037g.htm

CStringListとstl::vectorを使っているコードがあるとC2248がでることがある

vc

[vc]CStringListを含んだ構造体を関数に間違って値渡しで渡すとC2248になることがある。ポインタか参照渡しにすれば出なくなった。 なんだかよくわからないがSTL使うとVCのバージョンアップの時に色々不幸が多いみたい。 なるべく使わないほうが楽に生きられ…

CreateDirectory()エラー時の詳細チェック方法(既にフォルダが存在する、など)

[vc][mfc]GetLastError()とInternetGetLastResponseInfo()を使うFTPサーバからのレスポンスがInternetGetLastResponseInfoで受け取る文字列に入るみたい if( !m_ftpConP->CreateDirectory(dirName) ){ long error_code = GetLastError(); if( error_code == …

CFileFindでファイルの存在チェック

[vc][mfc] ファイル単体の存在チェック CFileFind find; CString filePath = _T("C:\\foo.bar"); if( find.FindFile( filePath ) ){ // ファイルが存在 } フォルダ内ファイルの存在チェック 以下の例ではでファイル名の条件を指定。 CFileFind find; CString…

GetFtpConnection()で12014のエラーとなったら、なにか接続の設定がおかしい

[vc][mfc]引数の前後にスペースが混じっちゃってるとか、イージーミスの可能性大。 FTPの環境設定に誤りがあると考えられます。以下を確認してください。 FTPアカウント 性能情報出力画面のFTP環境設定により、運用管理サーバに登録されたアカウントが正しく…

FTPクライアントをMFCで作るなら CInternetSession CFtpConnection

[vc][mfc]メモ 典型的な FTP クライアント アプリケーションの作成手順 FTPクライアントを作る1 ↑開放処理が抜けてるコードなので注意。後始末はこうやる必要があるよ。 if (m_ftpConP){ m_ftpConP->Close(); delete m_ftpConP; m_ftpConP = NULL; } if (m_…

Visual C++インラインアセンブラをx64に移植する

vc

Visual C++ x64版ではインラインアセンブラが使えません。64bit化するにはインラインアセンブラの部分をなんとかしないといけません。 以下メモvc x64 インラインアセンブラ http://www.officedaytime.com/tips/asm64/

序数を割り当てないでください。というワーニングが出たら .defファイルの @1 とかを削ればOK

VC

序数とは関数に割り付ける番号のようなもの。 LIBRARY mydll EXPORTS Swap @1昔はこっち使ったほうが高速とかいう噂があったけど、 MSDNに「上記の関数は常に名前で参照されるため、序数は不要」と記述があるそうで。 ただ、序数を指定していても実行時にエ…

VCRTDServer::ConnectData()の引数Stringsから引数を得る方法

VC

SAFEARRAYという型なので、SafeArrayGetElement()という関数を使ってアクセスする ::SafeArrayLock( *Strings ); VARIANT data; long i=0; HRESULT res = SafeArrayGetElement(*Strings,&i,( void* )&data); ::SafeArrayUnlock( *Strings );ネタ元 http://ma…

strtok_s()の使い方

VC

最後の引数が意味不明だったけど、とりあえず使えるようになった #include <stdio.h> #include <string.h> #ifndef null_ptr #define null_ptr 0 #endif char str[] ="asdc,fghm jkl;";//分割したい文字列 char *delim = ", ";//デリミタ(複数渡せる)ここではカンマと空白 cha</string.h></stdio.h>…

BSTR を char に変換するなら WideCharToMultiByte()

VC

//BSTR を char に変換---------------------------------------------- char buf2[64]=""; WideCharToMultiByte( CP_ACP, // コードページ ANSI コードページ 0, // 処理速度とマッピング方法を決定するフラグ (OLECHAR*)bstr, // ワイド文字列のアドレス -…

DLLをコンパイルして「_DLLMain@12はすでに定義されています」と言われたら、リンクの順序を変えてあげよう

VC

http://d.hatena.ne.jp/TEMPO/?of=5こちらの例では プロジェクト->プロパティ->構成プロパティ->リンカ->入力->特定のライブラリの無視のところに「mfcs71d.lib;msvcrtd.lib」 追加の依存ファイルのところに「mfcs71d.lib;msvcrtd.lib」 と設定してリンクの…

マイクロソフトの技術サポート窓口

VC

https://support.microsoft.com/select/?target=assistance&ln=ja