Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для prosto_lynx
49 / 25 / 2
Регистрация: 09.06.2008
Сообщений: 227

Мультимонитор (несколько мониторов из одного широкоформатного)

21.11.2012, 00:34. Показов 2761. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам

Не по теме:

Вообщем на работе столкнулся с такой проблемой, что удобнее 2 обычных монитора, чем один широкоформатный... но правда жизни такова, что второй монитор мне никто выделять не собирается, поэтому сделал прогу (процесс), которая из широкоформатного делает несколько "узкоформатных" мониторов.



Вот такая простенькая прога и получилась, основная суть которой - при развертывании окна на весь экран оно разворачивается только на его определенную часть (тот виртуальный монитор, который ближе всего к окну).
Запуск, соответственно с ключами: через пробел соотношение "ширин")) мониторов (не более 5) т.е. если хочу разделить монитор на 3 в соотношении 3х1х1, то соответственно ключ "3 1 1"
Запуск без ключей делит монитор на 2 в соотношении 5х3.

Гуру-программисты (и прочий добрый люд), расскажите мне про мои ошибки (что некрасиво? что не грамотно? где можно оптимизировать? где ускорить? и т.д.)

C++
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
 
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    int num = 2;                     // Количество "мониторов"
    int ratio[5] = {5, 3, 0, 0, 0};    // Соотношение горизонтальной развертки "мониторов"
 
    if (ParamCount() > 0)    {
        num = ParamCount();
        for (int i = 0; i < num; i++) {
            ratio[i] = StrToInt(ParamStr(i+1));
        }
    }
 
    int sumratio = 0;
    for (int i=0; i<num; i++)
        sumratio += ratio[i];
 
    int verge[6];                // Границы (в пикселях) "мониторов" (разделители)
    int Height = Int(0.95 * Screen->Height); // Вертикальное разрешение (0.9 высоты)
    verge[0] = 0;
    verge[num] = Screen->Width;     // разрешение экрана по горизонтали
    for (int i=1; i<=num; i++)
        verge[i] = verge[i-1] + ratio[i-1] * verge[num] / sumratio;
    HWND h;            // Дескриптор окна
    WINDOWPLACEMENT wp;
    int WindowX;    // Х-координата центра активного окна
    int i;
 
    while (true)
    {
        h = GetForegroundWindow(); //получаем дескриптор активного окна
        wp.length = sizeof(WINDOWPLACEMENT);
        GetWindowPlacement(h, &wp);
        if (wp.showCmd == 0x03)            //  Если активное окно развернуто
        {
                wp.showCmd = 0x01;        // сворачиваем окно
                WindowX = (wp.rcNormalPosition.right + wp.rcNormalPosition.left)/2;
                for (i=1; i<=num; i++)    //
                {
                        if (WindowX < verge[i])
                        {
                                wp.rcNormalPosition.left = verge[i-1];
                                wp.rcNormalPosition.right = verge[i];
                                wp.rcNormalPosition.top = 0;
                                wp.rcNormalPosition.bottom = Height;
                                SetWindowPlacement(h,&wp);
                                break;
                        }
                }
        }
        Sleep(100);
    }
    return 0;
}
//---------------------------------------------------------------------------
Вложения
Тип файла: rar MultiMonitor.rar (351.7 Кб, 13 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2012, 00:34
Ответы с готовыми решениями:

Вывод на несколько мониторов
Добрый день. Нужно из программы выводить информацию на несколько мониторов. Причем на каждый монитор свою информацию. Организовать что то в...

Исключить несколько мониторов
Примерно где то из 150 мониторов я отсеил 4 моника они по параметрам вроде все нормальные вроде и засветов нету и матрица в порядке и цена...

Несколько мониторов - управление
Всем привет! Помогите пожалуйста! Нужна программа или что-то ещё. Ситуация следующая: Комп с двумя видеокартами asus + одна...

1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
21.11.2012, 01:38
это, конечно, не мое дело, но смысла я так и не понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2012, 01:38
Помогаю со студенческими работами здесь

Как настроить несколько мониторов?!
При подключении дополнительного монитора к ПК, Windows, он автоматически определяет монитор и отображает рабочий стол компьютера. Можно...

Как настроить несколько мониторов?
задался вопросом подключения второго монитора к рабочему буку lenova y460 os backbox 3.05 (xubuntu 12.04) xfce 4.10, LCD-монитор Samsung...

Растянуть форму на несколько мониторов
Доброго времени суток! Задача такая. нужно определить число подключенных мониторов и при выводе формы растягивать ее на все мониторы или...

Как подключить несколько мониторов к одному порту
У меня видеокарта Powercolor PCI-Ex Radeon HD7870 Eyefinity 6 Edition На шесть мониторов но для меня этого мало хочу видео-стенку...

Распределение изображения на несколько мониторов по локальной сети
Вопрос такой: пишем курсач по плюсам, сказали выбрать тему придумал вот что: Есть компьютер сервер, есть компьютеры клиенты. С сервера на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru