IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Надоумте нерадивого, а то проблемы визуализации замучали уже! Вопрос по Visual C++ (https://www.imho.ws/showthread.php?t=92508)

vitalikus123 13.09.2005 07:26

Надоумте нерадивого, а то проблемы визуализации замучали уже! Вопрос по Visual C++
 
Суть в следующем:
есть у меня проект состоящий из двух форм и одной DOS-кой программулины, которая запускается по таймеру. Так вот, при запуске этой малютки у меня происходило мерцание окон и смена стиля курсора.
Вопрос!
Как мне одну из форм оставлять постоянно активной, и сохранять стиль курсора. (Поясню - ради чего это надо. Просто при перемещении бегунка слитера хочется добиться непрерывного эффекта, а не рывкообразного из-за смены активных окон).
И еще вопрос!
Как лучше хранить данные, если к ним необходим одновремменный доступ из нескольких приложений, одно из них досовское?



P.S. Заранеее большое спасибо.

alexey_ma 13.09.2005 10:40

Попробуй DOS- программу запускать в отдельном потоке. А данные можешь хранить в какой-либо базе.

PSyton 13.09.2005 18:27

А зачем досовская программа-то?
Что она такого делает такого, чего нельзя возложить на отделный поток?
2 alexey_ma
посмотрю я на тебя как ты будешь как какой-либо базе из досовской 16-битной софтины обращаться, да еще так чтобы это не помешала одновременно делать это же из виндового потока.

alexey_ma 13.09.2005 19:04

Цитата:

PSyton:
посмотрю я на тебя как ты будешь как какой-либо базе из досовской 16-битной софтины обращаться, да еще так чтобы это не помешала одновременно делать это же из виндового потока.
Совсем не уверен что речь идет именно о 16-битном приложении. По всей видимости если есть доступ к коду приложения это скорее всего обычное консольное приложение, а там никаких проблем нет.
Любое разделение данных между процессами/потоками потребует синхронизации. Так что мешать потоки будут обязательно, не важно консольное это приложение или вин. приложение.

/7y3uK 14.09.2005 00:02

Цитата:

alexey_ma:
Любое разделение данных между процессами/потоками потребует синхронизации. Так что мешать потоки будут обязательно
ну если грамотно делать синхронизацию, т.е. грамотно построить архитектуру, то вполне мирно они будут ужваться :) Ессесно синхронизировать нужно только те методы, которые будут доступаться и менять какие-то единые для потоков данные, которых, в свою очередь, желательно делать как можно меньше, т.к. синхронизация - это довольно дорогая штука :) А вот если речь идет о разных процессах, тут тоже есть момент, каждый процесс идет в своем адресном пространстве и есть кое какие требования к безопасности... вот :) Кстати на 64 битной платформе, кто-нить интересовался этими вопросами, а то я давно системным кодингом не занимался...
А стей он топ делается через Вин АПИ, по-моему...
А нельзя запихать все в одно окно?

vitalikus123 14.09.2005 06:23

Dos-приложение необходимо потому, что через него идет управление платой, которая управляет двигателем, а к ней дров нету.А одновременный доступ Win и DOS-приложений к неким данным необходим для того, чтобы можно было изменять параметры работы двигателя, и хотя DOS-приложение запускается по таймеру, но это все на столько шустро, а приостановить работу нельзя, то возникает конфликт совместного доступа к файлу данных. Поэтому я и спрашивал, как можно хранить эти данные?

/7y3uK 14.09.2005 10:46

а что, нельзя дергать эту дос программу из виндовой просто с набором параметров? или исходников нет?... но в любом случае это не выход... лучше написать драйвер

alexey_ma 14.09.2005 10:57

Цитата:

/7y3uK:
А стей он топ делается через Вин АПИ, по-моему...
OnTop window не избавит совсем от мерцания окон потому - что консоль при старте все равно перехватит фокус на какое-то время. Если бы это было обычное окно то-можно было-бы показать его без получения им фокуса(создав окно со стилем WS_EX_TOOLWINDOW и показав его функцией SetWindowPos указав в параметах SWP_NOACTIVATE | SWP_SHOWWINDOW), а консоль ну незнаю...
Цитата:

/7y3uK:
ну если грамотно делать синхронизацию, т.е. грамотно построить архитектуру, то вполне мирно они будут ужваться :) Ессесно синхронизировать нужно только те методы, которые будут доступаться и менять какие-то единые для потоков данные, которых, в свою очередь, желательно делать как можно меньше, т.к. синхронизация - это довольно дорогая штука
Не, мы неграмотные - мы тупые. Синхронизация подразумевает ожидания одним потоком другого. Вы конечно ,уважаемый, можете грамотно минимизировать это взаимное влияние потоков, но совсем избавиться от него не получится, иначе нет вообще смысла в синхронизации, если можно "грамотно" без нее обойтись


Часовой пояс GMT +4, время: 05:14.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.