Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 14
1

Воссоздание фунционала программы Screen loupe

27.12.2014, 08:15. Показов 1662. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые гуру программирования, наткнулся на программу Screen loupe 2000 5.7, загорелся желанием воссоздать ее, но при создании столкнулся с проблемой, не могу сделать ListBox в котором отображается все что под курсором, знаю как его реализовать на WinApi, но в WinForm HWND и HDC не работают, соответственно и функции для их получения мне выдают ошибку. Прошу подсказать альтернативные функции GetDC и FindWindow для WinForm(С++/CLI).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2014, 08:15
Ответы с готовыми решениями:

Splash-Screen для своей программы
Вы не могли бы выложить свой пример, или пример по которому вы это делали. У меня нет ничего...

Screen.width и screen.height в Firemonkey desktop aplication
Проблема в том что я не могу написать код screen.width и screen.height в Firemonkey desktop...

Ограничение фунционала базы после определенной даты
Доброго времени суток! Вопрос в следующем: Есть база данных с формами на локальных компах и...

Windows 8.1: При запуске любой программы на fpc, загружается user screen
При запуске любой программы на fpc , загружается user screen и всё

8
Заблокирован
27.12.2014, 17:20 2
Для графики смотрим
System.Drawing::Graphics
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
27.12.2014, 22:39 3
Цитата Сообщение от wolf13666 Посмотреть сообщение
но в WinForm HWND и HDC не работают,
Цитата Сообщение от wolf13666 Посмотреть сообщение
подсказать альтернативные функции GetDC и FindWindow
Всё там работает. Вероятно не добавлены требуемые либы. Для FindWindow это User32.lib .
В файлах где требуется эта функция
C++
1
2
#include <windows.h>
#pragma comment(lib,"User32.lib")
или для всего проекта, в настройках проекта -> настройки линкера
-> дополнительные зависимости - вписать либу
0
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 14
28.12.2014, 20:51  [ТС] 4
Добавил либу (lib,"User32.lib"), но опять же выдает:
error C2065: HWND: необъявленный идентификатор
Извиняюсь за приступ синдрома чайника, и за ошибку в шапке темы не ListBox, а pictureBox
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
28.12.2014, 21:00 5
код нужно смотреть. иначе затруднительно что-то сказать.

Добавлено через 6 минут
и вот еще просмотрите настройки Определить цвет пиксела в заданных координатах на экране
0
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 14
29.12.2014, 20:17  [ТС] 6
А проблем с VS не может быть??? просто когда я подключаю #include <Windef.h>, он мне кучу ошибок выдает:
Кликните здесь для просмотра всего текста
SCREEN.cpp
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ContextRecord"
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12983): error C2065: PCONTEXT: необъявленный идентификатор
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "ContextRecord"
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2182: RtlCaptureContext: недопустимое использование типа "void"
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2491: RtlCaptureContext: определение dllimport данные не разрешено
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2059: синтаксическая ошибка: )
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13372): error C2143: синтаксическая ошибка: отсутствие ";" перед "__stdcall"
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13372): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13376): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(14982): error C3861: __readfsdword: идентификатор не найден
1>c:\users\fenrir\documents\visual studio 2010\projects\screen\screen\Form1.h(108): error C3861: FindWindow: идентификатор не найден
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.68
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
17.01.2015, 12:55 7
Цитата Сообщение от wolf13666 Посмотреть сообщение
error C3861: FindWindow: идентификатор не найден
Так может стоит Windows.h подключить, а не Windef.h?
0
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 14
27.01.2015, 17:54  [ТС] 8
почти отчаился что не смогу, но нашел вот эту статью: https://www.cyberforum.ru/visu... 93256.html
C++
1
2
3
4
5
6
7
8
9
10
11
HDC scrdc, memdc;
HBITMAP membit;//HBITMAP - ,если можно так выразиться, native указатель на Bitmap
scrdc = GetDC(0);
memdc = CreateCompatibleDC(scrdc);
membit = CreateCompatibleBitmap(scrdc, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
SelectObject(memdc, membit);
BitBlt(memdc, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), scrdc, 0, 0, SRCCOPY);//Вот сдесь процес записи скрина в HBITMAP закончен
IntPtr ukaz = static_cast<IntPtr>(membit);//Здесь мы преобразуем native типа(HBITMAP) в указатель menaged тип (IntPtr) которым и оперируют функции MSDN
Bitmap^ bmp=Bitmap::FromHbitmap(ukaz);//Создаем Bitmap
bmp->Save("D:\\bmp.bmp");//Записываем его в файл
this->pictureBox1->Image = bmp;
но проблема в том что я получаю весь экран, знаю что при помощи Rect надо задать координаты которые будет отображать программа, но ума не приложу где в коде это сделать(((

P.S. знаю что я чайник, но все мы когда то с этого начинали
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
27.01.2015, 21:07 9
Цитата Сообщение от wolf13666 Посмотреть сообщение
надо задать координаты которые будет отображать программа
Вы указываете размеры на весь рабочий стол
C++
1
CreateCompatibleBitmap(scrdc, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN))
В функциях CreateCompatibleBitmap и BitBlt можно указывать свои размеры.
Как-то так
C++
1
2
3
4
// квадрат 50х50 пикселей
membit = CreateCompatibleBitmap(scrdc, 50, 50);
// снимаем квадрат 50х50 с координаты (210, 140)
BitBlt(memdc, 210, 140, 50, 50, scrdc, 0, 0, SRCCOPY);
Я не тестировал, не помню, нужно ли в методе BitBlt в двух предпоследних параметрах дублировать координаты или это сдвиг.
P.S. Подружитесь с MSDN
BitBlt function
CreateCompatibleBitmap function
0
27.01.2015, 21:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2015, 21:07
Помогаю со студенческими работами здесь

Воссоздание дерева процессов
Помогите пожалуйста разобраться. Другу задали, он сам физик, в Linux`е не очень разбирается. ...

Воссоздание потенциальных ошибок со стороны сервера
Как можно воссоздавать ошибки загрузки(разрыва , отключения сервера в момент загрузки), не всегда...

Как воссоздание дерева папки из его описания в текстовом файле
Воссоздание дерева папки из его описания в текстовом файле.В текстовомфайле дано описание структуры...

Blue Screen
Доброго времени суток, уважаемые Все! На компе стояла XP.. начал появляться синий экран на доли...


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

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