Помощь - Поиск - Пользователи - Календарь
Полная версия: New Application
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
sheka
Все, сдаюсь. smile.gif
Как с помощью MFC VC++ (2005) cделать аналогично дельфийскому File->New->Application?
Что-то связанное с CDialog.
Но вот это - какой-то обрубок smile.gif
#include "afxwin.h"
#include "resource.h" // ссылка на ресурсы
class CTestDlg : public CDialog // класс диалогового окна
{
public:
CTestDlg(CWnd* pParent=NULL);
protected:
};
CTestDlg::CTestDlg(CWnd* pParent)
: CDialog(IDD_DIALOG1, pParent)
{
}
class CTestApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CTestApp::InitInstance()
{
CTestDlg dlg; // Создать объект диалогового окна
m_pMainWnd = &dlg; // главное окно программы это диалоговое окно
dlg.DoModal();
return FALSE;
}
CTestApp theApp;

Krjuger
А ты сам чтоли это ваяеш?Насчет 2005 сказать не могу,но в 2008 выбираеш MFC Aplication->Дальше окно Визарда,там первым выбираеш Dialog based->next->Main frame styles(Выбираеш,что душе угодно)->Advanced features(тоже выбираеш что надо)->Generated classes Вот тут тебе надо выбрать С....Dlg.Затем становится активным окно Base class Там 2 варианта либо CDialog либо CDHtmlDialog,выбираешь первое и жмеш финиш.В итоге у тебя генерируется вот такой вот проект(ну с теми настройками,что выставил).У тебя появляется Диалоговое окошко на которое ты перетаскиваеш контролы из тулбокса и работает с обработчиками событий.
Внизу пример пустого проекта с базовыми настройками.
sheka
Оно.
Цитата
А ты сам чтоли это ваяеш?
Было бы что прочитать, т. к. то, что находится - это литература для VC 6.0
А что насчет Events?
Кинул на пустой диалог компонент, а у него событий раз, два и обчелся.
Не хочется вручную MESSAGE_MAP и собственные классы создавать smile.gif Должно же быть что-нибудь человеческое для статических компонентов.
Нажмите для просмотра прикрепленного файла

Krjuger
Ну там у каждого компонента свой набор ивентов,например для кнопки,список аналогичен твоему,зато я вот взял и кинул лист контрол и увидел другую картину.На картинке по скролу видно сколько там ивентов)
Цитата
Не хочется вручную MESSAGE_MAP и собственные классы создавать Должно же быть что-нибудь человеческое для статических компонентов

А оно уже созданно,тебе просто надо будет туда добавить обработчик твоего события,плюс вот скажи чесно,а что с листбоксом еще можно сделать кроме этих событий?Ведь если подумать почти любое действие можно привязать к ним.
sheka
Допустим кнопка. В Borland'овских продуктах.Нажмите для просмотра прикрепленного файла
И это после перехода на mfc я должен отказаться от такого разнообразия? Вряд ли.
Krjuger
Ну класно,к несчастью я не знаю что половина из этого делает,но мне кажется,что по функцианальности можно заменить,ну да ладно пойдем другим путем.Что сложного стоит добавить в Мап новую функцию в которой будет все,что твоей дужше угодно?
В хедере ....Dlg.h добавляеш какую нибудь функцию
 public:
afx_msg void OnBnClickedCancel();

Затем в самом ....Dlg.cpp описываеш эту функцию и добавляеш в твою мапу там же.Но если чесно я не сталкивался с моментами,когда было что то необходимо,и небыло возможности решить это заложенными средствами.возможно проектов сложных пока не было.
Кстати зайди в раздел Properties,там достаточно много настроек при помощи которых можно решить некоторые проблемы с ивентами.

P.S.Чет отличаются KeyDown от KeyUp я представляю,первое обработка, когда отпускаеш клавишу,второе когда нажимаеш,ну а KeyPress Для чего тогда?Аналогичное с Mouse,зачем все это,у тебя есть нажата,даблклик,наведено на кнопку,убран курсор с кнопки,нажат хотей,ну и еще парочка.
IUnknown
Цитата
Чет отличаются KeyDown от KeyUp я представляю,первое обработка, когда отпускаеш клавишу,второе когда нажимаеш,ну а KeyPress Для чего тогда?
Разницу между WM_CHAR и WM_KEYDOWN знаешь? Вот такая же разница между KeyPress/KeyDown

sheka, я ж тебе присылал ссылку на youtube, пройди там по роликам того же автора, у него там много чего есть...
Krjuger
Ну или почитай тут , правда на английском.

P,S Насчет разници понял smile.gif
sheka
Насколько я понимаю, Messages можно настраивать только для классов.
Как быть с экземплярами классов? Что собой представляет компонент, кинутый на диалог? (не нашел никакого его описания в коде, но он то существует! smile.gif )
Еще также прочитал, что диалог обрабатывает все сообщения, которые поступают к его компонентам. И как тогда, например, делать события для эдита при нажатии клавиш?
Уже вторые сутки читаю литературу(сначала про то, как создать DialogBased App - не заметил чекбокс, а теперь про события) и нифига раскурить не могу. Что делать то? mega_chok.gif
Krjuger
Не мог бы ты немного пояснить суть вопроса?
Цитата
Что собой представляет компонент, кинутый на диалог?

Набор функций вызываемых при обрабатывании какого либо действия вот смотри,у меня проект называется Lolka,Я добавляю кномку,что у меня происходить,в ресурсах выделяется для этой кнопки память.Я хочу чтобы при нажатии на кнопку вылетала птичка,что происходит?В LolkaDlg.h у нашего класса в разделе
public: появляется функция afx_msg void OnBnClickedButton1(); Затем уже в самом LolkaDlg.ccp в BEGIN_MESSAGE_MAP добавляется само событие ON_BN_CLICKED(IDC_BUTTON1, &CLolkaDlg::OnBnClickedButton1) Как нетрудно заметить первое это сам ресурс под нашу кнопочку,второе это ссылка на нашу функцию.То есть мы получили связь обьекта,обработку некоего события,и непосредственно то,что мы с этим будем делать,затем в этом же файле мы

void CLolkaDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
//Ресуем нашу птичку.
}


Цитата
И как тогда, например, делать события для эдита при нажатии клавиш

При нажатии клавиш где?Если просто в нашей программе то для базового окошка есть обработка события,если внутри самого эдита,то там при создании едита можно редактировать то,что туда можно записать.Или я что то не понял в вопросе.

А вообще прочти ту ссылку что я кинул все 5 статей,rое что должно проясниться.И попробуй нажать на обьект правой кнопкой и поковыряйся в Add event handler.

Вообще все MFC Это грамотное умение работы с Wizard.Он сам добавлает где нужно что нужно,в том числе и переменные и сам связывает то,за что они отвечают.Прочитай Creating your first Windows application там написано,как вообще добавить те ивенты,что тебе нужны с помощью визарда.
IUnknown
Цитата
Уже вторые сутки читаю литературу(сначала про то, как создать DialogBased App - не заметил чекбокс, а теперь про события) и нифига раскурить не могу. Что делать то?
Начать отсюда:
MFC шаг за шагом , а уж потом, если что непонятно - обращаться к литературе...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.