DialogBarTest\n\nDialog\nテキスト(.txt)\n.txt\nDialogBarTest.Document\nDialog Document
ID_FILE_OPEN ( [開く...] )
↓
CWinApp:OnFileOpen()
↓
CWinApp:OpenDocumentFile()
↓
CDocManager::OpenDocumentFile()
↓
CDocument::OnOpenDocument()
↓
CDocument::Serialize()
↓
CDocument::SetPathName()
//{{AFX_MSG(CMyDbarApp)
afx_msg void OnAppAbout();
CDialogBar m_wndDialogBar;
//}}AFX_MSG
afx_msg void OnFileOpen(); // この行を追加
DECLARE_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CMyDbarApp, CWinApp)
//{{AFX_MSG_MAP(CMyDbarApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
//}}AFX_MSG_MAP
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CMyDbarApp::OnFileOpen) // 変更
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
void CMyDbarApp::OnFileOpen()
{
CFileDialog fd(
TRUE, // TRUE:Open, FAlSE:Close
"", // デフォルトの拡張子
"", // デフォルトのファイル名
OFN_FILEMUSTEXIST| // 既存のファイルのみ
OFN_HIDEREADONLY| // ReadOnlyのCheckBoxを表示しない
OFN_LONGNAMES, // 長いファイル名を使う
"テキスト (*.txt)|*.txt|"
"全てのファイル(*.*)|*.*||", // ファイルフィルタ
NULL // 親ウィンドウ
);
fd.m_ofn.lpstrInitialDir=(LPCSTR)"C:\\temp"; //初期ディレクトリをtempに
if(fd.DoModal()==IDOK){
OpenDocumentFile(fd.GetPathName());
}
}
CString line;
// 拡張子のチェック
line = ar.GetFile()->GetFileName();
if (line.Right(line.GetLength()-line.ReverseFind('.'))==".txt")
MessageBox(NULL,"text","xxx",MB_OK);
public:
CString m_str;
if (ar.IsStoring())
{
ar << m_str; // 保存
}
else
{
ar >> m_str; // 読込み
}
MessageBox(NULL,m_str,"m_str",MB_OK);
予期しないファイル形式です。
if (ar.IsStoring())
{
ar.WriteString(m_str); // 保存
}
else
{
ar.ReadString(m_str); // 読込み
}
MessageBox(NULL,m_str,"m_str",MB_OK);
sp.pos = ar.GetFile()->GetPosition();
m_data.Add(sp); // ファイルポインタをm_dataに記録する
spara_data spx;
CStdioFile fp;
if (pDoc->m_path!="") {
fp.Open(pDoc->m_path,CFile::modeRead);
spx = pDoc->m_data.GetAt(pDoc->m_data.GetSize()-1);
fp.Seek(spx.pos,CFile::begin);
while(fp.ReadString(line,255)) {
TRACE(line); →とりあえずTRACEで表示
}
fp.Close();
}
// 拡張子のチェック
file = lpszPathName;
ext = file.Right(file.GetLength()-file.ReverseFind('.'));
m_path = lpszPathName;
if (!fp.Open(lpszPathName,CFile::modeRead)) return FALSE;
if (ext==".spara") ReadData(&fp);
fp.Close();
UpdateAllViews(NULL);
void CMainFrame::dialogbar_update()
{
CString line;
CMyDbarDoc* pDoc = (CMyDbarDoc*) GetActiveDocument();
line.Format("%d",pDoc->m_data_n);
m_wndDialogBar.SetDlgItemText(IDC_EDIT1,line);
}
void CMainFrame::OnBnClicked()
{
CString line;
CMyDbarDoc* pDoc = (CMyDbarDoc*) GetActiveDocument();
m_wndDialogBar.GetDlgItemText(IDC_EDIT1,line);
pDoc->m_data_number = atoi(line);
pDoc->UpdateAllViews(NULL);
}
m_number_spin = (CSpinButtonCtrl*)m_wndDialogBar.GetDlgItem(IDC_SPIN1);
m_number_spin->SetBuddy(m_wndDialogBar.GetDlgItem(IDC_EDIT1));
CSpinButtonCtrl *spin = (CSpinButtonCtrl*)m_wndDialogBar.GetDlgItem(IDC_SPIN1);
spin->SetRange(1,200);
spin->SetPos(150);
ON_BN_CLICKED(IDC_RADIO1,OnRadio1Clicked) // Radio1クリックイベント追加
ON_BN_CLICKED(IDC_RADIO2,OnRadio2Clicked) // Radio2クリックイベント追加
ON_BN_CLICKED(IDC_RADIO3,OnRadio3Clicked) // Radio3クリックイベント追加
ON_BN_CLICKED(IDC_RADIO4,OnRadio4Clicked) // Radio4クリックイベント追加
afx_msg void OnRadio1Clicked(); // Radio1クリック時に実行する関数を追加
afx_msg void OnRadio2Clicked(); // Radio2クリック時に実行する関数を追加
afx_msg void OnRadio3Clicked(); // Radio3クリック時に実行する関数を追加
afx_msg void OnRadio4Clicked(); // Radio4クリック時に実行する関数を追加
void CMainFrame::OnRadio1Clicked() { ... }
void CMainFrame::OnRadio2Clicked() { ... }
void CMainFrame::OnRadio3Clicked() { ... }
void CMainFrame::OnRadio4Clicked() { ... }
CButton *button = (CButton*)m_wndDialogBar.GetDlgItem(IDC_S21);
button->SetCheck(1);
CButton* btn_1 = (CButton*)m_wndDialogBar.GetDlgItem(IDC_RADIO1);
CButton* btn_2 = (CButton*)m_wndDialogBar.GetDlgItem(IDC_RADIO2);
CButton* btn_3 = (CButton*)m_wndDialogBar.GetDlgItem(IDC_RADIO3);
CButton* btn_4 = (CButton*)m_wndDialogBar.GetDlgItem(IDC_RADIO4);
if (btn_1->GetCheck()) pDoc->radiobtn = 0;
if (btn_2->GetCheck()) pDoc->radiobtn = 1;
if (btn_3->GetCheck()) pDoc->radiobtn = 2;
if (btn_4->GetCheck()) pDoc->radiobtn = 3;