Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
#1

WinMain entry point - C++

22.11.2013, 20:35. Просмотров 1258. Ответов 8
Метки нет (Все метки)

Здравствуйте!

Я только начал изучать WinAPI и, естественно, периодически заглядываю в MSDN. Но сразу же столкнулся с недопониманием.

На странице http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx точку входа предлагается делать таким образом:

C++
1
2
3
4
5
6
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);
А на странице http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx по другому:

C++
1
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);
В чем разница и как будет более правильно?

Заранее спасибо за ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 20:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос WinMain entry point (C++):

C++ DLL for C# entry point - C++
heared -> #ifndef _DLLTEST_H_ #define _DLLTEST_H_ #include <string> using namespace std; extern "C"...

Defines the entry point for the console application - C++
// structura.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include...

Defines the entry point for the console application - C++
#include "stdafx.h" #include <iostream> using namespace std; int Prime(unsigned long a) { unsigned long i; if (a ==...

LINK : fatal error LNK1561: entry point must be defined - C++
Создан как Empty project Код программы: namespace program { void main() { } }

Неопределенная ссылка на `WinMain @ 16 ' - C++
учусь программировать в wxdev C++ по книге Шилдта. сделал все как написано а компилятор ругается не понятно на что. вот сам код. //...

undefined reference to winmain@16 - C++
pomogite 4to takoi undefined reference to winmain@16? ya ya napisal metoda sortirovka viborom

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 20:58 #2
Skitalec-x,
Это прототип функции винмайн
C++
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);
А так она вызывается:
C++
    
 
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
22.11.2013, 20:59 #3
WinMain: The Application Entry Point
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:00 #4
Хотя нет, второй тоже прототип, в общем там же на второй ссылке написан пример:

C++
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow)
{
    return 0;
}
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:10  [ТС] #5
Цитата Сообщение от programina Посмотреть сообщение
... в общем там же на второй ссылке написан пример...
[/CPP]
Спасибо за ответы! Как писать правильно - я понял. Но в чем же разница?
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
22.11.2013, 21:19 #6
перевод от google выдержки из текста ,ссылка выше :

WinMain функция идентична wWinMain , за исключением аргументы командной строки передаются в виде строки ANSI. Предпочтительным является версия Unicode. Вы можете использовать ANSI WinMain функцию, даже если вы компиляции программы как Unicode. Для получения копии Unicode из аргументов командной строки, вызовите GetCommandLine функцию. Эта функция возвращает все аргументы в одну строку. Если вы хотите аргументы как в агду массива стиле, пройти эту строку в CommandLineToArgvW .

оригинал :

The WinMain function is identical to wWinMain, except the command-line arguments are passed as an ANSI string. The Unicode version is preferred. You can use the ANSI WinMain function even if you compile your program as Unicode. To get a Unicode copy of the command-line arguments, call the GetCommandLine function. This function returns all of the arguments in a single string. If you want the arguments as an argv-style array, pass this string to CommandLineToArgvW.
MSDN
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:30 #7
Skitalec-x, вот пример:

C++
#include <iostream>
using namespace std;
 
// это обьявление (или декларация, или прототип) функции, 
// попробуй закомментировать его и посмотри, 
// будет ли программа компилироваться
int func( int );
 
// точка входа
int main()
{
  int a = 5;
  cout << func(a) << endl;
}
 
// определение (дефиниция) функции func
int func(int d)
{
  return d; 
}
LuxArt
33 / 20 / 2
Регистрация: 14.11.2013
Сообщений: 85
22.11.2013, 21:30 #8
Цитата Сообщение от Skitalec-x Посмотреть сообщение
В чем разница и как будет более правильно?
Вот что накопал в справочной системе
C++
1
2
#define WINAPI __stdcall
#define CALLBACK __stdcall
Получается нет разницы

CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:34  [ТС] #9
Цитата Сообщение от LuxArt Посмотреть сообщение

Получается нет разницы
Большое спасибо!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 21:34
Привет! Вот еще темы с ответами:

Ошибка: undefined reference to `WinMain@16' - C++
Подскажите пожалуйста, что означает эта ошибка и как от нее озбавиться: Linking... ...

WinMain@16 что это такое? - C++
При исполнении программы окно работы программы выдаёт число 4 в шестнадцатеричном формате. Что нужно? Существует ли функция Для вывода...

Ошибка в коде undefined reference to 'WinMain' - C++
Вот код: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using namespace std; class stud { private: char...

Точка входа отличная от main/WinMain - C++
Случайно наткнулся на код и прямо-таки заинтересовало: Собственно: Насколько я понимаю проблема как раз в SubSystem. Несколько не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.11.2013, 21:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru