Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15

кто нибудь знает?(про винмэйн)

22.07.2011, 19:01. Показов 1484. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
кто нибудь знает как, например в мфс инкапсулированы такие функции как winmain и windowproc в тело класса, что выполнение начинается успешно? Я это к чему. тут пишу к качестве тренировке виндузячую игрушку реверси и так сказать решил все по науке. логика отдельно интерфейс отдельно. но увы не смог избавиться от глобальных winmain, windowproc.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2011, 19:01
Ответы с готовыми решениями:

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

Кто-нибудь знает, что это за ошибка?
Кто-нибудь знает, что это за ошибка, когда она возникает и что делать? command line error MIDL1004: cannot execute C preprocessor...

Кто нибудь знает как написать игру на С ?)
Зраствуйте Можно ли написать крестики нолики на С ? И как это сделать ? Дайте идею или код. Спасибо за внимание.

9
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.07.2011, 19:09
AzaKendler, сделай их статическими
0
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
22.07.2011, 19:12  [ТС]
Maxwe11, вот блин. как все просто то. а как тогда будет выглядеть точка входа в прогу?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.07.2011, 19:27
хм...вот щас посомтрел свои древнии исходники, WinMain инкапсулировать не получится, ну вообщем так же как и main, а процедуру окна можно сделать либо статической, либо передавать в класс указатель на эту процедуру
0
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
22.07.2011, 19:42  [ТС]
хреново(. а как в библиОтеках это реализовано? стартуют классы Capplication Cwnd по моему и где то там стартует вин мэйн. Как они там это дело спрятали интересно...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.07.2011, 20:17
автоматическая генерация кода
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
22.07.2011, 20:48
Цитата Сообщение от AzaKendler Посмотреть сообщение
кто нибудь знает как, например в мфс инкапсулированы такие функции как winmain и windowproc в тело класса, что выполнение начинается успешно? Я это к чему. тут пишу к качестве тренировке виндузячую игрушку реверси и так сказать решил все по науке. логика отдельно интерфейс отдельно. но увы не смог избавиться от глобальных winmain, windowproc.
Посмотри на эту тему книжку Юрия Щупака. Он там непосредственно в самом начале пишет Hello World тремя разными способами, в том числе и с помощью небольшой классовой обертки над функциями WinAPI
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.07.2011, 21:02
в Программирование графики для Windows (Фень Юань) помню было тоже подобное в создании класса окна
хотя я не вижу проблемы в WinMain создавать объект окна (приложения) и через конструктор передавать параметры точки входа
1
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.07.2011, 21:39
Цитата Сообщение от Maxwe11 Посмотреть сообщение
WinMain инкапсулировать не получится
Правильно говоришь, WinMain это ведь точка входа вызывается функцией WinMainCRTStartup runtime-билиотеки C, WinMain должнa быть глобальной как и обработчик сообщений WndProc, если к классу привязывать обработчик в виде статической функции то один фиг указатель будет глобальным для доступа к статической функции.
Вот наляпал прикол маленький.
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
#include <windows.h>
 
 
extern "C"  void  WinMainCRTStartup(void) {
 
   WinExec("calc.exe", SW_SHOWDEFAULT);
   HWND  wnd = GetForegroundWindow();
 
   tagRECT  rect;
 
   GetWindowRect(wnd, &rect);
   SetWindowPos(wnd, HWND_TOPMOST,  
                        GetSystemMetrics(SM_CXSCREEN) / 2 - (rect.right - rect.left) / 2,
                        GetSystemMetrics(SM_CYSCREEN) / 2 - (rect.bottom - rect.top) / 2,
                       rect.right - rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW);
   GetClientRect(wnd, &rect);
 
   HRGN   rgn  =  CreateEllipticRgn(rect.left, rect.top, rect.right, rect.bottom);
   SetWindowRgn(wnd, rgn, TRUE);
   DeleteObject(rgn);
 
   HDC   dc = GetDC(wnd);
    
   FillRect(dc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH));
 
   const TCHAR* str = "Hello Calculator !!!";
   tagSIZE  size;
   GetTextExtentPoint(dc, str, lstrlen(str), &size);
   SetBkMode(dc, TRANSPARENT);
   SetTextColor(dc, RGB(255, 255, 0));
   TextOut(dc, rect.right / 2 - size.cx / 2, rect.bottom  / 2 - size.cy * 2, str, lstrlen(str));
 
   ReleaseDC(wnd, dc);
 
   ExitProcess(0u);
}
2
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.07.2011, 21:50
xAtom, помнится в WinMainCRTStartup производится инициализация переменных окружения и всякой всячины, возможно даже стандартной библиотеки, так что пример интересный но возможно имеет определенные подводные камни вроде неинциализированных глобальных объектов библиотек c и c++
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2011, 21:50
Помогаю со студенческими работами здесь

нужно сделать трассировку. кто-нибудь знает как?
неужели никто не знает как делать трассировку? завтра преподу сдавать все, а я уже который день не могу сделать трассировку. ...

Кто нибудь знает сайт на подобии этого, только на русском?
Кто-нибудь знает сайт на подобии этого, только на русском?

кто-нибудь знает где скачать русификатор для dev-c++?
где можно скачать русификатор для dev-c++?

Преобразование времени (double. Может всё-таки кто-нибудь знает)
Как double сделать так, чтобы он работал по такому принципу. К примеру идет число 0,01...0,59 и после 0,59 переходило не в 0,60 , а в...

Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?
Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru