Page 3 of 7

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 10:56 am
by ZblCoder
Как можно реализовать прием сообщений только по отрисовке и закрытие окна, а нажатия кнопок клавиатуры и мыши игнорировались?

Хотя будет достаточно аналога из Delphi:

Code: Select all

Application.ProcessMessages;
Просто по команде получить весь список сообщений и его обработать в цикле. Пробовал сделать цикл и получение сообщений в нем, но не смог отследить, что сообщения закончились.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 2:20 pm
by Wildwest
глянь
http://wiki.kolibrios.org/wiki/C/C%2B%2B_programming

case 2:
// key pressed, read it and ignore
_msys_get_key();
break;

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 2:54 pm
by kiv
Думаю он спрашивал не про нажатие кнопок, а про то накапливает ли KOS запросы на отрисовку GUI и если да, то как заставить её отрисовать всё сразу.
Spoiler:Я тут не специалист и зарегистрировался только недавно, поэтому могу только предполагать. попробуй, прокатит ли такой трюк с аналогом Функции 12:

Code: Select all

kos_WindowRedrawStatus(2), kos_WindowRedrawStatus(1);
// удаляет все определённые (функцией 8) кнопки,
// их можно определить повторно.
// Для этого удобно использовать отдельную функцию,
// чтобы не писать список кнопок заново.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 3:45 pm
by ZblCoder
я пытался делать через http://wiki.kolibrios.org/wiki/SysFn11/ru, но тут бесконечный цикл получается, по теории правильно.

Code: Select all

void ProcessMessages()
{
	for(;;)
	{
		switch (kos_CheckForEvent())
		{
		case 0:
			return;
		case 1:
			draw_window();
			break;
		case 3:
			kos_ExitApp();
			break;
		}
	}
}
kos_CheckForEvent:

Code: Select all

Dword kos_CheckForEvent()
{
	__asm{
		push 11
		pop eax
		int 0x40
	}
}

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 4:10 pm
by kiv
1. определяешь кнопку в следствии чего начинается очередная перерисовка
2. срабатывает case 1
3. в котором начинается очередная перерисовка
Так?


добавь запись в лог перед break и всё станет ясно

Re: VS 2013 C++, pe2kos и Hello World

Posted: Fri Dec 26, 2014 4:11 pm
by CleverMouse
Если событие нажатия на клавишу было в очереди, то оно оттуда не уйдёт, пока не будет считано функцией 2. Если оно не нужно, можно его замаскировать функцией 40.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 9:47 pm
by ZblCoder
После коммита авто-сборщик выдает ошибку. Почему может не создаваться "func.obj"? (исходники)

Code: Select all

*  10% 1) [0.003s] build-rus/programs/games/LaserTank/trunk
tup error: Unable to create output file 'func.obj' because it is already owned by command 171664.
 - [171664] build-rus/programs/games/LaserTank/trunk/[[34mcl /c /O2 /Os /Oy /GF /GS- /GR- /EHs-c- /fp:fast /GL /QIfist /Gr /arch:IA32 /DAUTOBUILD /DLANG=RUS /Fofunc.obj smalllibc/func.cpp >&2[0m]
tup error [string "builtin"]:233: Failed to define rule.
stack traceback:
	[C]: in function 'definerule'
	[string "builtin"]:233: in function 'frule'
	[string "builtin"]:309: in function 'foreach_rule'
	[string "../../../use_msvc.lua"]:10: in function 'compile_msvc'
	[string "Tupfile.lua"]:12: in main chunk
 *** tup: 1 job failed.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 11:10 pm
by yogev_ezra
ZblCoder wrote:После коммита авто-сборщик выдает ошибку. Почему может не создаваться "func.obj"?
Я вижу минимум 2 проблемы (возможно, есть что-то ещё, но это то, что я заметил, просто глянув на файлы):
  1. Несоответствие названия файла ...smalllibc/mcsmemm.h подключаемому в ...smalllibc/func.h

    Code: Select all

    #include "MCSMEMM.H"
    Linux различает верхний и нижний регистр - для него MCSMEMM.H и mcsmemm.h - это 2 разных файла. Так что нужно либо файл переименовать на верхний регистр, либо в #include использовать нижний.
  2. В других примерах сборки MSVC на SVN я вижу в tupfile.lua в строчке "compile_msvc" включение только .cpp-файлов, тогда как ты включил и .h

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 11:25 pm
by ZblCoder
1. Поменял в файле на нижний регистр, но ошибка та же (проверил в се файлы, больше мест нет).
2. Если без *.h файлов, то ошибок вообще тонна http://builds.kolibrios.org/logs/svn5280-err.txt

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 11:41 pm
by yogev_ezra
ZblCoder wrote:1. Поменял в файле на нижний регистр, но ошибка та же (проверил в се файлы, больше мест нет).
2. Если без *.h файлов, то ошибок вообще тонна http://builds.kolibrios.org/logs/svn5280-err.txt
В include-ах относительный путь должен быть правильным, если это не системная библиотека вроде #include <stdarg.h>.
Например, в файле ...games/LaserTank/trunk/image.cpp, вместо

Code: Select all

#include "kosSyst.h"
должно быть

Code: Select all

#include "smalllibc/kosSyst.h"

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 11:56 pm
by ZblCoder
ууууу, стал еще более жестокий ужас, но все *.obj собрал.
http://builds.kolibrios.org/logs/svn5281-err.txt

Re: VS 2013 C++, pe2kos и Hello World

Posted: Sun Dec 28, 2014 11:59 pm
by ZblCoder
Также для отчета выкладываю видео последней собранной версии.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Mon Dec 29, 2014 12:16 am
by Mario_r4
.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Mon Dec 29, 2014 12:20 am
by ZblCoder
Mario_r4 wrote:ZblCoder
Чем видео захватывал?
Open Broadcaster Software, через нее еще стримлю.

Re: VS 2013 C++, pe2kos и Hello World

Posted: Mon Dec 29, 2014 12:41 am
by Mario_r4
.