Летающий Пуск - часть 5
Следующим шагом мы должны выбрать в новый контекст нашу картинку. Для этого можно вызвать функцию SelectObject, у которой два параметра:
контекст, в который нужно выбрать объект, — указываем созданный нами контекст, на основе оконного;
объект, который надо выбрать, — указываем картинку.
Вот теперь можно производить копирование с помощью функции BitBlt. У нее в скобках нужно указать следующие параметры:
контекст рисования, в который надо копировать (приемник), — указываем контекст окна;
следующие четыре параметра являются левой верхней координатой, шириной и высотой прямоугольника, в который надо скопировать изображение (целые числа). В данном случае левая и верхняя позиции будут равны нулю, чтобы картинка располагалась в левом верхнем углу окна. Ширина и высота равны размеру картинки (50x20);
источник копирования — указываем контекст hdcBits, в котором находится наша картинка;
следующие два параметра задают левую верхнюю координату прямоугольника в контексте-источнике (именно от этой точки будет взято изображение для копирования) — указываем нули, т. к. нас интересует вся кнопка;
последний параметр указывает на тип копирования — используем флаг SRC_COPY, т. к. будем создавать копию источника в приемнике.
После рисования нам уже не нужен контекст, который мы создали для картинки, и хорошим тоном было бы удалить его. Для этого вызываем функцию DeleteDC и в качестве параметра указываем наш контекст рисования.
Завершаем рисование вызовом метода EndPaint. Таким образом мы ставим точку в начатое функцией BeginPaint рисование.
Теперь в нашем окне в левом верхнем углу будет рисоваться изображение кнопки Пуск. Остается сделать самую малость — уменьшить размер окна до размеров изображения, чтобы пользователь видел только картинку, и заставить окно двигаться. Для этого мы должны написать функцию DrawStartButton (листинг 2.3), Желательно, до функци _tWinMain.
Листинг 2.3. Функция , заставляющая окно двигаться |
void DrawStartButton() { int i; HANDLE h; int toppos=GetSystemMetrics(SM_CYSCREEN)-23;
Содержание Назад Вперед