Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > VS 2005 & АПИ


Автор: HellanD 3.9.2006, 09:02
Подскажите если я хочю написать проект на с помощью VS 2005 АПИ(ну без MFC) подскажите что нажать!

Добавлено @ 07:53 
Вопрос:
Я хочу писать проги не используя MFC (просто АПИ), а ничего кроме 
VS 2005 (из компеляторов) под рукой нет   ), подскажите как создать проект без  MFC
Я ранше писал в BC5 и было все ОК, а теперь гдето "посеял" его. 
Подскажите плиз!
Спасибо за ответ!!  

Автор: GremlinProg 3.9.2006, 11:03
File->New->Project->Visual C++ Projects->Win32->Win32 Project
File->New->Project->Visual C++ Projects->Win32->Win32 Console Project

Автор: HellanD 3.9.2006, 11:12
Ну я например вибираю file->new->project->Win32->Empty pr..
Добавляю новый Срр шный соурс.
Пишу такой стандартный код
Код

#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "HelloWin";
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wndclass);
hwnd = CreateWindow(
szAppName, // window class name
"The Hello Program", // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL
); // creation parameters
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(iMsg)
{
case WM_CREATE:
PlaySound("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC);
return 0;
24
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, "Hello, Windows 95!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
} 
 
А он пишет мне:
Цитата

Command Lines      Creating temporary file "c:\Documents and Settings\Oleg\Мои документы\Visual Studio 2005\Projects\h\h\Debug\RSP0000019681796.rsp" with contents
[
/Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TC ".\f.c"
]
Creating command line "cl.exe @"c:\Documents and Settings\Oleg\Мои документы\Visual Studio 2005\Projects\h\h\Debug\RSP0000019681796.rsp" /nologo /errorReport:prompt"
 Output Window      Compiling...
f.c
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(19) : warning C4133: '=' : incompatible types - from 'char *' to 'LPCWSTR'
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(34) : warning C4133: 'function' : incompatible types - from 'char [9]' to 'LPCWSTR'
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(34) : warning C4133: 'function' : incompatible types - from 'char [18]' to 'LPCWSTR'
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(42) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(52) : warning C4133: 'function' : incompatible types - from 'char [13]' to 'LPCWSTR'
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(55) : error C2143: syntax error : missing ';' before 'case'
c:\documents and settings\oleg\мои документы\visual studio 2005\projects\h\h\f.c(58) : warning C4133: 'function' : incompatible types - from 'char [19]' to 'LPCWSTR'
 Results      Build log was saved at "file://c:\Documents and Settings\Oleg\Мои документы\Visual Studio 2005\Projects\h\h\Debug\BuildLog.htm"
h - 1 error(s), 6 warning(s)

 
Помогите плиз!!!
Очень нужна помощь!

Автор: GremlinProg 3.9.2006, 11:38
у тебя стоит юникод приложение. Либо используй апишки с постфиксом 'W' и, соответственно, типы, либо выключи _UNICODE.

Автор: HellanD 3.9.2006, 11:46
Как это сделать(выключить юникод)

Автор: GremlinProg 3.9.2006, 11:50
В свойствах проекта выставь Character Set в Use Multi-Byte Character Set

Автор: nikitao 3.9.2006, 18:37
HellanD, а зачем тему плодить? smile  smile 

Автор: PuLN 5.9.2006, 12:38
а что будет,если 0 туда воткнуть?
вроде работает,суть только другая?
тьфу..не туда написал...

просьба удалить

Автор: NiJazz 11.9.2006, 09:59
VC++ 2005 ставит юникод по умолчанию. А лучше заменить char на TCHAR, а строки обернуть с помощью макроса _T(). То есть было "A string", стало _T("A string"). И еще использовать вместо LP©STR LP©TSTR.
Удобство очевидно.

Добавлено @ 10:00 
Блин... © - это просто "C" в скобках.  

Автор: GremlinProg 11.9.2006, 11:21
да, а еще для работы со строками использовать функции с префиксом _tc, такие как _tcslen, _tcscat, _tcscpy... взамен strlen, strcat, strcpy..., тогда код будет 100% независимый от выбора unicode/multi-byte

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)