Показать сообщение отдельно

  #2048  
Старый 20.12.2008, 23:58
NetSter
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме:
4275992

Репутация: 1188


Question

Цитата:
Сообщение от _empty  
А зачем ты текст через dc отрисовываешь? Ты же используешь стандартные компоненты, поэтому используй Editbox или его производные, какой средой пользуешься?
спасибо за совет. в общем принял во внимание и вот к чему дошел:
http://www.gfs-team.ru/?act=articles&pact=122
только вот у меня это отдельное диалоговое окно в приложении, которое открывается по нажатии ОПЕН.
1) создал класс class COpenDialog : public CDialog
Код:
class COpenDialog : public CDialog
{
public:
	afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message );
	COpenDialog(CWnd* pParent = NULL);  
		enum { IDD = IDD_DIALOG_OPEN};
	CEdit    m_EditOpen;
	CEdit    m_bOpen;
protected:
	virtual void DoDataExchange(CDataExchange* pDX);    
protected:
	virtual void OnOK();
	virtual void OnCancel();
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnStnClickedBitmap1();
 };
COpenDialog::COpenDialog(CWnd* pParent)
	: CDialog(COpenDialog::IDD, pParent)
{
}
void COpenDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_OPEN_PATH, m_EditOpen);
	DDX_Control(pDX, IDC_OPEN_TEXT, m_bOpen);
}

BEGIN_MESSAGE_MAP(COpenDialog, CDialog)
	ON_WM_PAINT()
	ON_WM_SETCURSOR()
	ON_STN_CLICKED(IDB_BITMAP1, &COpenDialog::OnStnClickedBitmap1)
END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////
BOOL COpenDialog:: OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
----bla bla bla
}
/////////////////////////////////////////////////////////////////////////////
void COpenDialog::OnPaint() 
{
----bla bla bla
}
void COpenDialog::OnOK() 

{
	CString m_EditText;
        // TODO: Add your control notification handler code here
        CString fname; //Переменная для хранения имени файла
        CFile file;    //обьект класса CFile
        char ch[1024]; //Буффер для чтения данных из файла
        if(!OpenRead) //Если OpenRead=false то показываем диалог открытия файлов
        {
                CFileDialog fDialog(TRUE);
                fDialog.DoModal();
                m_EditOpen.SetWindowText(fDialog.GetPathName());
                m_bOpen.SetWindowText("Read");
                OpenRead = true;
        }
        else 
        {
                m_EditOpen.GetWindowText(fname); //Получаем имя файла
                if(!file.Open(fname, CFile::modeRead, NULL)) //Открываем его
                {
                        AfxMessageBox("Cannot open file");
                        return;
                }
                file.Read(&ch, 1024); //Читаем 1024 байт
                //m_EditText.SetWindowText(ch);
                file.Close(); //Закрываем файл
                m_bOpen.SetWindowText("Open");//Меняем текст кнопки
                OpenRead = false;
        }


	CDialog::OnOK();
}
void COpenDialog::OnCancel() 
{
	CDialog::OnCancel();
}

BOOL COpenDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_EditOpen.SetWindowText(CString("файл"));
	m_bOpen.SetWindowText(CString("содержимое"));
	UpdateData(false);
	OpenRead = false;
	return TRUE;
}
и подправил функцию ОПЕН с мейнфрейма, чтоб она вызывала диалог:
Код:
void CMyFrameWin::OnOpen()
  {

    COpenDialog dialog;		
	if(dialog.DoModal()==IDOK);
 }
при компиле имеем ошибку в строчке
m_EditText.SetWindowText(ch);
которую устранил пока лиш тем что закомментировал...
суть ошибки :
Код:
 'SetWindowTextA' : is not a member of 'ATL::CStringT<BaseType,StringTraits>'
в чем собственно трабла у как устранить данную проблему?
среда разработки - Visual Studio 2008
Спасибо всем кто откликнется.

--------------------EDIT---------------------

Спасибо за консультацию по аське groupby
проблема была в:
"m_EditText иметт тип CString
а должен иметь тип CEdit"
--------------------EDIT---------------------

Последний раз редактировалось NetSter; 21.12.2008 в 14:18.. Причина: проблема решена. спс 2 groupby