VC

MFCプロジェクトで突然ATLエラーでコンパイルできなくなったらWindows SDKバージョンを下げよう

VC

最新版にしてると、なにかのアップデートで勝手に対象が変わり、ATL周りでコンパイルエラーになることがある。 その場合はWindows SDKバージョンを前のにして固定すれば治る

VC++でブラウザコントロール

#include <windows.h> #include <tchar.h> #import <shdocvw.dll> #import <mshtml.tlb> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HRESULT hr = ::CoInitialize(NULL); //COMを使うときのお約束 if (FAILED(hr)) { return -1; } NewIE(); //新</mshtml.tlb></shdocvw.dll></tchar.h></windows.h>…

VC++でファイルが読み込み専用か確認する

C VC MFC

long attr = GetFileAttributes(pFilename); if(attr != -1){ // ファイルがないと-1 if (FILE_ATTRIBUTE_READONLY == (attr & FILE_ATTRIBUTE_READONLY)) { CString mess; mess.Format("ファイルの書き込みに失敗しました。読み込み専用になっている可能性…

C++でURLエンコード&デコード

VC

bool is_safe_char(UCHAR c) { return isalnum(c) || c == '.' || c == '-' || c == '_' || c == '*'; } char* encode_char_to_hex(char c, char* dist) { dist[0] = '%'; dist[1] = "0123456789ABCDEF"[(c & 0xF0) >> 4]; dist[2] = "0123456789ABCDEF"[c &…

MFCでUTF-8/UTF-16のファイル読込・保存

vc

普通に読むとsjis前提になっちゃう。UTF-8 CString line; FILE *fp; _tfopen_s(&fp,_T("C:\\utf8.txt"), _T("r, ccs=UTF-8")) CStdioFile file(fp); while (file.ReadString(line)) { AfxMessageBox(line); } file.Close(); ネタ元 https://faithandbrave.ha…

system("")じゃコマンドプロンプトでちゃうので、表示で実行する方法

vc

定義 #include <Windows.h> #pragma comment( lib, "shell32.lib" )実行 ShellExecute(NULL, L"open", L"cmd.exe", L"/c C:/work/bat/test.bat", L"", SW_HIDE); ネタ元 https://www.lisz-works.com/entry/2016/11/16/224520</windows.h>

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 のサポート