VC

VC++ Altキーの仮想キーの定義はVK_MENU

VC

わかりにくいね ネタ元 http://wisdom.sakura.ne.jp/system/winapi/win32/win32.html

MFCのCDialogでEnterキー(Escキー)を押されたとき親ウィンドウに委ねる

BOOL CHogeChildDialog::PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case VK_RETURN: return FALSE; // 親にゆだねる case VK_ESCAPE: return FALSE; // 親にゆだねる default: break; } } return CDial…

MFCでURLをブラウザで開く

VC

bool OpenUrl(LPCTSTR lpszUrl) { HINSTANCE hInst = ShellExecute(NULL,"open",lpszUrl,NULL,NULL,SW_SHOWNORMAL); if(hInst < (HINSTANCE)32){ // 32未満は起動に失敗 return false; } retuen true; } ネタ元 http://www.ikuyama.net/ryo/mfc/mfc04.html

致命的エラー C1052 の対処方法

VC

プログラム データベース ファイルでは、'filename'、;/DEBUG:fastlink のリンカーによって生成されたコンパイラできませんこのような PDB ファイルを更新; か削除してください、/Fd を使用して、別の PDB ファイル名を指定するには というのがでたら、 プロ…

「warning LNK4075: /EDITANDCONTINUE は /SAFESEH の指定によって無視されます」の対処方法

VC

プロジェクトをアップグレードすると vcxproj ファイルに本来記述されるべき UseDebugLibraries 属性が記述されないため、vcxproj ファイルをテキストエディタで開いて</Project>の前に以下を追加 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseDebugLibraries>true</usedebuglibraries></propertygroup>

エラー メッセージ "外部シンボル _WinMain@16 は未解決です" 対策

VC

visualstudio 2019にプロジェクトをアップデートしたら出た。プロパティみたら もともとユニコード対応プロジェクトじゃなかったのに 文字セットの項目がUnicode になってたので 「マルチバイト文字セットを使用する」に変えたら治った。 ネタ元 https://sup…

デュアルディスプレイ、マルチディスプレイのとき、全部まとめたサイズを取得する

VC

int dispx = GetSystemMetrics( SM_CXVIRTUALSCREEN); int dispy = GetSystemMetrics( SM_CYVIRTUALSCREEN); ネタ元 http://d.hatena.ne.jp/yu-hr/20100312/1268419472 https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getsystemm…

VC++で正規表現

VC

MFCでは正規表現のライブラリ無いけど標準のほうを使えば使える。C++11で名前空間がtr1からstdになってるらしいので新しい環境ならそれに置き換えてね #include <iostream> #include <string> #include <regex> ... std::tr1::regex regPattern(strPattern); std::tr1::match_results<const char *> </const></regex></string></iostream>…

テンポラリ(一時)フォルダ取得

VC

GetTempPath()使う TCHAR tmpDir[MAX_PATH]; GetTempPath(MAX_PATH, tmpDir); ネタ元 https://msdn.microsoft.com/ja-jp/library/cc429354.aspx?f=255&MSPPError=-2147217396

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