Как добавить поле изображения в win32 API с помощью Visual C++

Просто слово предупреждения с:

DBCC CHECKIDENT (MyTable, RESEED, 0)

, Если Вы не усекали таблицу, и столбцом идентификационных данных является PK, Вы получите ошибку при достижении существующих ранее идентификационных данных.

, Например, у Вас уже есть идентификационные данные (3,4,5) в таблице. Вы тогда сбрасываете столбец идентификационных данных к 1. После того, как идентификационные данные 2 вставляются, следующая вставка попытается использовать идентификационные данные 3, который перестанет работать.

11
задан Jon Seigel 6 March 2010 в 00:21
поделиться

1 ответ

Размещение полного кода здесь - довольно сложная задача, но я постараюсь дать несколько советов, как это сделать:

Первый метод - загрузить изображение и раскрасить его

  1. Загрузите изображение (к сожалению, простой Win32 API поддерживает довольно много форматов изображений BMP, ICO ...).

     HBITMAP hImage = (HBITMAP) LoadImage (NULL, (LPCSTR) файл, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_LOADTRANSPARENT);
    
  2. Сохраните описанный выше дескриптор где-нибудь в вашем приложении, чтобы вы могли получить к нему доступ из WindowProcedure

  3. В WinProc в сообщении WM_PAINT вам нужно будет нарисовать изображение. Код выглядит примерно так:

     HDC hdcMem = CreateCompatibleDC (hDC); // hDC - это структура DC, предоставляемая Win32API
    SelectObject (hdcMem, hImage);
    StretchBlt (
     hDC, // конечный DC
     left, // x вверху слева
     top, // y вверху слева
     width, // ширина назначения
     height, // высота назначения
     hdcMem, // вы только что создали это выше
     0,
     0, // x и y вверху слева
     w, // ширина исходного растрового изображения
     h, // высота исходного растрового изображения
    SRCCOPY); // растровая операция
    

Должно работать.

Второй способ сделать это - создать статический элемент управления с типом SS_BITMAP и установить его изображение как:

hImage = LoadImage(NULL, file, IMAGE_BITMAP, w, h, LR_LOADFROMFILE);
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImage);

, где hwnd - дескриптор вашего статического элемента управления.

8
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: