MFC

新着順 人気順

MFCラジオボタンの基本

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

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

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

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

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

VC++/MFCで実行ファイルのパスを取得

MFC

// 実行ファイルのパスを取得 CString GetModulePath() { // 実行ファイルのパス CString modulePath = _T(""); // ドライブ名、ディレクトリ名、ファイル名、拡張子 wchar_t path[_MAX_PATH], drive[_MAX_PATH], dir[_MAX_PATH], fname[_MAX_PATH], ext[_MA…

ボタンを押せなくするにはEnableWindow(FALSE)

何でも有効/無効を切り替えるにはこれみたい

CString小文字変換はMakeLower()

大文字変換はMakeUpper();ネタ元 http://www.piao.jp/~yo-mk/Tips/cppLang1.html

マウスが領域から離れた(WM_MOUSELEAVE)を受け取るには_TrackMouseEvent()が必要

MFC

_TrackMouseEvent()を使ってOnMouseLeave()に飛ぶように設定する。 Cソース BEGIN_MESSAGE_MAP(CImageButton, CButton) //{{AFX_MSG_MAP(CImageButton) … ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave) //}}AFX_MSG_MAP END_MESSAGE_MAP()void CImageButton::OnM…

CStringの内容が全部数字かどうか確認する

MFC

// strにチェック前文字列が入っています。 CString res = str.SpanIncluding("0123456789"); if(res == str){ AfxMessageBox(_T("これは数字なり〜")); } ネタ元 http://blog.mylab.jp/20040831.html http://msdn.microsoft.com/ja-jp/library/2fhyz756(v=v…

CMAPの定義例

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

MFC アプリケーションを終了する方法

MFC

// same as double-clicking on main window close box ASSERT(AfxGetMainWnd() != NULL); AfxGetMainWnd()->SendMessage(WM_CLOSE);ネタ元 http://support.microsoft.com/kb/117320/ja

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

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

mfcで画面を強制的に再描画させる方法

mfc

問答無用なら InvalidateRect(0,0,false); //画面全体に再描画を要求ウインドウハンドルしていすれば、そのアイテムだけ再描画するネタ元 http://okwave.jp/qa/q112210.html

CMapの速度テスト

MFC

適当にテスト。 当然ながらKeyがlongでInitHashTable()したやつがいっちゃん速かった。 Key:CStringと比べて数倍早い // Key:CStringでInitHashTable()なし // CString keyがループの中 { long tick = GetTickCount(); CMap<CString ,LPCTSTR,long,long& > mapdata; for(int i=0;i<1000000;</cstring>…

CArrayのループ

MFC

シンプルにforループ for (int i = 0; i < array.GetSize(); i++) { str = str + array[i] + "\r\n"; } ネタ元 http://www7b.biglobe.ne.jp/~makandat/VC/Group17/CArray.htm

MFCで日数の差分計算

MFC

COleDateTime nowdatetime = COleDateTime::GetCurrentTime(); COleDateTime predatetime(2020,4, 14,0,0,0); COleDateTimeSpan span(nowdatetime - predatetime); // 3日以内チェック if (span.GetTotalDays() <= 3) { ... } ネタ元 https://okwave.jp/qa/q…

VC++ MFCでディレクトリ内のファイル一覧を取得する

mfc

#include "atlpath.h" BOOL GetFileList(CString path,CStringArray* outArray) { // ファイル検索を開始します。 CFileFind fileFind; BOOL bResult = fileFind.FindFile(path); // ファイル検索ができない場合、終了します。 if (!bResult) return FALSE; …

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>…

MFCでIEじゃなくEdgeのコンポーネントを利用するサンプル

WebView2が使える。これでIEとおさらばできるかと思えば、ChroniumベースのEdgeがインストールされてる環境が前提。 お客さん向けに作るならChroniumベースのEdgeが使える環境/使えない環境を判断してコントロールを使う必要がありそうだ。ネタ元にはサンプ…

MFCで文字列分割 strtok的な

MFC

CAtlString strRows; CAtlString row; int curPos = 0; // 分割対象の文字列 // 最後に改行コードがあってもなくても構わない strRows = _T("row1\r\nrow2\r\nrow3\r\n"); //strRows = _T("row1\r\nrow2\r\nrow3"); // 最初の改行までの文字列を取り出す row…

CEditでSetWindowText()するとカーソル位置が変わっちゃう問題対策

MFC

int nLine = m_edt.GetFirstVisibleLine(); m_edt.SetWindowText(str); m_edt.LineScroll(nLine); ネタ元 https://rarara.org/community/programming/CEdit%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E4%BD%8D%E7%BD%AE%E3%81%AE%E4%BF%9D%E6%…

MFCでボタン等の相対座標をもとめて移動させる

MFC

GetWindowRect()では絶対座標が取れるので そのままMoveWindow()するとどっか飛んでっちゃう。ScreenToClient()を使ってクライアント座標に変換しましょう。 POINT pt; RECT re; GetWindowRect(button_hWnd,&re); //ボタンの画面上の座標を取得 pt.x=re.left…

OutputDebugStringに書式指定版を作る

MFC

ヘッダで以下を定義 #ifdef OutputDebugString #undef OutputDebugString #endif #ifdef UNICODE #define OutputDebugString OutputDebugStringFW #define OutputDebugStringV OutputDebugStringFVW #else #define OutputDebugString OutputDebugStringFA #d…

MFC に XAML Islands で UWP のコントロールを追加する技を使い IEじゃないEdgeのコントロールを利用してみる試み

mfc

チャレンジ中BK4504 エラーがでるので以下をみて対策。これでいいのかな? "BSCMAKEエラーBK1500:内部エラー"を取り除く方法コンパイルエラー https://kotaeta.com/53804360 検索すると「Windows Community Toolkit 」をNuGetで導入・・・なんて解説がある…

MFCで強制的に日本時間(UTC+9)を取得

MFC

UTC時間取得して+9時間する COleDateTime dt; SYSTEMTIME stUTC{}; GetSystemTime(&stUTC); dt = stUTC; COleDateTimeSpan tsNis; tsNis.SetDateTimeSpan(0, 9, 0, 0); // +9 (日本時間に矯正) dt += tsNis;

MFCで日付の間隔取得

MFC

COleDateTime dt1( yyyy, mm, dd ); COleDateTime dt2( yyyy, mm, dd ); COleDateTimeSpan span( dt1 - dt2 ); printf( "%d 日間です", span.GetTotalDays() ); ネタ元 https://oshiete.goo.ne.jp/qa/649520.html

MFCでウインドウを最大化する

MFC

ShowWindow(SW_SHOWMAXIMIZED ) ネタ元 https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2010/72szh9c7(v=vs.100)

MFC フォームが最小化あるいは最大化されたことを知るには

MFC

OnSize()イベントで引数がOnSize(UINT nType, int cx, int cy) となるがnTypeがSIZE_MAXIMIZEDなら最大化されたと判定できる。 SIZE_MINIMIZEDなら最小化。 ネタ元 C#だけど https://dobon.net/vb/dotnet/form/minimized.html

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

C VC MFC

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

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…

CDialogでEnterキー(Escキー)を押しても、ダイアログが閉じないようにする

MFC

PreTranslateMessage()追加して、以下記述 BOOL CXXXDialog::PreTranslateMessage(MSG* pMsg) { if( WM_KEYDOWN == pMsg->message ) { switch( pMsg->wParam ) { case VK_RETURN: return FALSE; case VK_ESCAPE: return FALSE; default: break; } } return C…