Андрей Олешкевич
21 повідомлення
#16 років тому
Вот в книге вычитал, как создать простое окно типа Windows Aplication, но он не работает. Помогите найти ошибку....

// Стандартный включаемый файл Windows
#include <windows.h>

// Прототип функции обратного вызова для обработки сообщений
LRESULT CALLBACK fnMessageProcessor (HWND, UINT, WPARAM, LPARAM);

// Функция вызывается автоматически, когда программа запускается
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,


int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;


// Настройка класса окна
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = fnMessageProcessor;
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 = "Window Class"; // Имя класса
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);


// Регистрация класса окна
if(RegisterClassEx(&wndclass) == 0)
{


// Сбой программы, выход


exit(1);
}


// Создание окна
hWnd = CreateWindowEx(


WS_EX_OVERLAPPEDWINDOW,


"Window Class", // Имя класса


"Create Window Example", // Текст заголовка


WS_OVERLAPPEDWINDOW,


0,


0,


320,


200,


NULL,


NULL,


hInstance,


NULL);


// Отображение окна
ShowWindow(hWnd, iCmdShow);


// Обработка сообщений, пока программа не будет прервана
while(GetMessage (&msg, NULL, 0, 0))
{


TranslateMessage(&msg);


DispatchMessage(&msg);
}


return (msg.wParam);
}

// Функция обратного вызова для обработки сообщений
// (НЕОБХОДИМА ВСЕМ ПРОГРАММАМ ДЛЯ WINDOWS)
LRESULT CALLBACK fnMessageProcessor (HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch(iMsg)
{


// Вызывается, когда впервые создается окно


case WM_CREATE:


return(0);


// Вызывается, когда окно обновляется


case WM_PAINT:


return(0);


// Вызывается, когда пользователь закрывает окно


case WM_DESTROY:


PostQuitMessage(0);


return(0);


default:


return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
}
Андрей Олешкевич
21 повідомлення
#16 років тому
Вот что пишет мне компилятор

------ Build started: Project: new, Configuration: Debug Win32 ------
Compiling...
CreateWindow.cpp
c:\documents and settings\андрей\мои документы\visual studio 2008\projects\new\new\createwindow.cpp(12) : error C2440: '=' : cannot convert from 'const char ' to 'LPCWSTR'


Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\андрей\мои документы\visual studio 2008\projects\new\new\createwindow.cpp(14) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char ' 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 2008\Projects\new\new\Debug\BuildLog.htm"
new - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Игорь Чорноус
51 повідомлення
#16 років тому
Поставьте перед кавычками букву "L" либо в настройках измените UNICODE на ASCII в закладке General
Андрей Олешкевич
21 повідомлення
#16 років тому
Не могли бы вы конкретнее объяснить как на эту вкладку попасть?
Игорь Чорноус
51 повідомлення
#16 років тому
Конечно: Меню Project-><имя проекта> Properties -> в появившемся окошке слева выбираете Configuration Properties, а там General/
в таблице справа заметите слова Character set и рядом use UNICODE character set - из списка выберите пункт Not Set
Андрей Олешкевич
21 повідомлення
#16 років тому
Ну спасибо вам!!!! Я прямо таки и не знал чтобы без вас делать. Еще раз ОГРОМНОЕ СПАСИБО!
Алишер Л.
13 повідомлень
#16 років тому
А, если Вам влом залезать в меню и менять параметры компилера опционально, то можете просто привести к типу LPCWSTR переменную, типа const char*. Результат один и тот же!
Игорь Чорноус
51 повідомлення
#16 років тому
Huttabb, судя по вашим постам, с языком C\C++ вы знакомы лишь благодаря msdn. Глупость ведь написали