Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 18:33   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию помогие новичку

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox( NULL, "Hellow!", "Hellow From message Box",MB_OK);
return 0;
}
написал свой первый проект в Win32Api. толком ничё не понял.
в MSDN написано что MessageBox принимает 3 аргумента.
может быть то что в message Box 4 аргумента как-то связано с тем, что int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hRrevInstance,
и самая главная проблема с комплятором. не очень понятно где ошибка. он вообще пишет:
1>c:\documents and settings\дима\мои документы\visual studio 2008\projects\project1\hellow\hello w.cpp(5) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [8]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>Build log was saved at "file://c:\Documents and Settings\Дима\Мои документы\Visual Studio 2008\Projects\Project1\Hellow\Debug \BuildLog.htm"
1>Hellow - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Dimarik вне форума Ответить с цитированием
Старый 15.10.2009, 18:44   #2
LukS
Пользователь
 
Аватар для LukS
 
Регистрация: 22.01.2009
Сообщений: 20
По умолчанию

В настройках проекта укажи: (пкм на названии проекта слева и там Properties)
Charaster Set : Use multi-byte charaster set
Ошибки не будет.

Цитата:
в MSDN написано что MessageBox принимает 3 аргумента.
может быть то что в message Box 4 аргумента
в MessageBox'е 4 аргумента. Однако четверый аргумент можно не заполнять, по умолчанию он равен MB_OK (вроде, точно не помню). Это никак не связано с функцией WinMain. Функция WinMain - это entrypoint. (заглядывая вперед). С ней начинается выполнение программы.

P.S. "привет" по английски пишется hello а не hellow

Последний раз редактировалось LukS; 15.10.2009 в 18:46.
LukS вне форума Ответить с цитированием
Старый 15.10.2009, 18:56   #3
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox( NULL, TEXT("Hello!"), TEXT("Hellow From message Box"),MB_OK);
return 0;
}

Так попробуй. И посмотри в чем различие реализации для Анси и Юникода.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 15.10.2009, 18:58   #4
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

поменял. теперь вот это пишет
1>c:\documents and settings\дима\мои документы\visual studio 2008\projects\project1\hellow\hello w.cpp(4) : error C2731: 'WinMain' : function cannot be overloaded
и вопрос. что это я менял?
Dimarik вне форума Ответить с цитированием
Старый 15.10.2009, 19:09   #5
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию может начал не так?

как я создал проект. файл/Win 32 Priject, empty project (галочку поставил)
потом в Sourse files добавил файл *.срр вот и в нём в ручную начал всё это писать.
попутно задам вопрос в winApi надо всё ручками прописывать и нельзя сделать как в билдере (щёлкнул на что-нибудь двойным челчком и появилась функция __fastcall vo\id со всеми аргументами)? как я понимаю, тем WinApi и сложнее, что нельзя.но мало ли....
Dimarik вне форума Ответить с цитированием
Старый 15.10.2009, 19:14   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

MSVC++ 6.0
обе версии компилятся и работают.
тип проекта Win32 Application

кстати у бокса второй параметр текст сообщения а третий его заголовок.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.10.2009, 19:20   #7
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

MSVC++ 2008 у меня
в Win32 пделожено только 2 типа проектов:
Win32 Console Application и Win 32 Project
причём в Win 32 Prokect написано: A project for creating a Win32 console application
Dimarik вне форума Ответить с цитированием
Старый 15.10.2009, 19:21   #8
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

кстати, когда нажима.ю: продолжить работу файла не взирая на ошибки синтаксиса, у меня пишет, что не найден файл hello.exe
Dimarik вне форума Ответить с цитированием
Старый 15.10.2009, 19:57   #9
LukS
Пользователь
 
Аватар для LukS
 
Регистрация: 22.01.2009
Сообщений: 20
По умолчанию

Создавайте Win23 Console Application, а в нем уже выбирайте опцию Empty project. WinAPI сложен тем, что все надо делать клавиатурой а не мышкой. В WINAPI нет такой роскоши как классы, обьекты.
Цитата:
1>c:\documents and settings\дима\мои документы\visual studio 2008\projects\project1\hellow\hello w.cpp(4) : error C2731: 'WinMain' : function cannot be overloaded
Ошибка говорит, что где-то уже есть функция WinMain. Или у нее неправильные аргументы. Все примеры выше перекомпилировал, все кроме 1-ого твоего не работает (из-за кодировки).
LukS вне форума Ответить с цитированием
Старый 16.10.2009, 17:32   #10
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

сейчас разбираю префиксы имён. hWnd - дескриптор родительского окна.
h - дескриптор. в гугле нашёл определене дескриптора - типа это логическая единица.
но если что-что связано слогикой, то дескриптор по идее это bool. а это не так. кто-нибудь поясните мне что же это такое? и чем отличается дальний указатель lp от дальнего указателя на строку, заканчивающуюся нулевым ,айтом lpsz и p указатель и psz цказатель на строку, закачивающуюся нулевым байтом

Последний раз редактировалось Dimarik; 16.10.2009 в 17:36.
Dimarik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построить дерево,помогие пожалуйста olesyaA Помощь студентам 13 30.05.2009 19:41
Помогите новичку ! T-ReX_m Общие вопросы по Java, Java SE, Kotlin 7 13.02.2009 22:24
Хелп новичку... kosmosila Работа с сетью в Delphi 7 16.02.2008 12:15
Помогие с двоичными и 16ными значениями !! UnD)eaD)Snake Общие вопросы Delphi 3 01.08.2007 20:47