Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual C++ (немодальный диалог) / 23 сообщений из 23, страница 1 из 1
21.05.2006, 10:02
    #33740854
Visual C++ (немодальный диалог)
есть такое задание: по нажатию на кнопку мыши вывести немодальный диалог. (в самом диалоге ничего не делается - просто формочка с двумя кнопками - ОК и Cancel). исп-ть ClassWizard и другие подобные средства не нужно (код полностью пишется вручную)
если я вывожу так:
Код: plaintext
1.
2.
3.
4.
5.
void CMWnd::OnLButtonDown(UINT, CPoint)
{
  MDlg.Create(IDD_DIALOG2,this);
  MDlg.ShowWindow(SW_SHOW);
}
то при попытке повторного вызова диалога генерируется ошибка. хотел сделать такую обработку: при нажатии на кнопку ОК выводить сообщение что нажата ОК и закрывать окно, при нажатии на Cancel выводить соответствующее сообщение и так же закрывать окно. я не понял как это сделать.
если напр. при работе с мод. окном это можно сделать так:
Код: plaintext
1.
2.
CDialog MyDlg1(IDD_DIALOG1);  
if (MyDlg1.DoModal()==IDOK ) ...
то как сделать подобную обработку для немодального окна?
помогите пожалуста кто знает!
С уважением, Олег
...
Рейтинг: 0 / 0
21.05.2006, 13:59
    #33740978
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
Митрюков Олег
Код: plaintext
1.
2.
3.
4.
5.
void CMWnd::OnLButtonDown(UINT, CPoint)
{
  MDlg.Create(IDD_DIALOG2,this);
  MDlg.ShowWindow(SW_SHOW);
}
создавай диалог только один раз, при первом клике, при остальных только отображай.

Митрюков Олег
Код: plaintext
1.
2.
CDialog MyDlg1(IDD_DIALOG1);  
if (MyDlg1.DoModal()==IDOK ) ...
при создании диалога передавай ему калбак, потом из диалога будешь его вызывать как хочешь.
...
Рейтинг: 0 / 0
21.05.2006, 19:36
    #33741192
Visual C++ (немодальный диалог)
maXmoпри создании диалога передавай ему калбак, потом из диалога будешь его вызывать Что такое "калбак" и как его передавать? (если можно пример)
maXmoсоздавай диалог только один раз, при первом клике, при остальных только отображай понимаю,только не знаю как это сделать. как перехватить нажатие кнопки на диалоговой панели ?
...
Рейтинг: 0 / 0
21.05.2006, 19:55
    #33741215
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
Митрюков ОлегЧто такое "калбак" и как его передавать? (если можно пример)это функция, её можно передавать как любой другой параметр.
void mycallback(void)
{
...
}
...
CDialog MyDlg1(IDD_DIALOG1);
ээ... дааа... пробовал от CDialog наследовать свой диалог?

Митрюков Олегпонимаю,только не знаю как это сделать. как перехватить нажатие кнопки на диалоговой панели?я так понимаю, CMWnd::OnLButtonDown перехватывает событие какого-то нажатия, это получилось из-за того, что ты снаследовал свой класс CMWnd от какого класса, не знаю... в общем, ты снаследовал и повесил метод своего класса на событие. Вот. То же самое ты можешь повторить со своим диалогом. Каждая кнопка, насколько я знаю, обладает своим идентификатором и по этому идентификатору можно повесить обработчик нажатия (метод диалога) на эту кнопку (дочерний элемент диалога). Подробнее - на firststeps.ru
...
Рейтинг: 0 / 0
22.05.2006, 11:06
    #33741938
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
Надо удалять экземпляр диалога в PostNCDestroy(). И соответственно создавать его только new. Такова идеология MFC.
...
Рейтинг: 0 / 0
22.05.2006, 14:23
    #33742702
Ggggguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
maXmoCDialog MyDlg1(IDD_DIALOG1);
ээ... дааа... пробовал от CDialog наследовать свой диалог? а такаой подход неверен?
...
Рейтинг: 0 / 0
22.05.2006, 14:28
    #33742717
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
какой подход? Не понял вопроса.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
22.05.2006, 14:32
    #33742735
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
msdnA CDialog object is a combination of a dialog template and a CDialog-derived class . Use the dialog editor to create the dialog template and store it in a resource, then use the Add Class wizard to create a class derived from CDialog .видимо, это тоже логика мфц.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
23.05.2006, 08:08
    #33744091
Visual C++ (немодальный диалог)
почему ругается на строчку:
Код: plaintext
class CNotModal : public CDialod // error C2504: 'CDialod' : base class undefined
...
Рейтинг: 0 / 0
23.05.2006, 08:12
    #33744092
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
Что такое CDialo d


--------------------------------------------------------------
Don't worry - wear Huggies
...
Рейтинг: 0 / 0
23.05.2006, 08:14
    #33744095
Visual C++ (немодальный диалог)
базовый класс
...
Рейтинг: 0 / 0
23.05.2006, 08:17
    #33744098
Visual C++ (немодальный диалог)
тьфу ты, написал слово неверно!
...
Рейтинг: 0 / 0
23.05.2006, 12:39
    #33744998
Visual C++ (немодальный диалог)
вернусь к первоначальному вопросу: как узнать что пользователь нажал на форме кнопку ОК(IDOK) или Сancel(IDCANCEL)? какую строку надо написать для программного определения?
...
Рейтинг: 0 / 0
23.05.2006, 12:46
    #33745044
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
читай про макросы BEGIN_MESSAGE_MAP и ON_BN_CLICKED.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
23.05.2006, 12:47
    #33745055
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
со студией идут сэмплы, хоть посмотрел бы их.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
23.05.2006, 14:54
    #33745733
Visual C++ (немодальный диалог)
сваял я чего-то, только это не так работает. Помогите исправить пажалуста!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
class CNotDialog: public CDialog 
{
public:
    afx_msg void OnExitOK();
private:
   DECLARE_MESSAGE_MAP();
};
 
class CMWnd : public CFrameWnd     
{
public:
   CMWnd();
   afx_msg void OnLButtonDown(UINT, CPoint);
private:
   DECLARE_MESSAGE_MAP();  
   CDialog MDlg;	
};
/===============
void CMWnd::OnLButtonDown(UINT, CPoint)  
{
    MDlg.Create(IDD_DIALOG2,this);
    MDlg.ShowWindow(SW_SHOW);  
}
//==============
BEGIN_MESSAGE_MAP(CMWnd, CFrameWnd)   
    ON_WM_RBUTTONDOWN()	
END_MESSAGE_MAP()
//==============
void CNotDialog::OnExitOK()
{
	AfxMessageBox("Окно закрыли клавишей 'OK'");
	this->DestroyWindow();
}
//=============
BEGIN_MESSAGE_MAP(CNotDialog, CDialog)
    ON_BN_CLICKED(IDOK, OnExitOK)
END_MESSAGE_MAP()
//=============
...
Рейтинг: 0 / 0
23.05.2006, 14:56
    #33745742
Visual C++ (немодальный диалог)
не отрабатывается ф-ия
Код: plaintext
afx_msg void OnExitOK();
...
Рейтинг: 0 / 0
23.05.2006, 15:16
    #33745831
Visual C++ (немодальный диалог)
пробовал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class CNotDialog: public CDialog 
{
public:
  afx_msg void OnExitOK();
  virtual void OnOK();  //тоже не отрабатывается. видимо нету связки. не понимаю где
};
//============
void CNotDialog::OnOK()
{
CDialog::OnOK();
}
Подскажите пожалуста кому не сложно!!!!!!!
...
Рейтинг: 0 / 0
23.05.2006, 15:50
    #33746005
Visual C++ (немодальный диалог)
ошибку нашел.

вопрос не касающийся этого:

почему модальная форма появляется посредине раб. области, а немодальная в левом верхнем углу?
...
Рейтинг: 0 / 0
23.05.2006, 15:53
    #33746021
Visual C++ (немодальный диалог)
как сделать, что бы немодальная форма тоже появлялась по центру?
...
Рейтинг: 0 / 0
23.05.2006, 17:20
    #33746397
Visual C++ (немодальный диалог)
Господа, так как сделать что бы форма появлялась по центру?????? искал где почитать и то что нашел, об этом не слова. Может вы сталкивались с этим и знаете КАК???
...
Рейтинг: 0 / 0
24.05.2006, 10:56
    #33747642
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual C++ (немодальный диалог)
SetWindowPlacement CenterWindow, отредактируй координаты в ресурсе диалога наконец.
...
Рейтинг: 0 / 0
24.05.2006, 12:48
    #33748133
Visual C++ (немодальный диалог)
Спасибо!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual C++ (немодальный диалог) / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]