VC

MFCラジオボタンの基本

リソースエディタでラジオボタンを配置する グループにしたいラジオボタンのうち、最初のタブオーダーのラジオボタンだけ「Group」をTrueにします。他はデフォルトのままでOK DDX変数を追加しましょう。グループの最初のラジオボタンを右クリックし、「変数…

Visual Studio 2017でスタティックライブラリプロジェクトの作り方

VC

・メニュー バーで [ファイル]、[新規]、[プロジェクト] の順にクリックします。 ・[新しいプロジェクト] ダイアログ ボックスの左ウィンドウで、[インストールされたテンプレート]、[Visual C++] を展開し、[Win32] をクリックします。 ・中央のウィンドウ…

意外と知らない?Visual Studio の「必ずインクルード」プロパティ

vc

Visual Studio でプリコンパイル済みヘッダーを有効にすると、 stdafx.h を最初にインクルードしないといけないのですが、 ソースファイルに書きたくない(書けない)場合の対処方法。ネタ元 http://srz-zumix.blogspot.jp/2012/10/visual-studio.html

c++ rest sdk使おうとして#include <cpprest/http_client.h>したらエラーになった時の対処法

vc

#include <cpprest/http_client.h> #include <cpprest/filestream.h> こうなった時はパスが通ってないだけ。 プロジェクトプロパティ - >構成プロパティ - > C / C ++ - >一般 - >追加インクルードディレクトリでこちらのパスを含める必要があります:C:\ YourProject \ packages \ cpprestsdk.v140.winde</cpprest/filestream.h></cpprest/http_client.h>…

DLLのエントリ(関数)を確認するには dumpbin

vc

コマンドプロンプトでは使えません。VisualStudio コマンドプロンプトから使います。 dumpbin /exports HelloWorld.dll ネタ元 http://replication.hatenablog.com/entry/2014/05/02/101020

Visual C++でのDLLの一般的な作成方法(暗黙的リンク)

VC

けっこうめんどい。 ネタ元 http://fa11enprince.hatenablog.com/entry/2014/06/20/015808

WinINet(InternetReadFile)によるファイル(HTMLも含む)のダウンロード

vc

int Web_Downloader(char *Server_Host_Address, char *FileLocation, char *Referer , char *SaveDirectory , char *SaveName ) { //返り値一覧 // //-106:ERR_INTERNET_DISCONNECTED インターネットに接続されていない。 //-403:"403 Forbidden" サーバー…

ShiftJisとUTF8間のコード変換(VC++)

VC

char* szShiftJis = "雨にも負けず、風にも負けず。"; char bufUTF8[MAX_PATH]; char bufShiftJis[MAX_PATH]; void ShiftJisToUTF8() { wchar_t bufUnicode[MAX_PATH]; // まずUniocdeに変換する // サイズを計算する int iLenUnicode = MultiByteToWideChar…

WebBrowser コントロールで使われている Internet Explorerを最新のバージョンに変更する

VC VB

WebBrowserコントロールを利用した場合、デフォルトの状態ではWebBrowserコントロールはInternet Explorer 7。 バージョンを変更するにはレジストリをイジる必要がある。場所は \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureContr…

いちいち再コンパイルされてしまう時の原因

vc

ファイルの日付が未来のが混じってるはず。探してみて。ネタ元 https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/c9b528b8-8993-4ba3-9735-b9caff936e12?forum=vcgeneralja

HWND←→CWndの変換

VC

// HWND→CWnd* CWnd* pCWnd = CWnd::FromHandle( hwnd ); // CWnd*→HWND HWND hwnd = pCWnd->GetSafeHwnd();ネタ元 http://d.hatena.ne.jp/octech/20070224/1172312355

MFCで一番簡単なマウス砂時計にする方法

宣言するだけ CWaitCursor wc;関数やスコープ抜けるところで元に戻る 簡単。ネタ元 http://park1.wakwak.com/~ima/visualcpp_tips0006.html

一番簡単な外部プログラムの実行

vc

ShellExecute(NULL,_T("open"),_T("実行したいexeのフルパス"),NULL,NULL,SW_SHOW);ネタ元 http://technologicaladvance.blog.fc2.com/blog-entry-61.html

BSTR 覚え書き

VC

消えると困るのでコピペ コピペ元 http://www2.wbs.ne.jp/~kanegon/doc/bstr.txt BSTR 覚え書き 2002.2.19 kanegon create 2002.2.23 kanegon update BSTR は見かけ上(Windowsヘッダ上)、LPOLESTR と等しい。 typedef WCHAR OLECHAR; // ※ typedef OLECHAR _…

ATLとMFCの併用

vc

MFCとATLを共用するにはコツがいる。 ネタ元 Visual C の ATL プロジェクトに MFC サポートを追加する方法 MFC プロジェクトへの ATL サポートの追加 ATL プロジェクトでの MFC のサポート

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

実装方法としては、 ・ディレクトリの中のファイルをコピーする処理を作成する方法 ・シェル関数を用いる方法 の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…