Здравствуйте С MFC только ознакомляюсь. Делал из ферстстепсов примеры. Далеко не зашел, т.к. у меня задача(для MFC) очень простая. И вот вопросы:
1. Есть кнопка. Есть листбокс. Как по нажатии кнопки вызвать функцию MyListBox->GetCurSel();? Проблема в том, что пример с того сайта (первые шаги). И там у самой программы странная структура. Или я чего-то не понимаю. 2. Как из любой другой функции вызвать MyListBox->AddString(str);? Вопросы вроде одинаковые. Думал про public, но что-то не додумал. 3. И вообще глупый вопрос. Как обработать один клик ЛКМ по кнопке? В примере лдаблклк. Что-то вроде OnLButtonClk . Вот код:
| Код | #include "afxwin.h" // MFC Основные и стандартные компоненты #define IDC_MYBUTTON 100 // Идентификатор кнопки #define IDC_MYEDIT 102 // Идентификатор поля редактирования
class CMyButton: public CButton { public: afx_msg void OnLButtonUp(UINT, CPoint); private: DECLARE_MESSAGE_MAP(); // таблица откликов кнопки };
BEGIN_MESSAGE_MAP(CMyButton, CButton) // таблица откликов на сообщения ON_WM_LBUTTONUP() END_MESSAGE_MAP()
void CMyButton::OnLButtonUp( UINT, CPoint ) { AfxMessageBox(" Rigth Button Ont Click "); // MyListBox->GetCurSel();//????куда это нужно вставлять? }
class CMainWnd : public CFrameWnd { public: CMainWnd(); // Конструктор по умолчанию ~CMainWnd(); // Деструктор private: CMyButton* MyButton; // Элемент управления кнопка CListBox* MyListBox; };
CMainWnd::CMainWnd() { Create(NULL,"Step4",WS_OVERLAPPEDWINDOW,rectDefault, NULL,NULL); / MyListBox = new CListBox(); if(MyListBox!=NULL) MyListBox->Create(LBS_HASSTRINGS|WS_VISIBLE|WS_BORDER, CRect(360,10,480,100), this,105); CString str ("кот"); MyListBox->AddString("123"); MyListBox->AddString(str);
MyButton = new CMyButton(); if (MyButton!=NULL) MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(120,10,220,50),this,IDC_MYBUTTON); }
CMainWnd::~CMainWnd() { if (MyButton!=NULL)delete MyButton; // удалить динамический объект if (MyListBox!=NULL)delete MyListBox; }
class CMyApp : public CWinApp { public: CMyApp(); // конструктор по умолчанию virtual BOOL InitInstance(); // стандартная инициализация }; CMyApp::CMyApp() // конструктор главного класса приложения {} BOOL CMyApp::InitInstance() // стандартная инициализация { m_pMainWnd=new CMainWnd(); // создать класс окна ASSERT(m_pMainWnd); // проверить его правильность m_pMainWnd->ShowWindow(SW_SHOW); // Показать окно m_pMainWnd->UpdateWindow(); // Обновить окно return TRUE; // Вернуть что все нормально };
CMyApp theApp;
|
// запуск приложения
|