Первый раз решил попробовать написать прогу в чистом WinAPI. Попалась книжка Финогенова "Win32 Основы программирования". Там первая же программа:
#define STRICT
#include<windows.h>
#include<windowsx.h>
char szClassName[]="MainWindow";
char szTitle[]="Программа 1-1";
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int) {
MSG msg;
WNDCLASS wc;
memset(&wc,0,sizeof(wc));
wc.lpfnWndProc=WndProc;
wc.hInstance=hInst;
wc.hIcon=LoadIcon(0,IDI_APPLICATION);
wc.hCursor=LoadCursor(0, IDC_ARROW);
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);
wc.lpszClassName=LPCWSTR(szClassName);
RegisterClass(&wc);
HWND hwnd=CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW, 10,10,250,100,HWND_DESKTOP,NULL,hInst,0);
ShowWindow(hwnd,SW_SHOWNORMAL);
while(GetMessage(&msg, NULL,0,0))
DispatchMessage(&msg);
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch(msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hwnd,msg,wParam,lParam));
}
}
При билде в VisualStudio 2005 выдается ошибка:
Prog1_1.cpp
1>c:\programming\visual studio 2005\projects\program1_1\program1_1\prog1_1.cpp(19) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'char [11]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Похожая ошибка выдавалась в строчке, где присваивается значение wc.szClassName, но там удалось ее разрешить. Внутри функции CreateWindow такой финт ушами не проходит - все равно выдается та же самая ошибка. Подскажите, как лечить, и вообще как конвертировать символьные строки в эту самую LPCWSTR (или как ее инициализировать)?