自ウィンドウのハンドル
this->m_hWnd
ラジオボタン、チェックボタンにチェックON/OFFする
CheckDlgButton()
ダイアログにメニュー追加
こんなん?いまいち不安だったりするが
CMenu oMenu; oMenu.LoadMenu( IDR_MENU_MAIN ); this->SetMenu( &oMenu );
ダイアログでファイル指定
GetOpenFileName()
GetSaveFileName()
でググれ
DLLを使う
7-zip32.dllを使った例
hArcDll = ::LoadLibrary("7-zip32.dll"); FARPROC f = ::GetProcAddress(hArcDll, "SevenZip"); char ucMess[0xffff]; ((SEVEN_ZIP)f)(this->m_hWnd,"a -tzip archive.zip *.bmp",ucMess,0xffff); FreeLibrary( hArcDll );
砂時計カーソル
- 砂時計カーソルを表示
- BeginWaitCursor();
- もとのカーソルに戻す。
- EndWaitCursor();
ダイアログ上のアイテムを使用不可にする
"::"を付けないとMFCを使ってるとエラーが出るみたい。
- EnableWindow( ::GetDlgItem(this->m_hWnd,IDC_BUTTON_EXEC) , FALSE );
ダイアログアイテムのウインドウハンドル取得
GetDlgItem()
ダイアログ上のボタンON/OFF取得
BOOL bResult; bResult = IsDlgButtonChecked( IDC_CHECK_xxxx );
ダイアログアイテムのテキスト情報取得(ワイド文字対応)
MSDNに載ってないので記す
GetDlgItemTextW( HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount);
Windowsに関連づいたソフトでファイルを開く
ShellExecute(NULL,"open",<ファイル名>,NULL,NULL,SW_SHOWNORMAL);
ダイアログのテキストボックス操作
SetDlgItemText(IDC_EDIT_xxxx,"ほげほげ");
SetDlgItemTextW(this->m_hWnd,IDC_EDIT_xxxx,L"ほげほげ");
GetDlgItemText(IDC_EDIT_xxxx,pBuffer);
フォルダ指定ダイアログを使う
wstring wsResult = L""; BROWSEINFO bi; LPITEMIDLIST pidlRoot; // ブラウズのルートPIDL LPITEMIDLIST pidlBrowse; // ユーザーが選択したPIDL LPMALLOC lpMalloc = NULL; HRESULT hr = SHGetMalloc(&lpMalloc); if(FAILED(hr)){ MessageBox("インターフェースポインタの取得に失敗しました。","エラー",MB_OK); return L""; } unsigned char lpBuffer[MAX_PATH]; // ダイアログ表示時のルートフォルダのPIDLを取得 SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidlRoot); // BROWSEINFO構造体の初期値設定 // ※BROWSEINFO構造体の各メンバの詳細説明もヘルプを参照 bi.hwndOwner = NULL; bi.pidlRoot = pidlRoot; bi.pszDisplayName = (char*)lpBuffer; bi.lpszTitle = "フォルダを選択して下さい"; bi.ulFlags = 0; bi.lpfn = 0; bi.lParam = 0; // フォルダ選択ダイアログの表示 pidlBrowse = SHBrowseForFolder(&bi); if (pidlBrowse != NULL) { // PIDL形式の戻り値のファイルシステムのパスに変換 wchar_t wcBuffer[MAX_PATH]; if (SHGetPathFromIDListW(pidlBrowse, wcBuffer)) { // 取得成功 wsResult = wcBuffer; // SetDlgItemTextW(this->m_hWnd,IDC_EDIT_FONTPATH,wcBuffer); // テキストボックスに入力 }else{ MessageBox("フォルダの指定に失敗しました。","エラー",MB_OK); } } // クリーンアップ処理 lpMalloc->Free(pidlRoot); lpMalloc->Free(lpBuffer); lpMalloc->Release(); return wsResult;