自ウィンドウのハンドル
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;