Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Jun 05, 2020 12:43 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 1139 posts ]  Go to page Previous 133 34 35 36 3776 Next
Author Message
 Post subject:
PostPosted: Fri Jun 29, 2012 6:24 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Хочу нарисовать окно 200x25 пикселей с зелёной рамкой, а внутри полностью красное.
Code:
      xor eax, eax
      mov ebx, 200
      mov ecx, 25
      mov edx, 00FF0000h
      mov edi, 0000FF00h
      mov esi, 01FF0000h
      int 64

Но нижняя область не закрашивается.
Image
Как сделать, чтобы окно полностью закрашивалось?


Top
   
PostPosted: Fri Jun 29, 2012 10:25 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
Просто определяй окно без рисования чего либо.
А поверх рисуй уже рамку из линий и заливай фон красным.

У меня вопрос: как бороться с переопределениями?
Code:
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(112): см. объявление "strlen"
1>F:\tinybasic\smalllibc\kosSyst.h(121): error C2556: char *strrchr(const char *,int): перегруженная функция отличается от "const char *strrchr(const char *,int)" только возвращаемым типом

1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(193): см. объявление "strrchr"
1>F:\tinybasic\smalllibc\kosSyst.h(121): error C2373: strrchr: переопределение; различные модификаторы типа

1>f:\tinybasic\console.c(17): error C2365: printf: переопределение; предыдущим определением было "функция"
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(285): см. объявление "printf"

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Fri Jun 29, 2012 10:38 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Не использовать стандартные библиотеки. В gcc это лечится ключами -nostdinc -nostdlib. Еще можно переименовать функции в console.c, но это надолго.


Top
   
PostPosted: Fri Jun 29, 2012 10:50 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
А чем плохи стандартные strlen и strrchar?

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Fri Jun 29, 2012 11:57 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Тем, что используют winapi, если ты про MSVC, или linux libc, если про gcc|clang.


Top
   
PostPosted: Sat Jun 30, 2012 5:41 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Не обязательно libc, в gcc они ещё и встроенные бывают, вот те - самые годные.
Хотя, в MSVC тоже встроенные некоторые есть.


Top
   
PostPosted: Tue Jul 03, 2012 3:40 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Правильно ли я понимаю, что в Kolibri окно приложения может быть и максимизировано, и минимизировано одновременно?


Top
   
PostPosted: Fri Jul 06, 2012 4:40 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
А что тут такого? В винде же когда сворачиваешь развёрнутое на весь экран окно, а потом его восстанавливаешь, то оно снова на весь экран.


Top
   
PostPosted: Wed Jul 11, 2012 11:17 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
Code:
Параметры:
  * eax = 14 - номер функции
Возвращаемое значение:
  * eax = [xsize]*65536 + [ysize], где
  * xsize = x-координата правого нижнего угла экрана =
            размер по горизонтали - 1
  * ysize = y-координата правого нижнего угла экрана =
            размер по вертикали - 1

Code:
inline fastcall int GetScreenWidth()
{
   $mov eax, 14
   $int 0x40
   $shr eax, 16
}

inline fastcall int GetScreenHeight()
{
   $mov eax, 14
   $int 0x40
}

Каждый раз возвращается еах. Почему GetScreenWidth() возвращает 799 а GetScreenHeight() не 599, а огромное число типа 52368368?

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Wed Jul 11, 2012 11:42 pm 
Offline

Joined: Tue Oct 05, 2010 6:05 pm
Posts: 216
Потому что, как и написано в справке, возвращается eax = [xsize]*65536 + [ysize], в первой функции сдвигом оставляется только [xsize], во второй функции обработки нет и возвращается полное число.
Чтобы получить [ysize] надо взять от EAX только AX, или сделать $and eax,0x0000FFFF или ещё как-нибудь оставить только младшие байты.


Top
   
PostPosted: Thu Jul 12, 2012 12:11 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
Фак мой моск... то есть спасибо. Я сейчас учебник по асму почитываю, до этого ещё не дошёл.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Thu Jul 12, 2012 9:43 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Странно, обычно логические операции с битовыми масками рассказываются в начале книжек.


Top
   
PostPosted: Fri Jul 13, 2012 2:05 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_Си :)

_________________
Звиздеть не мешки ворочать


Top
   
 Post subject:
PostPosted: Fri Jul 13, 2012 7:21 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1163
Помогите с массивами, а точнее как происходит индексация и как обращатся к элементам?

_________________
я лишь учусь


Top
   
PostPosted: Fri Jul 13, 2012 8:04 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Хотелось уточнить, что всё-таки делает функция 18.10?
То, что написано в Wiki:
Quote:
Сворачивает собственное окно.

или же то, что сказал art_zh:
Quote:
18.10 предполагает, что у активного приложения и окно - активное.
Его и сворачивают.


При нажатии на кнопку минимизации вызывается она же?

Запускаем приложение, использующее OpenDialog(TinyPad, HeEd, ...).
Запускаем из этого приложения OpenDialog.
Пытаемся свернуть окно самой программы нажатием на кнопку минимизации, но после нажатия отпускаем кнопку мыши не сразу, а немного ждём.
В этот момент может свернуться окно OpenDialog, а не окно самой программы.

И с кнопкой закрытия такая же ситуация.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1139 posts ]  Go to page Previous 133 34 35 36 3776 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited