Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Win API and Visual C++ 2008 Express 
:(
    Опции темы
newbie2009
Дата 14.6.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Создал проект в данном компиляторе(Visual C++ 2008 Express ). Добавил туда след. код
Код

#include <windows.h>
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);
int  WINAPI  WinMain (HINSTANCE  hInstance,
                     HINSTANCE  hPrevInstance,
                     LPSTR    lpCmdLine,
                      int    nCmdShow)
{
  HWND hwnd;
  MSG msg;
  WNDCLASS w;
  memset(&w,0,sizeof(WNDCLASS));
  w.style = CS_HREDRAW | CS_VREDRAW;
  w.lpfnWndProc = WndProc;
  w.hInstance = hInstance;
  w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  w.lpszClassName = "My Class";
  RegisterClass(&w);
  hwnd = CreateWindow("My Class", "Окно пользователя", WS_OVERLAPPEDWINDOW,500, 300, 500, 380, NULL, NULL, hInstance, NULL);
  ShowWindow(hwnd,nCmdShow);
  UpdateWindow(hwnd);
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
  switch (Message)
  {
    case WM_DESTROY: PostQuitMessage(0); break;
    default: return DefWindowProc(hwnd, Message, wparam, lparam);
  }
  return 0;
}


Запустил на выполнение. Получил ошибки

1>c:\documents and settings\администратор\мои документы\visual studio 2008\projects\wintest\wintest\test.cpp(16) : error C2440: =: невозможно преобразовать 'const char [9]' в 'LPCWSTR'

1>c:\documents and settings\администратор\мои документы\visual studio 2008\projects\wintest\wintest\test.cpp(18) : error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'const char [9]' в 'LPCWSTR'


Как это исправить? И почему тогда в Microsoft Visual C++ 6.0 все хорошо компилируется?
Заранее спасибо.



Это сообщение отредактировал(а) newbie2009 - 14.6.2009, 13:03
PM MAIL   Вверх
andrew_121
Дата 14.6.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Типы char замени на TCHAR

Добавлено через 41 секунду
Или отключи поддержку юникод в проекте.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 14.6.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(newbie2009 @  14.6.2009,  13:00 Найти цитируемый пост)
Как это исправить? 

Цитата

 error C2440: =: невозможно преобразовать 'const char [9]' в 'LPCWSTR'

буковку L дописать
Код

L"My Class"


Цитата(newbie2009 @  14.6.2009,  13:00 Найти цитируемый пост)
 И почему тогда в Microsoft Visual C++ 6.0 все хорошо компилируется?

не знаю smile



--------------------
PM MAIL   Вверх
Курсант
Дата 14.6.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: 1
Всего: 4



О, я кстати недавно с такой же бедой столкнулся. Проблема в том что такой API функции CreateWindow нету в природе.

Есть в природе API функции CreateWindowA (ASCII - версия), CreateWindowW (Юникод версия), CreateWindowExA (ASCII), CreateWindowExW (Юникод)...

Обратите внимание, у Вас в коде вызывается CreateWindow, а ругается компилятор на CreateWindowExA...
Вывод - CreateWindow - это как бы макрос, в зависимости от режима компилятора (#ifdef) заменяется либо на CreateWindowExA, либо W... В зависимости от юникод-неюникод режима компилляции... Вообще имхо это болезнь книжек по API - в них рассказывается про API функции, которых нет в природе...

А посмотреть Declaration функции CreateWindow мне кажется Вам рано или поздно прийдется, посмотрите его сейчас - сами все поймете smile

Код

#ifdef UNICODE
#define RegisterClass  RegisterClassW

#ifdef UNICODE
#define CreateWindow  CreateWindowW

#ifdef UNICODE
#define CreateWindowEx  CreateWindowExW


И все в таком роде...

Добавлено @ 13:23
В визуал C++ 6 у Вас компилилось скорее всего потому, что там были другие версии заголовочных файлов... В которых не было W, а было A...

Это сообщение отредактировал(а) Курсант - 14.6.2009, 13:29
PM ICQ Skype   Вверх
newbie2009
Дата 14.6.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Спасибо, и еще тогда сразу такой возможно дурной вопрос... Надо ли со старта запоминать все эти параметры ф-ий , чего и как? или оно потом само прийдет понимание всех этих процессов, или я просто не по том учусь ( на Интуите какой-то курс и по нему вот пытаюсь что-то выучить)
PM MAIL   Вверх
Курсант
Дата 14.6.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: 1
Всего: 4



Пиши программы smile Побольше.. Больше пользы будет. Такое мое имхо.

Добавлено через 1 минуту и 37 секунд
А учиться ИМХО лучше по Щупаку "Win32API. Эффективная разработка приложений", можно по Румянцеву, Ганеева пока не открывал, есть еще забугорный автор какой-то, про Виндовс 95, говорят замечательная книга, но не читал...

Добавлено через 2 минуты и 16 секунд
адресок свой давай, я тебе щас скину, если у тебя инет безлимитный, у меня хорошая библиотека smile
PM ICQ Skype   Вверх
zim22
Дата 14.6.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Курсант @  14.6.2009,  13:30 Найти цитируемый пост)
А учиться ИМХО лучше по Щупаку "Win32API. Эффективная разработка приложений",

я рекомендую новую книгу Рихтера Windows via C/C++. в ней есть всё, что и в старой за исключением работы с окнами.


--------------------
PM MAIL   Вверх
newbie2009
Дата 14.6.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Всем спасибо, все работает, лит-ру будем изучать)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.