![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Skorpion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 12.11.2006 Репутация: нет Всего: нет |
Практическое занятие №5
Задание №1. Создайте программу, которая предназначена для рисования с помощью мыши линий установленного цвета и размера, программа будет рисовать линию в соответствии с движениями мыши. При нажатии на кнопку Exit программа завершается. Все каркасные файлы для вашей программы напишите с помощью мастера настроек MFC AppWizard. Спроектируйте диалоговую панель. Выполните слдеующие действия • Щелкните два раза по надписи IDD_DRAW_DIALOG. Справа появится окно проектирования диалоговой панели. • С помощью панели Controls расставьте элементы, управления как показано на рис. и согласно таблице. Объект Свойство Установка Dialog Box ID IDD_DRAW_DIALOG Caption The Draw Program Font System, Size 10, страница Styles Static Text ID IDC_INSTRUCTION_STATIC Caption To Draw: Press the left button of the mouse and move the mouse (Рисование: нажмите левую кнопку мыши и перемещайте) Align Text Center, страница Styles Client edge отмечен, страница Extended Styles Static edge отмечен, страница Extended Styles Push Button ID IDC_EXIT_BUTTON Caption E&xit Client edge отмечен, страница Extended Styles Static edge отмечен, страница Extended Styles Modal frame отмечен, страница Extended Styles • В объекте Dialog Box вы задаете следующие данные: Caption - название диалогового окна. Font - здесь вы уcтановили шрифт -System и его размер 10 • Static Text - это элемент текста, он вставляется как обычный элемент управления, но не выполняет никаких функций, так как служит для показа текста, который вы зададите в Captions. Так же мы задали некоторые графические установки для статистического текста - это Client Edge и Static Edge. Связывание событий с элементами управления Связывание кода с событием BN_CLICKED кнопки Exit Чтобы связать код с событием BN_CLICKED кнопки EXIT, выполните следующие действия: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: • Class Name: CDrawDlg Object ID: IDC_EXIT_BUTTON Messages: BN_CLICKED • Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. • Сейчас ваша панель MFC ClassWizard должна будет выглядеть так: Нажмите кнопку Edit Code и напишите следующий код в функции OnExitButton(): void CDrawDlg::OnExitButton() { // TODO: Add your control notification handler code here ////////Мой код начинается здесь/////////// OnOK(); ////////Мой код заканчивается здесь/////////// } Функция OnOK(), которую вы ввели завершает программу, при нажатии на кнопку Exit. Связывание кода с событием WM_MOUSEMOVE диалоговой панели Сечас мы свяжем код с событием WM_MOUSEMOVE, которое будет автоматически выполняться при передвижении мыши. Чтобы связать код с событием WM_MOUSEMOVE диалоговой панели, выполните следующие действия: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CDrawDlg Object ID: CDrawDlg Messages: WM_MOUSEMOVE • Щелкните на кнопку Add Fucntion. Нажмите кнопку Edit Code и напишите следующий код в функции OnMouseMove(): void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ////////Мой код начинается здесь/////////// if( (nFlags & MK_LBUTTON)==MK_LBUTTON ) { CClientDC dc(this); dc.SetPixel(point.x, point.y, RGB(0,0,0)); } //конец структуры IF ////////Мой код заканчивается здесь/////////// ///.... Код который вы ввели содержит единственный оператор IF: Оператор IF содержит в себе функции, которые будут выполняться, если условие оператора IF верно. Условие таково, если левая кнопка мыши нажата и произошло перемещение, то функции внутри оператора IF выполняются. Функция OnMouseMove выполняется при любом передвижении мыши, ее параметр nFlags показывает была ли нажата какая-нибудь клавиша клавиатуры( типа ALT или Shift) и кнопка мыши. Операция & проверяет прижата ли левая кнопка мыши при ее перемещении. Если это так, то выполняется код ниже оператора IF. Код в блоке оператора IF CClientDC dc(this); создает объект контексного устройства, c помощью него вы сможете рисовать, его можно назвать воображаемым экраном в памяти компьютера. Научно говоря, dc(this) - это экземпляр класса CClientDC c параметром конструктора this, с помощью экземпляра класса вы можете обращаться к функциям этого класса. Следующий оператор, который вы напечатали рисует точку в заданном месте (место щелчка мыши), используя параметры point.x и point.y, которые ему передает функция OnMouseMove, и заданного цвета, с помощью функции RGB();. Сейчас у нас установлен черный цвет, чтобы установить красный, синий или зеленый, надо заменить параметры функции RGB() соответственно на 255,0,0, 0,255,0, 0,0,255. Рисование изображения точка за точкой Чтобы увидеть в действии свой код, выполните следующие действия: Скомпонуйте и скомпилируйте программу. Запустите ее. Удерживая нажатой левую кнопку мыши, претащите ее в сторону. Вы видите, что точки рисуются не слитно друг с другом, это происходит по тому, что WINDOWS должен выполнять и другие задачи и не может полностью следить за Draw. Поэтому мы модифицируем нашу программу, так чтобы эти точки соединялись линиями. При выполнении функции OnMouseMove параметр point передает положение курсора во время последней проверки его положения. Расширение возможностей программы DRAW Сейчас вы расширите возможности программы Draw. Вы сделаете так, чтобы при передвижении мыши, рисовалась сплошная линия. Модифицируем программу следующим образом. Чтобы соединить точки линией функция OnMouseMove должна знать предыдущие координаты мыши, для этого нам нужно объявить две переменные m_PrevX и m_PrevY, для хранения координат по X и Y. Выведем на экран файл DrawDlg.h, для этого откроем Project Workspace, щеклнем на закладке File View и выполним двойной щелчек на пункте DrawDlg.h. Включите объявления переменных m_PrevX и m_PrevY следующим образом: // DrawDlg.h : header file/// // CDrawDlg dialog class CDrawDlg : public CDialog { // Construction public: CDrawDlg(CWnd* pParent = NULL); // standard constructor ////////Мой код начинается здесь/////////// int m_PrevX; int m_PrevY; ////////Мой код заканчивается здесь/////////// } Вы объявили две переменные целого типа для хранения предыдущих координат мыши. Заметьте, что вы их включили после слова public: - это означает, что эти переменные доступны всем функциям класса. Теперь модифицируем функцию OnMouseMove в файле DrawDlg.cpp void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ////////Мой код начинается здесь/////////// if((nFlags & MK_LBUTTON)==MK_LBUTTON) { CClientDC dc(this); // dc.SetPixel(point.x, point.y, RGB(123,211,98)); CPen NewPen(PS_SOLID, 10, RGB(255,0,0) ; dc.SelectObject(&NewPen); dc.MoveTo(m_PrevX, m_PrevY); dc.LineTo(point.x, point.y); m_PrevX=point.x; m_PrevY=point.y; } ////////Мой код заканчивается здесь/////////// CDialog::OnMouseMove(nFlags, point); } Рассмотрим код приведенный выше: Код вызова функции SetPixel(), помещен в коментарий, так как он нам больше не понадобиться. Следующий код CPen NewPen(PS_SOLID, 10, RGB(255,0,0) ) создает новое перо с именем NewPen класса CPen c заданным размером шрифта 10 пикселов и красным цветом. Параметр PC_SOLID говорит, что будет рисоваться сплошная линия. После этого выполняется функция SelectObject, выбирающая новое перо: dc.SelectObject(&NewPen); Этой функцией вы включаете перо в работу. Следующие два оператора: dc.MoveTo(m_PrevX, m_PrevY); dc.LineTo(point.x, point.y); рисуют линию, используя координаты начала(это определяет функция MoveTo()) и координат конца (LineTo). И последнии два оператора: m_PrevX=point.x; m_PrevY=point.y; сохраняют в переменных m_PrevX и m_PrevY, текущие координаты, которые в следующий раз будут использоваться, как предыдущие(начальная позиция). Теперь запустите программу и проверьте правильность ее работы. Вы должны заметить, что при первом нажатии на кнопку мышки в любой области диалоговой панели, есть лишняя линия, которая выходит из краев окна. Дело в том, что вы при первом рисовании линии, т.е после первого щелчка мыши и ее передвижении, начальные координаты не определены, а будут известны только текущие. • Для решения этой проблемы вы должны связать код событием WM_LBUTTONDOWN, которое происходит при нажатии на левую кнопку мыши. Выберете ClassWizard в меню View Выберете закладку Message Maps в панели ClassWizard Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CDrawDlg Object ID: CDrawDlg Messages: WM_LBUTTONDOWN Щелкните на кнопку Add Fucntion. Нажмите кнопку Edit Code и напишите следующий код в функции OnLButtonDown(): void CDrawDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ////////Мой код начинается здесь/////////// m_PrevX=point.x; m_PrevY=point.y; ////////Мой код заканчивается здесь/////////// } Код, который вы напечатали, обновляет значения переменных m_PrevX и m_PrevY, тем местоположением мыши, где был совершен щелчек по ее левой кнопке, соответственно при первом и последующих нажатиях кнопки, линия будет начинаться из данной точки нажатия. Поэксперементируйте с программой Draw и щелкните на кнопку Exit для ее прекращения. Задание №3. Сделайте так, чтобы линия, которую вы рисуете, была шириной 5 пикселов. Задание №4. Создайте программу MYKEY которая при нажатии на клавиатуру выводила панель сообщения, показывающую различные флаги, представляющие клавишу, которая была нажата. Создайте проект программы. Окно Вашей программы должно выглядеть как на рисунке. Теперь рассмотрим все пункты попорядку. • В объекте Dialog Box вы задаете следующие данные: Caption - название диалогового окна. Font - здесь вы уcтановили шрифт -System и его размер 10 • Static Text - это элемент текста, он вставляется как обычный элемент управления, но не выполняет никаких функций, так как служит для показа текста, который вы зададите в Captions. Так же мы задали некоторые графические установки для статистического текста - это Client Edge и Static Edge. • Объект Свойство Установка Dialog Box ID IDD_MYKEY_DIALOG Caption The MyKey Program Font System, Size 10, страница Styles Static Text ID IDC_INSTRUCTION_STATIC Caption Press keys on the keyboard Align Text Center, страница Styles Client edge отмечен, страница Extended Styles Static edge отмечен, страница Extended Styles Disabled отмечен (General) Связывание кода с событием WM_KEYDOWN клавиатуры При нажатии на клавишу будет появляться окно сообщения, которое будет показывать ее флаг. Чтобы связать код с событием WM_KEYDOWN, выполните следующие действия: Выберете ClassWizard в меню View Выберете закладку Message Maps в панели ClassWizard Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CMyKeyDlg Object ID: CMyKeyDlg Messages: WM_KEYDOWN Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. Нажмите кнопку Edit Code и напишите следующий код в функции OnKeyDown(): void CMyKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default ////Мой код начинается здесь//// char strnChar[10]; char strnRepCnt[10]; char strnFlags[10]; CString strKeyPressed; itoa(nChar, strnChar, 10); itoa(nRepCnt, strnRepCnt,10); itoa(nFlags, strnFlags, 10); strKeyPressed=(CString)"You pressed the key: "+ "\n"+"nChar="+ strnChar+ "\n"+" nReptCnt="+ strnRepCnt+ "\n"+ "nFlags="+ strnFlags; MessageBox(strKeyPressed); ////Мой код заканчивается здесь//// CDialog::OnKeyDown(nChar, nRepCnt, nFlags); } Взгляните на параметры функции OnKeyDown: (UINT nChar, UINT nRepCnt, UINT nFlags) Первым параметром является nChar, который показывает код нажатой клавиши. Вторым параметром является nRepCnt, представляет число повторных нажатий на клавишу. Например, если вы долго удерживаете клавишу B, то этот параметр сохранит кол-во нажатий на эту клавишу. Третий параметр - nFlags представляет число нажатой специальной клавишы(такие как ALT, SHIFT). Код, который вы ввели объявляет три строки: char strnChar[10]; char strnRepCnt[10]; char strnFlags[10]; Они будут хранить значения переменных nChar, nRepCnt, nFlags соответственно. Затем вы объявили переменную strKeyPressed типа CString. CString strKeyPressed; Затем, в конце программы, вы присваиваете этой переменной значение строки, которая будет выведена в собщении. После этого, с помощью оператора itoa вы присваивате переменным strnChar, strnRepCnt, strnFlags числовые значения соответсвующих переменных. Функция itoa переводит число в текстовую строку. Рассмотрим следующие три строки: itoa(nChar, strnChar, 10); itoa(nRepCnt, strnRepCnt,10); itoa(nFlags, strnFlags, 10); Первым аргументом функции itoa, является чисовая переменная, которую надо перевести. Вторым аргументом является переменная типа char, в нее будет записываться число. Третий аргументом - число, показывающее систему счисления числовой переменной, к примеру число 10 - это десятичная С/C, значит число nChar или л.д десятичное. Теперь, кога все три переменные сохранены как строки, вы можете их все связать в строке strKetPressed: strKeyPressed=(CString)"You pressed the key: "+"\n"+"nChar="+ strnChar+"\n"+"nReptCnt="+strnRepCnt+"\n"+"nFlags="+strnFlags; MessageBox(strKeyPressed); Знак /n - это перевод каретки, символ новой строки. Теперь, когда все переменные увязаны в одной тестовой переменной, мы можем вывести ее на экран с помощью функции: MessageBox(strKeyPressed); Аргумент этой функции есть текст, который будет показан в окне сообщения. Поэксперементируйте с программой MyKey и щелкните на значек x для ее прекращения. Задание №5. Создайте программу (Speed) основанную на диалоговом окне, оснащенном меню: File и Help, в середине главного окна, расположено окно редактирования, в котором можно вводить только числа, а, если зайти в меню File->Current, то появится окно сообщения показывающее число в окне редактирования. При запуске вашей программы, главное окно должно будет выглядеть так: Для этого: 1. Создание проекта программы 2. Создайте меню программы: • Для того, чтобы создать меню программы зайдите в закладку Resource View, раскройте там пункт Speed Resources, затем щелкните на правую кнопку мыши . • В раскрывшемся контекстном меню выберите пункт Insert..., появиться такая диалоговая панель: • Выберите здесь Menu и нажмите на кнопку New для создания нового меню. • Затем зайдите в пункт Menu, в закладке Resource View, и нажмите на IDR_MENU1 справа в окошке появиться окно визуального проектирования меню. Оно будет выглядеть так: • Вы видите в левом верхнем углу этого окна небольшой прямоугольник, этот прямоугольник является областью для ввода названия пункта меню. • Нажмите на него мышкой, затем нажмите на правую кнопку мыши и в появившемся контекстном меню нажмите на Properties, а в раскрывшемся диалоговом окне: задайте заголовок пункта меню в Caption - &File, первый заначек &, подчеркивает первую букву F слова File, это означает, что при нажатии на клавиши ALT+F всплывет пункт меню File. • Нажмите Enter, в прямоугольнике появиться File, а ниже откроется еще одно окошко с прямоугольником, в этом прямоугольнике вы уже будете задавать названия пунктов меню File. • Выделите мышкой этот прямоугольник, раскройте контекстное меню Properties, и в раскрывшемся окне: • Задайте в Captions название пункта меню &Сurrent Speed и нажмите Enter. • Теперь опять зайдите в Properties, можно использовать комбинацию клавиш ALT+ENTER, и посмотрите в ID, вы увидите там запись ID_FILE_CURRENTSPEED - это идентификатор пункта меню Current Speed, с помощью него вы сможете связывать этот пункт меню с событиями. Этот идентификатор Viusal C++ сгенерировал сам. • Ниже включите еще один пункт с названием &Exit, для выхода из программы. • Теперь мы создадим меню Help. Спроектируйте его так, как показано на следующем рисунке: • Щелкните на пустой прямоугольник в главной строчке, задайте ему имя Help, в нижнем прямоугольнике напишите About. Произведите проектирование пункта меню как было описано выше. • Теперь, когда меню визуально спроектировано, его надо связать с диалоговой панелью, для этого меню вы добавите в класс диалоговой панели. Для этого выберете мастер ClassWizard в меню View, в ответ Visual C++ выведет вам диалоговою панель Adding a class(добавление класса): • Выберете здесь Select an existing class(выбрать уже существующий класс), это значит, что вы хотите включить меню уже в существующий класс, нажмите на кнопку OK. • Раскроется еще одно окно Select Class(выбрать класс), выберите класс CSpeedDlg, отвечающий за диалоговую панель, не оставляйте установки по умолчанию! • Нажмите на кнопку Select. 3. Спроектируйте диалоговую панель: Для этого вначале выберите закладку "Recourse View" и раскройте пункт Speed Resource, как показано на рис. • Щелкните два раза по надписи IDD_SPEED_DIALOG. Справа появится окно проектирования диалоговой панели. • С помощью панели Controls расставьте элементы, как показано на рис. и в таблице. Объект Свойство Установка Dialog Box ID IDD_SPEED_DIALOG Caption The Speed Program Menu IDR_MENU1 Font System, Size 10, страница Styles Static Text ID IDC_STATIC Caption Speed: Edit Box ID IDC_SPEED_EDIT • В объекте Dialog Box вы задаете следующие данные:Caption - название диалогового окна.Font - здесь вы уcтановили шрифт -System и его размер 10. Menu - в диалоговой панели Dialog Box Properties в пункте Menu вы должны выбрать меню, которое будет включено в диалоговое окно, в нашем случае, мы выбираем меню IDR_MENU1. • Static Text - это элемент текста, он вставляется как обычный элемент управления, но не выполняет никаких функций, так как служит для показа текста, который вы зададите в Captions. 4. Свяжите событий с элементами управления Связывание переменной с окном редактирования. Сейчас вы свяжете переменную с окном редактирования, это нам необходимо для того, чтобы иметь доступ к содержимому окна редактирования. Чтобы связать переменную с окном редактирования IDC_SPEED_EDIT выполните следующие действия Выберете ClassWizard в меню View Выберете закладку Member Variables в панели ClassWizard • Щелкните на кнопку Add Varible и задайте переменную следующим образом: Varible Name: m_SpeedEdit Category: Value Varible Type: int Щелкните на кнопку OK. • Теперь диалоговая панель MFC ClassWizard должна будет выглядеть так: • Так как вы определили переменную m_SpeedEdit как переменную типа int, то вы можете задать максимальное и минимальное значение этой переменной. • Задайте в Maximum Value значение 100, это значит, что вы сможете задавать значение переменной в интервале от 0 до 100. • Щелкните на кнопку OK диалоговой панели ClassWizard. Связывание кода с событием EN_CHANGE окна редактирования Событие EN_CHANGE происходит каждый раз при изменении содержимого окна редактирования, это мы будем использовать для того, чтобы при каждом изменении присваивать новое значение переменной m_SpeedEdit. • Чтобы связать код с событием EN_CHANGE, выполните следующие действия: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CSpeedDlg Object ID: IDC_SPEED_EDIT Messages: EN_CHANGE • Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. • Сейчас ваша панель MFC ClassWizard должна будет выглядеть так: Нажмите кнопку Edit Code и напишите следующий код в функции OnChangeSpeedEdit(): void CSpeedDlg::OnChangeSpeedEdit() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you modify CDialog::OnInitDialog() // function to send the EM_SETEVENTMASK message to the control // with the ENM_CHANGE flag ORed into the lParam mask. // TODO: Add your control notification handler code here ///Мой код начинается здесь//// //Обновить экран UpdateData(TRUE); ////Мой код заканчивается здесь//// } Вы ввели единственный оператор, который обновляет переменные элементов управления, исходя из текущего содержимого диалогового окна: UpdateData(TRUE); Следовательно после выполнения данного оператора переменной m_SpeedEdit будет присвоено значение содержимого окна редактирования. Связывание кода с пунктом CurrentSpeed меню File Сейчас вы свяжете код с событием COMMAND, которое возникает при выборе пункта меню, в данном случае при выборе пункта Current Speed. • Чтобы связать код с событием COMMAND, выполните следующие действия: • Откройте закладку Resource View, раскройте пункт Speed View, а там выберите Menu. Выполните двойной щелчок по IDR_MENU1. • Теперь выполняем следующее: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CSpeedDlg Object ID: ID_FILE_CURRENTSPEED Messages: COMMAND • Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. • Нажмите кнопку Edit Code и напишите следующий код в функции OnFileCurrentspeed(): void CSpeedDlg::OnFileCurrentspeed() { // TODO: Add your command handler code here ////Мой код начинается здесь//// char strSpeed[100]; itoa(m_SpeedEdit,strSpeed,10); MessageBox(strSpeed); ////Мой код заканчивается здесь//// } • Первые два оператора, преобразуют в строку целое значение, хранящееся в переменной m_SpeedEdit: char strSpeed[100]; itoa(m_SpeedEdit,strSpeed,10); • Последний оператор использует функцию MessageBox() для вывода значения строки, хранящееся в переменной strSpeed: MessageBox(strSpeed); Связывание кода с пунктом Exit меню File Сейчас вы свяжете код с событием COMMAND, которое возникает при выборе пункта меню, в данном случае при выборе пункта Exit. • Чтобы связать код с событием COMMAND, выполните следующие действия: • Откройте закладку Resource View, раскройте пункт Speed View, а там выбирите Menu. Выполните двойной щелчок по IDR_MENU1. • Теперь выполняем следующее: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CSpeedDlg Object ID: ID_FILE_EXIT Messages: COMMAND • Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. • Нажмите кнопку Edit Code и напишите следующий код в функции OnFileExit(): void CSpeedDlg::OnFileExit() { // TODO: Add your command handler code here ////Мой код начинается здесь//// OnOK(); ////Мой код заканчивается здесь//// } • Единственный оператор, который вы ввели завершает работу программы. Связывание кода с пунктом About меню Help Сейчас вы свяжете код с событием COMMAND, которое возникает при выборе пункта меню, в данном случае при выборе пункта About. • Чтобы связать код с событием COMMAND, выполните следующие действия: • Откройте закладку Resource View, раскройте пункт Speed View, а там выбирите Menu. Выполните двойной щелчок по IDR_MENU1. • Теперь выполняем следующее: • Выберете ClassWizard в меню View • Выберете закладку Message Maps в панели ClassWizard • Используйте диалоговую панель ClassWizard для выбора следующего события: Class Name: CSpeedDlg Object ID: ID_HELP_ABOUT Messages: COMMAND • Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK. • Нажмите кнопку Edit Code и напишите следующий код в функции OnHelpAbout(): void CSpeedDlg::OnHelpAbout() { // TODO: Add your command handler code here ////Мой код начинается здесь//// //Создать объект класса CAboutDlg CAboutDlg dlg; //Вывести диалоговую панель About dlg.DoModal(); ////Мой код заканчивается здесь//// } • Первый оператор введенный вами создает объект класса CAboutDlg с именем dlg: CAboutDlg dlg; • Класс CAboutDlg dlg; был создан тогда, когда вы создавали проект программы, его написал Visual C++, этот класс связан с диалоговой панелью About. • Следующий оператор выводит диалоговую панель About используя функцию элемент к объекту dlg: dlg.DoModal(); • Как и предполагает имя функции, DoModal() выводит диалоговую панель, как модальную диалоговую панель, это значит что пока это окно выведено на экран, вы не сможете активировать другие окна программы. • Программа Speed завершена! Запустите ее и поэксперементируейте с ней! Выручите плиззззззззз ![]() |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
Тебе в Центр Помощи. И пользуйся кнопкой "Код".
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Skorpion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 12.11.2006 Репутация: нет Всего: нет |
Должна получится программа типа pait
|
|||
|
||||
Solomon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 23.1.2006 Где: Украина Киев Репутация: 2 Всего: 2 |
мдаа... и ты думаеш твое сообщение кто нибуть дочитает до конца???
![]() ты б хоть привел его к нормальному виду -------------------- Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром... Соломон 2008 |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 26 Всего: 122 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |