// RefButton.cpp : インプリメンテーション ファイル // EditBox と関連付けて、ファイル or フォルダ選択ダイアログを表示する #include "stdafx.h" #include "RefButton.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CRefButton CRefButton::CRefButton() { m_bFolder = false; m_pWnd = 0; } CRefButton::~CRefButton() { } BEGIN_MESSAGE_MAP(CRefButton, CButton) //{{AFX_MSG_MAP(CRefButton) ON_CONTROL_REFLECT(BN_CLICKED, OnClicked) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRefButton メッセージ ハンドラ int FolderDlg(HWND hwnd,const char* title,char* cur); void CRefButton::OnClicked() { if (!m_pWnd) { AfxMessageBox("Set EditBox"); return; } char buf[512]; m_pWnd->GetWindowText(buf,sizeof(buf)); if (m_bFolder) { if (FolderDlg(m_hWnd,"",buf)) return; } else { CFileDialog dlg(TRUE,0,buf); if (dlg.DoModal() != IDOK) return; strcpy(buf,dlg.GetPathName()); } m_pWnd->SetWindowText(buf); }