Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 13

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 7 8 9 10 11 12 < 13 > 14 15 16 17 18 19 .. 173 >> Следующая

void CDlgDemoDlg::OnPaint() i
if (Islconic()) {
CPaintDC dc(this); // контекст устройства для отображения SendMessage
(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Центрирование значка в рабочей области int cxlcon = GetSystemMetrics(SM_CXICON); int cylcon = GetSystemMetrics(SM__CYICON); CRect rect; GetClientRect(Srect) ;
int x = (rect.Width() - cxlcon +1) / 2; int у = (rect.Height() - cylcon +1) /2;
// Отображение значка
dc.Drawlcon(x, y, m_h!con) ;
}
else
{
// Вызов функции CDialog::OnPaint() был удален
COLORREF Color = RGB
(m_Red ? (m_Intensity=lNT_DARK ? 128 : 255) : 0, m_Green ? (m_lntensity=lNT_DARK ? 128 : 255) : 0, m_Blue ? (m_lntensity==INT_DARK ? 128 : 255) : 0);
CBrush Brush (Color);
CPaintDC dc(this);
dc.FillRect (&m_RectSample, SBrush) ;
Код, сгенерированный мастером AppWizard в операторе if, выводит значок программы, когда ее окно минимизировано. Код, добавленный к оператору else, закрашивает прямоугольник внутри рамки Sample. Цвет прямоугольника определяется смешиванием светлых и темных основных цветов, выбранных пользователем. Методика формирования цвета описана в гл. 19.
12. Добавьте в начало объявления класса CDlgDemoDlg в файле DlgDemoDlg.h определение переменной m_RectSample и перечисления, задающего выбранную интенсивность цвета.
///////////////////////////////////////////////////////////////// /7 Диалоговое окно класса CDlgDemoDlg
class CDlgDemoDlg : public CDialog
(
public:
CRect m_RectSample;
enum (INT DARK, INT LIGHT};
Функция Initlnstance
Функция Initlnstance, сгенерированная мастером AppWizard, выполняет перечисленные ниже задачи (вместо создания шаблона документа и вызова функции ProcessShellCommand для обработки командных строк, как в предыдущих программах).
• Создает объект класса диалогового окна CDlgDemoDlg.
• Вызывает функцию CDialog: :DoModal для объекта диалогового окна. Функция DoModal создает и отображает диалоговое окно, основанное на шаблоне idd_dlgdemo_dialog, который мы редактировали. После закрытия окна функция DoModal завершается. Если программа выполняет какие-то действия в зависимости от значений, введенных в диалоговое окно, то она должна проверить значение, возвращенное функции DoModal.
• Если закрыть диалоговое окно, нажав кнопку Cancel, то функция DoModal возвратит значение idcancel.
• После щелчка на кнопке с идентификатором IDOK функция DoModal возвращает значение idok. В этом случае содержимое всех элементов управления передается в соответствующие переменные (определенные мастером ClassWizard), и функция initlnstance считывает эти элементы по мере необходимости.
• Функция initlnstance возвращает значение false, чтобы MFC завершила выполнение программы, а не продолжила обработку сообщений. В предыдущих программах данная функция возвращала значение true.
Построение и запуск программы DlgDemo
Теперь можно построить и выполнить программу DlgDemo. Окно программы показано на рис. 16.8.
j^V Dialog-Based Demo
la
Рис. 16.8. Окно программы DlgDemo
Исходный текст программы DlgDemo
В листингах 16.1 — 16.4 приведены исходные тексты программы DlgDemo. Все эти файлы содержатся в каталоге \DlgDemo прилагаемого компакт-диска.
Листинг 16.1.
// DlgDemo.h : главный файл заголовков приложения DLGDEMO //
#if !defined(
AFX_DLGDEMO_H_AF814125_A1F8_11D1_80FC_00C0F6A83B7F_INCLUDEDJ
#define AFX_DLGDEMO_H_AF814125_AlF8_l1Dl_80FC_00C0F6A83B7F_INCLUDED_
#if _MSC_VER > 1000 #pragma once
#endif // _MSC_VER > 1000
#ifndef _AFXWIN_H_
terror include 'stdafx.h' before including this file for PCH #endif
iinclude "resource.h" // Основные символические константы
111111111111111111111111111111111111111111111111111111111111 /1111 II Класс CDlgDemoApp:
// Смотрите реализацию этого класса в файле DlgDemo.срр //
class CDlgDemoApp : public CWinApp {
public:
CDlgDemoApp();
// Переопределения
// Переопределения виртуальных функций, сгенерированные
// мастером ClassWizard
//{{AFX_VIRTUAL(CDlgDemoApp)
public:
virtual BOOL InitInstance(); //)}AFX_VIRTUAL
// Реализация
//((AFX_MSG(CDlgDemoApp)
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять
// и удалять здесь функции-члены класса
// НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/II/1111II/111/II 111111111/11//1//1/1/111/1 II/11/11/11/11 II 11
II { {AFX_INSERT_LOCATION} )
// Microsoft Visual C++ вставит дополнительные объявления // сразу перед предыдущей строкой
#endif
// !defined(
// AFX_DLGDEMO_H_AF814125_А1F8_l1Dl_8ОFC_00C0F6A83B7F_INCLUDED_)
Листинг 16.2.
// DlgDemo.cpp : определяет работу класса приложения //
#include "stdafx.h" #include "DlgDemo.h" #include "DlgDemoDlg.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE f] =__FILE_;
#endif
1111111111111111111111111111111111111111111111111111111111111111 / II Класс CDlgDemoApp
BEGIN_MESSAGE_MAP(CDlgDemoApp, CWinApp) //{(AFX_MSG_MAP(CDlgDemoApp)
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять и удалять // здесь макросы обработки сообщений
Предыдущая << 1 .. 7 8 9 10 11 12 < 13 > 14 15 16 17 18 19 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100