Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите с модальным окном


Автор: Nuzur 22.7.2004, 22:42
Посл вызова модального окна приложение не откликаеться на 1-й клик мыши

Автор: AndyY 22.7.2004, 23:49
текст диалоговой функции и вызывающего кода в студию

Автор: Leopard25 23.7.2004, 05:51
А раэве это нетотже вопрос ?

http://forum.vingrad.ru/index.php?showtopic=26605

Автор: Nuzur 23.7.2004, 18:02
Тот же, прсто я его перефразировал.
Цитата
текст диалоговой функции и вызывающего кода в студию

Что ты имееш в иду?

Автор: Leopard25 23.7.2004, 18:16
Напиши ПОЛНОСТЬЮ текст функции в которой создаёшь модальное окно
и техт класса модального окна.

Автор: Nuzur 23.7.2004, 18:56
вызываю
CEDIT_FREE_TEXT* pTEXT;
pTEXT = new CEDIT_FREE_TEXT;
pTEXT->DoModal();

сам текст вызываемого класса

// EDIT_FREE_TEXT.cpp : implementation file
//

#include "stdafx.h"
#include "XSender.h"
#include "EDIT_FREE_TEXT.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "CPage1.h"
#include "CPage2.h"
#include "CPage3.h"
#include "CPage4.h"


#include "XSenderDlg.h"
#include "Control.h"
#include "EDIT_FREE_TEXT.h"

extern unsigned int n_t;
extern unsigned int n_s;

extern unsigned int manual_enter;
extern unsigned int Log;

extern IoControl Work;

extern CCPage2* pPage2;
extern CCPage3* pPage3;
extern CCPage4* pPage4;


extern unsigned int table2;
extern unsigned int table3;
extern unsigned int table4;

/////////////////////////////////////////////////////////////////////////////
// CEDIT_FREE_TEXT dialog


CEDIT_FREE_TEXT::CEDIT_FREE_TEXT(CWnd* pParent /*=NULL*/)
: CDialog(CEDIT_FREE_TEXT::IDD, pParent)
{
//{{AFX_DATA_INIT(CEDIT_FREE_TEXT)
m_COMBO = _T("");
m_TEXT = _T("");
//}}AFX_DATA_INIT
}


void CEDIT_FREE_TEXT::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEDIT_FREE_TEXT)
DDX_CBString(pDX, IDC_COMBO, m_COMBO);
DDX_Text(pDX, IDC_FREE_TEXT, m_TEXT);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEDIT_FREE_TEXT, CDialog)
//{{AFX_MSG_MAP(CEDIT_FREE_TEXT)
ON_BN_CLICKED(IDC_SEND, OnSend)
ON_CBN_SELENDOK(IDC_COMBO, OnSelendokCombo)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEDIT_FREE_TEXT message handlers

void CEDIT_FREE_TEXT::OnSend()
{
CString buf;
CWnd::GetDlgItemText(IDC_FREE_TEXT, buf);
box Outcoming;
Outcoming.buffer = buf;
Outcoming.buffer_size = buf.GetLength();
Outcoming.NB = n_t;
Outcoming.NS = n_s;
Work.Dinamic.AddNew(Outcoming);

if(n_t == table2)
{
pPage2->SetDlgItemText(IDC_String_Free_Text_2, buf);
CCPage1::LogFile(true, 2, 5, buf);
}
else
{
if(n_t == table3)
{
pPage3->SetDlgItemText(IDC_String_Free_Text_3, buf);
CCPage1::LogFile(true, 3, 3, buf);
}
else
{
if(n_t == table4)
{
pPage4->SetDlgItemText(manual_enter, buf);
CCPage1::LogFile(true, 4, Log, buf);
}
}
}
}

void CEDIT_FREE_TEXT::OnSelendokCombo()
{
CString buf;
CWnd::GetDlgItemText(IDC_COMBO, buf);
CWnd::SetDlgItemText(IDC_FREE_TEXT, buf);

}

void CEDIT_FREE_TEXT::OnClose()
{

CDialog::OnClose();
}

Автор: Leopard25 23.7.2004, 20:30
попробуй сделать так :

CEDIT_FREE_TEXT* pTEXT;
pTEXT = new CEDIT_FREE_TEXT;
pTEXT->DoModal();

delete pTEXT;

::SetFocus(this->m_hWnd);

А DoModal() что возвращает ?

Автор: Nuzur 24.7.2004, 10:19
Цитата
delete pTEXT;

::SetFocus(this->m_hWnd);


А где ето сделать?

Автор: Nuzur 24.7.2004, 10:43
Тормозю. Не так ничего не получилось.
Все тожеЯ, все те же...
ДюМодл возвращяет значение 2.

Автор: Leopard25 25.7.2004, 09:40
В какой функции вызываешь:

CEDIT_FREE_TEXT* pTEXT;
pTEXT = new CEDIT_FREE_TEXT;
pTEXT->DoModal();



если пишешь на MS VC++ 7.0 и ниже
можешь прислать текст своей программы
[email protected]

Автор: Nuzur 25.7.2004, 12:15
 Все я выслала.

Автор: AndyY 26.7.2004, 00:37
Nuzur
все понятно. диалоговому окну нужно в конструктор указать окно-предок:

CEDIT_FREE_TEXT* pTEXT;
pTEXT = new CEDIT_FREE_TEXT( AfxGetMainWnd());
pTEXT->DoModal();

стить наименований и программирования оставим в сторонеsmile.gif

кстати, ты мальчик или девочка?smile.gif

Автор: Nuzur 26.7.2004, 19:13
Цитата
CEDIT_FREE_TEXT* pTEXT; pTEXT = new CEDIT_FREE_TEXT( AfxGetMainWnd()); pTEXT->DoModal();


ничего не помогло. Теже пироги...
Я мальчик.

Автор: Nuzur 30.7.2004, 09:09
Тут я заметил 1-ну интерестность.
Дело в том, что AfxGetMainWnd() возвращяет нужного предка, но pTEXT всеравно делает его нулевым, почему?

Автор: Олег М 30.7.2004, 10:19
Цитата
но pTEXT всеравно делает его нулевым, почему?

Как это?
У тебя вроде всё правильно. Проблема в чём-то другом.
Вышли мне тоже исходники что ли, на [email protected]. А то по аське отвечать не хочешь...

Автор: Nuzur 31.7.2004, 10:32
Я не так нехочу, ка немогу, лучше мыльте [email protected], заранее всем спасибо.

Автор: Nuzur 1.8.2004, 18:25
Люди Хелп! С роботы уволят sad.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)