2013-10-26 5 views
-1

Как это можно сделать с помощью Visual C++ 2008 Express?Показать изображение без границ и выйти из c c

Изображение должно быть исполнено.

Я обнаружил, что я могу изменить фон без полей окна с помощью этих строк:

WNDCLASSEX wcx; 
/*fill up other wcx members*/ 
wcx.hbrBackground=CreatePatternBrush((HBITMAP) LoadImage(0,_T("background.bmp"), 
           IMAGE_BITMAP,0,0, 
           LR_CREATEDIBSECTION|LR_LOADFROMFILE)); 

или

WNDCLASSEX wcx; 
/*fill up other wcx members*/ 
wcx.hbrBackground=CreatePatternBrush((HBITMAP) LoadImage(GetModuleHandle(0), 
            MAKEINTRESOURCE(ID_BACK_BMP), 
           IMAGE_BITMAP,0,0, 
           LR_CREATEDIBSECTION); 

, но я получил проблему:

Первый пример используется для получения изображений из существующие файлы. Второй использует резорбции. Но я не могу найти вариант, как добавить ресурс (я думаю, что это невозможно для родных проектов)! Есть ли обходной путь?

Пожалуйста, помогите!

PS. Извините за плохой английский!

ответ

0

Вам не нужен редактор ресурсов для компиляции ресурсов в исполняемый образ. Редактор ресурсов - это просто графический редактор для файлов сценариев ресурсов (.rc). Файлы сценариев ресурсов могут быть созданы в любом текстовом редакторе. Формат файла документирован в MSDN (About Resource Files).

Чтобы добавить ресурс растрового изображения, вы должны добавить заявление в BITMAP resource определение для вашего сценария ресурсов и создать уникальный идентификатор ресурса в файле заголовка (идентификаторы ресурсов для растровых изображений должны быть в range from 0 to 32767):

ресурс. ч:

#define IDB_BACK_BMP 1 

MyApp.rc:

#include "resource.h" 
IDB_BACK_BMP BITMAP "background.bmp" 

Предполагая, что ваш проект правильно настроен для вызова Resource Compiler для сценария ресурсов файлов вы можете загрузить растровое изображение из исполняемого образа с помощью:

HBITMAP hBM = (HBITMAP)LoadImage(GetModuleHandle(NULL), 
           MAKEINTRESOURCE(IDB_BACK_BMP), 
           IMAGE_BITMAP, 
           0, 0, 
           LR_DEFAULTCOLOR); 

Обратите внимание, что вам не нужно указывать LR_CREATEDIBSECTION флаг, если вы не хотите, чтобы отправить изображение на принтер. Для рендеринга контекста устройства отображения достаточно зависимого от устройства растрового изображения.