Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.71
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
#1

Функция CreateWindow - C++

04.03.2011, 05:58. Просмотров 7458. Ответов 16
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
#include <windows.h>
...
hMainWnd = CreateWindow( 
        szClassName, "A Hello1 Application", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL);
Недавно начал изучать WIN API и столкнулся с ещё одной проблемой:
CreateWindow подчёркнуто красным пи наведении на неё мышью написано:
аргумент типа "char *" несовместим с параметром типа "LPCWSTR" , а при компиляции ошибка
error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из "char [8]" в "LPCWSTR"
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции.
Помогите кто знает!
Работаю в Visual c++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 05:58     Функция CreateWindow
Посмотрите здесь:

Отличия: CreateWindow() от СFrameWnd::Create(); - C++
ЛЮДИ! Чем отличается CreateWindow() от СFrameWnd::Create(); Они вообще как-нибудь друг с другом соотносятся??? Ну ламер я,...

При вызове CreateWindow в функции вылетает необработанное исключение (найти и исправить ошибку) - C++
При вызове CreateWindow в функции HRESULT Render_CreateWindow(LPCTSTR wclass, LPCTSTR wname, LPCSTR icon) { // Регистрация класса ...

Функция CreateWindow - C++ WinAPI
Здравствуйте. У меня такой вопрос возник. Для чего нужен последний параметр функции CreateWindow ? Вот что я нашел в интернете: Я так...

Функция CreateWindow не создает дочернее окно - C++ WinAPI
Приветствую! Застрял с довольно идиотской проблемой. Необходимо создать приложение с дочерним окошком средствами WinApi. Я создал win32...

CreateWindow - C++ WinAPI
Подскажите пожалуйста почему у меня подчеркивает CreateWindow в case WM_CREATE и MAX_LOADSTRING. #include &lt;cmath&gt; ...

ImpersonateLoggedOnUser + CreateWindow - C++
Добрый день, друзья! Суть проблемы такова. Имеется сервис с правами SYSTEM. Первоначально хотелось управлять им через systray с помощью...

CreateWindow не работает - C++ WinAPI
Здравствуйте, я новичок в WinApi,у меня произошла проблема с созданием окна моего приложения.Функция CreateWindow() возвращает 0,при...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 06:34     Функция CreateWindow #2
C++
1
L"A Hello1 Application"
2 из "char [8]" в "LPCWSTR"
тоже где-то простая строка, вместо широкой
широкая строка имеет тип wchar_t, который может быть определён через typedef в виде всяких LPCWSTR

msdn. CreateWindow
скорее всего szClassName тоже не широкая строка

msdn. types
ссылка на typedef'ы
там видно, что с макроопределением UNICODE тип аргументов у CreateWindow является широкой строкой
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 06:44  [ТС]     Функция CreateWindow #3
C++
1
L"A Hello1 Application
написал так всё равно ошибка
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 06:46     Функция CreateWindow #4
ещё аргумент тоже через широкую строку
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 06:48  [ТС]     Функция CreateWindow #5
А что переписывать-то
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 06:49     Функция CreateWindow #6
C++
1
CreateWindow(szClassName, "A Hello1 Application"
вот эти два аргумента должны быть широкими строками
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 06:49  [ТС]     Функция CreateWindow #7
макроопределение UNICODE не помогает
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 06:53     Функция CreateWindow #8
короче этот szClassName нужно сделать так

C++
1
2
3
4
    LPCWSTR szClassName = L"abc"; /* своё поставишь */
    LPCWSTR mess = L"def"; /* своё поставишь */
 
    CreateWindow(szClassName, mess, ... );
Добавлено через 1 минуту
Цитата Сообщение от XFloat
макроопределение UNICODE не помогает
оно не при чём
там, потом, когда прочитаешь ссылки, переделаешь LPCWSTR на LPCTSTR (тогда нужен UNICODE)
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 07:01  [ТС]     Функция CreateWindow #9
Всё равно пишет при компиляции: CreateWindowExW: невозможно преобразовать параметр 2 из "char [8]" в "LPCWSTR"
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 07:10     Функция CreateWindow #10
msdn. CreateWindowExW
то же самое там, тот же самый тип
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 10:49  [ТС]     Функция CreateWindow #11
Мож reinterpret_cast куда нить приспособить?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
04.03.2011, 11:01     Функция CreateWindow #12
Как по мне, так reinterpret_cast плохой тон. Касты вообще зло
C++
1
2
3
4
5
6
7
8
9
10
11
#include <atlconv.h>
...
{
USES_CONVERTION;
...
hWnd = CreateWindow( 
       szWindowClass, A2W("A Hello1 Application"), WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
       (HWND)NULL, (HMENU)NULL,
       (HINSTANCE)hInstance, NULL);
}
Это как вариант.
Подробнее про макросы(MSDN)

Можешь вообще всю программу в multibyte вместе unicode сделать.
XFloat
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 18
04.03.2011, 11:43  [ТС]     Функция CreateWindow #13
А где взять atlconv.h
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.03.2011, 12:03     Функция CreateWindow #14
zulkis, лучше использовать макросы _T или _TEXT из tchar.h
C
1
2
3
4
5
6
#include <tchar.h>
 
/* ... */
 
_T("Main Window);
_TEXT("Main Window");
Эффект дают одинаковый, подставляют либо wchar_t, либо просто char в зависимости от настроек проекта.
n971030
163 / 95 / 1
Регистрация: 23.01.2010
Сообщений: 1,199
28.07.2012, 01:37     Функция CreateWindow #15
Цитата Сообщение от XFloat Посмотреть сообщение
C++
1
2
3
4
5
6
7
#include <windows.h>
...
hMainWnd = CreateWindow( 
        szClassName, "A Hello1 Application", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL);
Недавно начал изучать WIN API и столкнулся с ещё одной проблемой:
CreateWindow подчёркнуто красным пи наведении на неё мышью написано:
аргумент типа "char *" несовместим с параметром типа "LPCWSTR" , а при компиляции ошибка
error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из "char [8]" в "LPCWSTR"
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции.
Помогите кто знает!
Работаю в Visual c++

C++
1
2
3
4
#include <TCHAR.H>
 
используй макрос
_T("Это я придумал");
nonedark2008
881 / 620 / 125
Регистрация: 28.07.2012
Сообщений: 1,657
28.07.2012, 10:54     Функция CreateWindow #16
Вы все пошли не туда. Самый простой способ - это поставить в настройках проекта использование многобайтной кодировки.
Properties -> Character Set: Use Multi-Byte Character Set
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2012, 10:59     Функция CreateWindow
Еще ссылки по теме:

WinApi - CreateWindow - Visual C++
Подскажите в чем ошибка!! Почему не распознается CreateWindow?? #include &quot;windows.h&quot; #include &quot;windowsx.h&quot; //LRESULT...

Ошибка CreateWindow - C++ WinAPI
#include &lt;windows.h&gt; #define width 640; #define height 480; LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,...

CreateWindow выдает ошибку - C++ WinAPI
Здравствуйте. Кол писал по аналогии из книги. Практически все идинтично. Книжный вариант запускаеться, а мой выдает ошибку при создании...

CreateWindow проблема с созданием окна - C++ WinAPI
Здравствуйте, есть у меня две програмки. Такая #include &lt;Windows.h&gt; const wchar_t * ClassName = L&quot;Window1&quot;; const wchar_t *...

Не создается окно функцией CreateWindow - C++ WinAPI
Выводит сообщение Cannot create window. Компилятор: VS 2015 Community. Вызывает интерес то, что несколько дней назад данный класс работал в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
n971030
163 / 95 / 1
Регистрация: 23.01.2010
Сообщений: 1,199
28.07.2012, 10:59     Функция CreateWindow #17
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Вы все пошли не туда. Самый простой способ - это поставить в настройках проекта использование многобайтной кодировки.
Properties -> Character Set: Use Multi-Byte Character Set
и на что это влияет???????????7
Yandex
Объявления
28.07.2012, 10:59     Функция CreateWindow
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru