7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 42
1

FASM + WinAPI, рисование фона окна

19.06.2013, 18:19. Показов 3331. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно загрузить картинку из ресурса, и использовать её в качестве фона для окна. Вроде всё что требуется сделал, но не работает. Вместо картинки окно заливается белым цветом. Помогите найти ошибку.

Ассемблер FASM.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  ; Регистрация класса окна wc------------------\
  invoke  GetModuleHandle, 0
  mov     [wc.hInstance], eax
  invoke  LoadIcon, eax, 17
  mov     [wc.hIcon], eax
  invoke  LoadCursor, 0, IDC_ARROW
  mov     [wc.hCursor], eax
  mov     [wc.hbrBackground], NULL  ;для обработки сообщения WM_ERASEBKGND, необходимо установливать в NULL
  invoke  RegisterClass, wc
;-----------------------------------------------/
 
  ; Создание базового окна----------------------\
  invoke  CreateWindowEx, 0, _class, _title, WS_VISIBLE+WS_OVERLAPPEDWINDOW, 70, 70, 860, 342, NULL, NULL, [wc.hInstance], NULL
  mov     ebx, eax                      ; В регистре - ebx сохраняется дескриптор базового окна для дальнейшего его использования
  mov     [hBaseWindow], eax            ; В переменной - hBaseWindow сохраняется дескриптор базового окна для дальнейшего его использования
;-----------------------------------------------/
 
  ; Кольцо сообщений----------------------------\
.wmcreate:
  invoke  LoadBitmap, [wc.hInstance], IDB_BITMAP_MSW                          ;загрузка картинки из ресурса
  mov     [hBmp], eax
  invoke  CreatePatternBrush, [hBmp]                                          ;создаем шаблон кисти из картинки
  mov     [hBrush], eax
  invoke  DeleteObject, [hBmp]                                                ;удаляем дескриптор картинки
  xor     eax, eax                                                            ;возвращаем 0
  jmp     .finish
 
.wmerasebkgnd:
  invoke  GetClientRect, [hwnd], Rct                                          ;узнаём размер клиентской области окна
  invoke  SelectObject, [wparam], [hBrush]                                    ;выберем в контекст кисть
  invoke  PatBlt, [wparam], 0, 0, [Rct.right], [Rct.bottom], PATCOPY          ;заполним прямоугольную область
  mov     eax, 1                                                              ;возвращаем TRUE
  jmp     .finish
;-----------------------------------------------/
 
  ; Секция ресурсов-----------------------------\
section '.rsrc' resource data readable;************************************************************
 
  ; Директория ресурсов
  directory RT_ICON,       icons,\
        RT_GROUP_ICON, group_icons
 
  ; Субдиректория ресурсов
  resource icons,         1,  LANG_NEUTRAL,  icon_data
  resource group_icons,  17,  LANG_NEUTRAL,  main_icon
  icon main_icon,icon_data,'TCP.ico'
 
  resource bitmaps, IDB_BITMAP_MSW, LANG_ENGLISH+SUBLANG_DEFAULT, bitmap1
  bitmap bitmap1,'TCP/StyleB2D.bmp'
;-----------------------------------------------/
Делал по образу и подобию:
ErBd.zip
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2013, 18:19
Ответы с готовыми решениями:

WinApi и fasm
Есть ли толковая документации по использованию winapi в fasm'e ?

Fasm без winapi
Использую FASM, есть ли какая документация и вообще такая возможность писать под win32 без winapi?...

Получить цвет фона экрана консольного окна (можно и методами WinAPI)
Привет. Как получить цвет (фона экрана) консольного окна? Можно и методами WinAPI. С меня...

Создание окна на fasm
Всем привет. Только что начал изучать ассемблер fasm. Возник первый вопрос: как создать окно?...

7
26 / 26 / 2
Регистрация: 18.08.2010
Сообщений: 186
19.06.2013, 18:40 2
Посмотри в отладчике. Или давай весь код.
0
7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 42
19.06.2013, 18:48  [ТС] 3
Весь код:
TCP3.zip
0
26 / 26 / 2
Регистрация: 18.08.2010
Сообщений: 186
19.06.2013, 20:04 4
LoadBitmap возвращает 0, GetLastError - ERROR_RESOURCE_TYPE_NOT_FOUND. Что не удивительно, т.к. в ресурсах готового файла только иконка. Ошибка где-то в создании секции ресурсов.
1
7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 42
19.06.2013, 20:27  [ТС] 5
Спасибо за помощь, так и есть, из внешнего файла загрузка идёт без проблем. С секцией ресурсов думаю разберусь.
Вложение 284436
С форумом всё в порядке? У меня все надписи на английском языке и ошибки лезут?
0
Taatshi
19.06.2013, 23:38
  #6

Не по теме:

Цитата Сообщение от Undead2501 Посмотреть сообщение
С форумом всё в порядке? У меня все надписи на английском языке и ошибки лезут?
в самом низу страницы есть переключение языков - поставьте русcкий

1
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
20.06.2013, 06:02 7
Undead2501,
посмотри цикл Сам себе Iczelion урок 25 и 25а
1
4164 / 1816 / 216
Регистрация: 06.10.2010
Сообщений: 4,069
20.06.2013, 08:03 8
Это делается одной строчкой
https://www.cyberforum.ru/atta... 1329219160

Добавлено через 6 минут
И на Delphi
https://www.cyberforum.ru/atta... 1326479655
1
20.06.2013, 08:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2013, 08:03
Помогаю со студенческими работами здесь

WinApi рисование линии
Доброго времени суток . Начинаю изучать winapi . Хочу узнать как нарисовать линию по диагонали...

Рисование простейших графиков на WinAPI
Нашел программу для рисования синусоидальной волны. Как ее переделать, чтоб рисовала график функции...

Рисование графиков функций в WinApi
Доброе время суток. Я начинающий программист хочу попросить помощи у вас собратьев. Написал код ,а...

Рисование отрезков с использованием WinApi
Вот программка рисующая отрезки с разными стилями, цветами и т.д. но при манипуляциях с окном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru