MFC ドキュメントビュー アーキテクチャの初心者です。
小数点数値しか入力できないEDITBOXをダイアログに貼付けて使いたいのですが
operator= の対処方法がわかりません。どなたか、よろしくお願い致します。
// FloatEdit.h
class CFloatEdit : public CEdit
{
public:
CFloatEdit();
operator float();
virtual ~CFloatEdit();
protected:
//{{AFX_MSG(CFloatEdit)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
}
// FloatEdit.cpp
BEGIN_MESSAGE_MAP(CFloatEdit, CEdit)
//{{AFX_MSG_MAP(CFloatEdit)
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CFloatEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
static CString separators(_T(.));
TCHAR tChar = (TCHAR) nChar;
if ((IsCharAlphaNumeric(tChar) && !IsCharAlpha(tChar)) ||
separators.Find(nChar) != -1)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
MessageBeep(MB_ICONASTERISK);
}
CFloatEdit::operator float()
{
double dReturn;
CString number;
LPTSTR endpointer;
GetWindowText(number);
dReturn = strtod((LPCTSTR) number, &endpointer);
return (float) dReturn;
}
CFloatEdit::operator= ?
{
?対処不明
}
// MyDlg.h : ヘッダー ファイル
#include FloatEdit.h
----------------
----------------
public:
// ダイアログ データ
//{{AFX_DATA(CMyDlg)
enum { IDD = IDD_MYDLG };
------------------
CFloatEdit m_nBox1;
------------------
// MyDlg.cpp : インプリメンテーション ファイル
----------------
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
----------------
DDX_Control(pDX, IDC_BOX1, m_nBox1);
----------------
}
// Doc.h :
class Doc : public CDocument
{
----------------
CString m_Box1;
----------------
}
// View.cpp :
void View::OnMyBox()
{
CMyDlg dlg;
----------------
dlg.m_nMyBox1 = **Doc.m_Box1;
----------------
当然ここの = で止まってしまいます。
あっちにレスつけときましたorz
マルチポストしてしまいまして、
ごめんなさい。