• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по Visual Studio .NET

    Диалог About. Внесение логики разработчика.

    При нажатии кнопки в области картинок мы вызываем диалог About, от которого отказались при создании проекта. Цель такого поступка – самостоятельно создать диалог, поместить в него растровое изображение и ввести команду для его запуска в меню управления (Control menu) главного окна.

    Создайте новый диалог (Project › Add Resource › Dialog › New), удалите из его окна кнопку Cancel, разместите в нем Static Control, Group Box и Picture Control.

    Для картинки установите свойства: Type: Icon, ID: IDC_EYE, Image: IDI_EYELEFT. Обратите внимание на то, что свойство Image недоступно, пока вы не установите тип изображения Icon. Для окна диалога свойство ID задайте равным IDD_ABOUTBOX. В класс CLookDlg введите обработчик сообщения WM_SYSCOMMAND. Каркас приложения вызывает обработчик этого сообщения в те моменты, когда пользователь выбирает команды из меню управления или когда он пользуется кнопками сворачивания окна:

    void CLookDlg::OnSysCommand(UINT nID, LPARAM IParam)
    {
    if ((nID & OxFFFO) == IDM_ABOUTBOX)
    CDialog(IDD_ABOUTBOX).DoModal();
    else
    CDialog::OnSysCommand(nID, IParam);
    }
    

    Здесь, как видно из кода, мы проверяем идентификатор команды, и если он соответствует команде About, то запускаем диалог в модальном режиме. Теперь необходимо вставить в меню управления окном команду About. Отметьте, что это меню создает каркас приложения и оно не имеет соответствующего ресурса в нашем приложении. Поэтому управление меню производится методами класса смени. Обычно это делают в функции OnlnitDialog. В этой же функции производят инициализацию элементов управления. Внесите в нее следующие изменения:

    BOOL CLookDlg::OnlnitDialog()
    {
    //======= Добываем адрес меню управления окном
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu)
    {
    //====== Добавляем команду About
    pSysMenu › AppendMenu(MF_SEPARATOR);
    pSysMenu › AppendMenu(MF_STRING, IDM_ABOUTBOX, "About…");
    }
    //====== Загружаем свой (нестандартный) значок
    HICON hMylcon =::Loadlcon(GetModuleHandle(0),(char*)(IDI_EYELEFT)); Setlcon(hMylcon, TRUE);
    // Set big icon Setlcon(hMylcon, FALSE);
    // Set small icon
    //====== Если не удалось найти файл,
    if (IReadErrors () }
    {
    PostMessage(WM_QUIT); // уходим
    return FALSE;
    }
    //====== Количество элементов в контейнере
    //=====преобразуем в строку
    m_Total.Format("%d",m_nltems);
    //====== Ищем и расшифровываем первый код ошибки
    Getlnfo(0);
    //====== Вызов родительской версии диалога
    CDialog::OnlnitDialog ();
    //====== Устанавливаем окно-двойник для счетчика
    m_Spin.SetBuddy(GetDlgItem(IDC_CURRENT));
    //====== Диапазон изменения показаний счетчика
    m_Spin.SetRange(0, m_nlterns-1);
    //===== Диапазон изменения позиции ползунка
    m_Slider.SetRange(0, m_nlteras-l);
    //===== Устанавливаем цену делений для шкалы ползунка m_Slider.SetTicFreq(m_nltems/10);
    return TRUE;
    }
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.