powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Visual C++ (немодальный диалог)
23 сообщений из 23, страница 1 из 1
Visual C++ (немодальный диалог)
    #33740854
есть такое задание: по нажатию на кнопку мыши вывести немодальный диалог. (в самом диалоге ничего не делается - просто формочка с двумя кнопками - ОК и 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
Visual C++ (немодальный диалог)
    #33740978
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Митрюков Олег
Код: 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
Visual C++ (немодальный диалог)
    #33741192
maXmoпри создании диалога передавай ему калбак, потом из диалога будешь его вызывать Что такое "калбак" и как его передавать? (если можно пример)
maXmoсоздавай диалог только один раз, при первом клике, при остальных только отображай понимаю,только не знаю как это сделать. как перехватить нажатие кнопки на диалоговой панели ?
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33741215
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Митрюков ОлегЧто такое "калбак" и как его передавать? (если можно пример)это функция, её можно передавать как любой другой параметр.
void mycallback(void)
{
...
}
...
CDialog MyDlg1(IDD_DIALOG1);
ээ... дааа... пробовал от CDialog наследовать свой диалог?

Митрюков Олегпонимаю,только не знаю как это сделать. как перехватить нажатие кнопки на диалоговой панели?я так понимаю, CMWnd::OnLButtonDown перехватывает событие какого-то нажатия, это получилось из-за того, что ты снаследовал свой класс CMWnd от какого класса, не знаю... в общем, ты снаследовал и повесил метод своего класса на событие. Вот. То же самое ты можешь повторить со своим диалогом. Каждая кнопка, насколько я знаю, обладает своим идентификатором и по этому идентификатору можно повесить обработчик нажатия (метод диалога) на эту кнопку (дочерний элемент диалога). Подробнее - на firststeps.ru
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33741938
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо удалять экземпляр диалога в PostNCDestroy(). И соответственно создавать его только new. Такова идеология MFC.
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33742702
Ggggguest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoCDialog MyDlg1(IDD_DIALOG1);
ээ... дааа... пробовал от CDialog наследовать свой диалог? а такаой подход неверен?
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33742717
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой подход? Не понял вопроса.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33742735
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Visual C++ (немодальный диалог)
    #33744091
почему ругается на строчку:
Код: plaintext
class CNotModal : public CDialod // error C2504: 'CDialod' : base class undefined
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33744092
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое CDialo d


--------------------------------------------------------------
Don't worry - wear Huggies
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33744095
базовый класс
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33744098
тьфу ты, написал слово неверно!
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33744998
вернусь к первоначальному вопросу: как узнать что пользователь нажал на форме кнопку ОК(IDOK) или Сancel(IDCANCEL)? какую строку надо написать для программного определения?
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33745044
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читай про макросы BEGIN_MESSAGE_MAP и ON_BN_CLICKED.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33745055
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
со студией идут сэмплы, хоть посмотрел бы их.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33745733
сваял я чего-то, только это не так работает. Помогите исправить пажалуста!
Код: 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
Visual C++ (немодальный диалог)
    #33745742
не отрабатывается ф-ия
Код: plaintext
afx_msg void OnExitOK();
...
Рейтинг: 0 / 0
Visual C++ (немодальный диалог)
    #33745831
пробовал так:
Код: 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
Visual C++ (немодальный диалог)
    #33746005
ошибку нашел.

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

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


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