|
|
|
|
|
для: Ziq
(24.10.2007 в 22:18)
| | >1. Почему нельзя работать с Win32 Console Application?
Этот тип проекта предназначен для консольных програм.м
>2. Откуда взялось MessageBoxA вот кусок из MSDN
Все функции, принимающие стороки имеют ANSI и Unicode-варианты. Соответственно добавляются A или W | |
|
|
|
|
|
|
|
для: Фитч
(24.10.2007 в 16:38)
| | Огромное спасибо! Действительно просто не так создал проект.
Возникло два вопроса:
1. Почему нельзя работать с Win32 Console Application?
2. Откуда взялось MessageBoxA вот кусок из MSDN
int MessageBox( HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
|
| |
|
|
|
|
|
|
|
для: Ziq
(23.10.2007 в 21:55)
| | У меня тоже Visual Studio 2005. Как создаете проект? | |
|
|
|
|
|
|
|
для: Фитч
(23.10.2007 в 08:18)
| | вот что пишет
------ Build started: Project: ggg, Configuration: Debug Win32 ------
Compiling...
ggg.cpp
Linking...
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2005\Projects\ggg\Debug\ggg.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Администратор\Мои документы\Visual Studio 2005\Projects\ggg\ggg\Debug\BuildLog.htm"
ggg - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
|
если поставить Charset в значение Not Set
Код
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBoxA(NULL, "Hello, World", "Text", MB_OK);
return 0;
}
|
Если поставить строку с #ifdef UNICODE... то выдает тоже ошибку. У тебя какая версия Visual Studio? | |
|
|
|
|
|
|
|
для: Ziq
(23.10.2007 в 00:46)
| | У меня компилится и работает нормально.
Что пишет в сообщении об ошибке? | |
|
|
|
|
|
|
|
для: Фитч
(22.10.2007 в 23:04)
| | Не помогло :(. | |
|
|
|
|
|
|
|
для: Ziq
(22.10.2007 в 22:14)
| | Вот так это должно выглядеть:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBoxA(NULL, "Hello, World", "Text", MB_OK);
return 0;
}
|
Ошибки:
1) WinMain должна быть объявлена с атрибутом __stdcall (в Windows-приложениях это WINAPI)
2) Проект создн для Unicode-версии. Выставьте в Project->Properties->General Character Set в значение Not Set (или добавьте перед #include <windows.h> что-то вроде
#ifdef UNICODE
#undef UNICODE
#endif
|
| |
|
|
|
|
|
|
| Ничего не соображаю в Windows-приложениях. Вот такой код приведен в книге по win32 API
#include <windows.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Hello, World", "Text", MB_OK);
return 0;
}
|
Вот лог ошибки
------ Build started: Project: ggg, Configuration: Debug Win32 ------
Compiling...
ggg.cpp
c:\documents and settings\администратор\мои документы\visual studio 2005\projects\ggg\ggg\ggg.cpp(4) : warning C4007: 'WinMain' : must be '__stdcall'
c:\documents and settings\администратор\мои документы\visual studio 2005\projects\ggg\ggg\ggg.cpp(5) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\Documents and Settings\Администратор\Мои документы\Visual Studio 2005\Projects\ggg\ggg\Debug\BuildLog.htm"
ggg - 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
|
Как сделать, чтобы все работало? В чем ошибка?
Все дело происходит в Microsoft Visual C++ 2005 Professional Edition | |
|
|
|
|