СообЧа > База Знаний > Программирование > C, С++

Вопрос

Прочитал в умной книжке, что минимальная программа для Windows — это Winmain()+функция окна. А может ли быть программа для Windows совсем без окна? Мне нужно, к примеру просто выполнить какую-то операцию, для которой окна совсем не нужно (если точнее — открыть файл, перекодировать его содержимое из Windows в Dos кодировку и снова записать). Если использовать Main() — лезет консоль.

Ответ

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

Если же необходимый интерфейс уже имеется, например, создан в VB, 1С и т.п., лучше создавать функцию в dll или сделать ActiveX.

Андрей Шуклин

Делаешь проект SDI-aplications, применяешь стандартные настройки APP-Wizard. А в методе OnDraw() класса CххххView просто скрываешь окно при помощи, вроде, HideWindow() (тут могу и ошибиться), потом можешь восстановить окно (ShowWindow()), а можешь просто закончить программу.

Есть еще один способ, как я думаю. Только что попробовал. Делаешь проект DialogBased, все настройки — по умолчанию. Потом открываешь редактор ресурсов и изменяешь настройки диалогового окна так: Все флажки сбрасываешь, Stile = Child, Border = None. А теперь в методе InitInstance() класса CxxxApp после TODO: пишешь свой код… ;-)))) У меня так получилось!

Vadik

Вопрос был — БЕЗ окна. БЕЗ окна можно — пиши сервис (как — вопрос отдельный). Мэйн без окна НЕЛЬЗЯ (привет от Windows — в переводе — окна).

Сергей

Можно без окна и БЕЗ сервиса. Для VC++ создаешь проект Win32 Application, добавляешь свой код внутрь WinMain() и он прекрасно работает без всяких окон. Вот тебе и минимальная программа.
Mbr>Юрий

При переопределении функции InitInstanse используется вызов функции ShowWindow, которая принимает один параметр — режим отображения окна. Если этот параметр 0 или константа SW_HIDE, то окно не отображается. Правда потом его тоже не отобразишь. Теперь Ваша программа будет видна только в процессах.

sergyenko



Copyright © 2000-2004 Сообщество Чайников
Контактная информация