MFC

MFCのコンボボックスで編集禁止にする方法

MFC

コンボボックスのプロパティのスタイルタブのタイプをドロップダウンリストにする ネタ元 http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+200108/01080034.txt

コンボボックス CComboBox で選択指定

MFC

CComboBox::SetCurSel() ネタ元 https://msdn.microsoft.com/ja-jp/library/at7s2662.aspx

CListCtrlで選択されているアイテムを調べる

MFC

// CListCtrl m_ListCtrl int iSelected = m_ListCtrl.GetNextItem( -1, LVNI_SELECTED ); if( iSelected < 0 ){ // 選択されていない } ネタ元 https://mfcprogramming.wordpress.com/2010/11/01/clistctrl-%E9%81%B8%E6%8A%9E%E3%81%95%E3%82%8C%E3%81%A6%…

CListCtrlで選択行を設定する

MFC

m_ListCtrl.SetItemState(0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); ネタ元 http://www.mfc-programming.com/2014/clistctrl/mfc585.html

CFileで読み込んだファイルデータにゴミが!! バッファ未初期化じゃない?

MFC

うっかり。 CString FileName="ファイル名"; char buff[10]; UpdateData(TRUE); CFile fin.Open(FileName,CFile::modeRead | CFile::typeBinary); fin.Read(buff,10); m_Edit=buff; UpdateData(FALSE); ネタ元 http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/…

Jsonデータで受け取ったUTF8の文字列をSJIS変換

MFC

std::string data; wchar_t str2[512]; char str3[512]; ... picojson::object&obj = (*i).get<picojson::object>(); data = obj["text"].get<std::string>(); //UTF-8からShift-JISに変換(str3に格納) MultiByteToWideChar(CP_UTF8, 0, data.c_str(), strlen(data.c_str()) + 1, str2, MAX_</std::string></picojson::object>…

MFCで文字列の比較(アルファベット順とか)。CStringListにソートして格納例

CompareStringという関数がある。 CString input_string = "..."; // アルファベット順にソートして格納 POSITION tmp_pos = output_cstringlist.GetHeadPosition(); while( tmp_pos ){ POSITION bk_tmp_pos = tmp_pos; CString tmp_cstring = output_cstrin…

MFCのCFileDialogで複数のファイルを取得する

MFC

OFN_ALLOWMULTISELECTを設定すると複数のファイルが選択できるようになります。 しかし、これだけではたくさんファイルを選択すると不具合が発生します。 これはファイル名を受け取るバッファがデフォルトのままでは少ないため記憶できる限界を超えてしまう…

MFCでディレクトリ内の全てのファイルの取得する

MFC

/*-------------------------------------------------------------------------------/ 関数名:void FindAllFile(LPCTSTR pstrName, CListBox &listbox, BOOL bFolder) 引 数:pstrName 検索するファイルの名前が入っている文字列へのポインタ。 listbox …

MFCのCStringでフルパスからファイル名だけ取る

MFC

CString str = _T("C:\\aafafadfas\\hytgafsdfd\\fklwaetaf\\pickup.txt"); str = str.Right(str.GetLength()-str.ReverseFind(_T('\\'))-1); ネタ元 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12115067447

テンポラリ(一時)ファイル名を作る

MFC

TCHAR tmpDir[MAX_PATH]; GetTempPath(MAX_PATH, tmpDir); TCHAR tmpFilename[MAX_PATH]; GetTempFileName(tmpDir,"tmp",(UINT)pos,tmpFilename); ネタ元 https://msdn.microsoft.com/ja-jp/library/cc429354.aspx

MFC CArray を qsort する

MFC

struct StructHoge { int number; }; ・・・ CArray <StructHoge, StructHoge> arrayHoge; ・・・ int compareHoge(void* context, const void* a1, const void* a2) { StructHoge* p1 = (StructHoge*)a1; StructHoge* p2 = (StructHoge*)a2; if (p1->number != p2->number) { return</structhoge,>…

MFC エディットコントロールの高さを、文字列や横幅にあわせて自動的に変更する

MFC

GetWindowRect()で情報を得る void ChangeEdit2Height(){ // 文字列の取得 CString strBuff; int nstrLen = ce2.GetWindowTextLength() + 2; ce2.GetWindowText(strBuff.GetBuffer(nstrLen), nstrLen); strBuff.ReleaseBuffer(); // IDC_Edit2のサイズ変更 C…

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ラジオボタンの基本

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

MFC ウィンドウを常に手前に表示する

MFC

SetWindowPos() の第一引数に &wndTopMost を指定 SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW); ネタ元 http://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc02/index.html

MFC ダイアログ上のボタンを無効にする

MFC

CButton *button=(CButton*)GetDlgItem(IDC_BUTTON1); // 使用禁止 button->EnableWindow(FALSE); // 使用許可 button->EnableWindow(TRUE); ネタ元 http://rarara.cafe.coocan.jp/vc/vctips/button.htm

WinInetによるインターネット上ファイルの読み込みサンプル

MFC

超簡単サンプルです。ファイルの全部読み込みとか なーんもやってない。 { LPTSTR lpszBuf=(LPTSTR)GlobalAlloc(GPTR,1024); /* ハンドル作成 */ HINTERNET hInet=InternetOpen(_T("TEST"),INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0); /* URLオープン */ HINTE…

背景色を指定するにはSetBkColor()関数

MFC

SetBkColor(hdc , RGB(0xFF , 0 , 0));ネタ元 http://wisdom.sakura.ne.jp/system/winapi/win32/win21.html

MFC メモリデバイスコンテキストに文字列を出力

MFC

/************************************************* 関数名 DrawStringToHDC 機能 メモリデバイスコンテキストに文字列を出力 iXsize : 出力画像の幅(Width) iYpos : 縦方向の出力位置 *************************************************/ void DrawStrin…

MFC プログラムで画像を描いてイメージリストに追加するサンプル

MFC

// 日の丸を作成 // メモリ上にデバイス独立ビットマップを(DIB)作成する。 ZeroMemory(&bmp,sizeof(bmp)); bmp.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); bmp.bmiHeader.biBitCount=32; bmp.bmiHeader.biPlanes=1; bmp.bmiHeader.biWidth=IMAGE_WIDTH; b…

MFCオリジナルのメッセージを受信する

MFC

#define WM_ORIGINALMSG WM_USER+1000って感じでメッセージ作るネタ元 http://i-hptetsu.programming.jp/archives/519

CLIstCtrlでドラッグ&ドロップする

MFC

まだ実装中。いいサンプルはこれ http://www50.tok2.com/home2/StillGreen/knowledge/program/listview.htm LVS_系のメッセージ受け取るにはSetExtendedStyleでLVS_REPORT指定してないとだめ https://msdn.microsoft.com/ja-jp/library/2hxsby1h.aspx ネタ元…

CMenuでメニュー項目の文字列を動的変更

MFC

SetMenuItemInfoで変更できます。 TCHAR buf[] = TEXT("新メニュー文字列"); MENUITEMINFO mii = { sizeof(mii) }; mii.fMask = MIIM_STRING; mii.dwTypeData = buf; pMenu->SetMenuItemInfo(2, &mii, TRUE);セパレータも意識して項目の順番指定してね。 Set…

MFCでキュー(FIFO)配列クラス作成

MFC

標準ではないので、CTypedPtrListを使って作るAddToEnd()で追加してGetFromFront()で取得。 // キュークラス // AddToEnd()にはnewしたオブジェクトを渡して // GetFromFront()した後はコール元でdeleteすること。 class CMyQueue : public CTypedPtrList< C…

EnableMenuItemでメニュー項目の有効/無効などの切り替えが効かない時はここを見れ

MFC

1.CFrameWndクラスのm_bAutoMenuEnableメンバがTRUEなってないかチェック2.BEGIN_MESSAGE_MAPの中にON_UPDATE_COMMAND_UIの指定が無いかチェック 上記があるといくら設定しても効きません。ネタ元 http://specialprovidence.at.webry.info/201007/article_72…

URLをブラウザで開く

mfc

ShellExecute()を使ってURL文字列をopenするだけ bool OpenUrl(LPCTSTR lpszUrl) { HINSTANCE hInst = ShellExecute(NULL,"open",lpszUrl,NULL,NULL,SW_SHOWNORMAL); if(hInst < (HINSTANCE)32){ // 32未満は起動に失敗 return false; } retuen true; } ネタ…

CFtpConnection::OpenFile()使うとメモリリークする

MFC

OpenFile()で受け取ったCInternetFileのポインタはClose()した後、deleteする必要あるみたいどこにもそんなん書いてないんだけどな。

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

MFCでダイアログにポップアップメニューをつける方法

MFC

リソースエディタでメニュー作って以下のようなコードで呼び出す。 // "右クリック" void CMenuDlg::OnRButtonUp(UINT nFlags, CPoint point) { CMenu *popupMenuP = NULL; CMenu cMenu; int err = 0; // メニューをロード if (!err) if (!cMenu.LoadMenu(ID…