Преобразование приложения Win32 в объект

Я новичок в программировании WinAPI и написал приложение Win32 для захвата экрана. Когда я запускаю программу, курсор сразу же меняется на перекрестие, и я могу щелкнуть и перетащить, чтобы захватить часть экрана и сохранить ее в файл.

Однако теперь я хотел бы изменить свою программу, чтобы она не содержала основного метода (WinMain) и, по сути, превратила ее в класс объекта, а не в класс приложения, чтобы я мог вызывать функции из других программ. Мне не удалось найти хороший ресурс о том, как это сделать, поскольку я считаю, что WinMain выполняет специальные функции под капотом, поэтому я не могу просто изменить имя метода.

Может ли кто-нибудь предложить хорошие ресурсы или учебные пособия, которые решают эту проблему?


person user1177250    schedule 21.02.2013    source источник


Ответы (1)


Есть много способов сделать это, но сначала вам нужно сделать шаг назад:

Как вы ожидаете, что будет вызываться ваша "программа" (продолжим так называть)? С какими параметрами и каким типом возврата?

Тогда какой API вы хотите открыть? Класс С++ в заголовке? класс С++ из статической библиотеки? Функция C, экспортированная из DLL? COM-объект?

Существует множество примеров того, как выглядит библиотека, DLL или COM-библиотека (просто попробуйте поискать в Google эти ключевые слова).

Простой способ, скорее всего, состоит в том, чтобы настроить библиотеку или проект DLL (в большинстве IDE есть мастер, который предоставляет пустые скелеты), а затем вставить в него соответствующий код, который вам нужно оставить там, позволив ему вызываться из открытой функции или класса. метод.

Более точный ответ можно будет дать только после того, как вы определитесь, какую «форму» должен иметь ваш «предмет».

person Emilio Garavaglia    schedule 21.02.2013
comment
Спасибо за ваш ответ! Ну, в конечном итоге я хочу, чтобы моя программа возвращала строку. Единственный параметр, который ему нужно будет принять, — это идентификатор или HWND окна, которое нужно свернуть. - person user1177250; 21.02.2013
comment
Какими средствами вы собираетесь вызывать функцию одной программы из другой программы? Это решение определит, каким путем вы пойдете дальше. - person Raymond Chen; 21.02.2013
comment
Я пытаюсь написать плагин для захвата экрана для браузера, и для этого требуется собственный код, чтобы иметь возможность захватывать любую часть окна/экрана, а не только окно браузера. Поскольку я был новичком в программировании для Windows, я сначала реализовал эту функциональность как отдельное приложение, чтобы ознакомиться с синтаксисом и т. д. Я использовал это, чтобы начать работу dll. Я хотел бы иметь свой снимок экрана (с его окнами и WndProcs) в dll и иметь возможность вызывать его из другого файла С++. - person user1177250; 22.02.2013