Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.75
HeHyA4o
1 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
#1

Использование функции MessageBoxA - C++

07.11.2011, 19:31. Просмотров 3679. Ответов 20
Метки нет (Все метки)

Решил после Delphi перейти на C++, сразу появилось сотня проблем, сначало пол часа пытался объявить переменную String, оказалось что первая буква должна быть на нижнем регистре и нужно в using подключать std... Или объявлять как std::string
в общем проблема с объявлением решена, теперь пытаюсь вывести месагу используя MessageBoxA (Оказалось что просто MessageBox как в Delphi тут нет, но это одно и тоже )) )
C++
1
2
3
std::string sXs="";
sXs="qwerty";
MessageBoxA(0,sXs,"Caption",0);
Вот код, орет на sXs, как правильно заставить работать код? PChar как в Delphi не работает PAnsiChar тоже
Выдрал само объявление MessageBoxA из winuser.h
C++
1
2
3
4
5
6
WINAPI
MessageBoxA(
    IN HWND hWnd,
    IN LPCSTR lpText,
    IN LPCSTR lpCaption,
    IN UINT uType);
что за LPCSTR ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2011, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование функции MessageBoxA (C++):

Ошибка в MessageBoxA - C++
Подключил библиотеку <windows.h> и MessageBoxA(NULL, "арпоап", "апропа", MB_OK) на которую выдается несколько ошибок. Но если взять в...

Сообщения в MessageBoxA - C++
Здравствуйте! Помогите запустить данный код: char *Str(int i){ char buffer; char *s = itoa(i,buffer,10); return s; };

Как в MessageBoxA написать текст из переменной - C++
Использую MessageBoxA для вывода всяких ошибок MessageBoxA(NULL, "Text", "Error", MB_OK); Но немогу найти информации как сделать так...

Возвращение результата функции bool и использование его в функции main() - C++
У меня есть функция bool, которая имеет вид: bool Pisos(int row, int place) { if (...) return true; else return false;...

Ввод данных в функции конструктора и использование их в перегруженной функции - C++
Вот собственно код, как его исправить, что бы не было ошибки. Пишет что переменные не объявлены. Это вполне естественно. Но как сделать...

Использование функции как параметра другой функции - C++
В задании указано, что функция P прибавляет значение функции ff к элементу массива, если он входит в промежуток от C до D, которые вводятся...

20
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,544
Завершенные тесты: 3
07.11.2011, 19:43 #2
HeHyA4o, read msdn. работать с WinAPI напрямую через стандартные С++ типы нельзя.
0
HeHyA4o
1 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
07.11.2011, 19:46  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
HeHyA4o, read msdn. работать с WinAPI напрямую через стандартные С++ типы нельзя.
т.е надо string значение засунуть в LPCSTR и выводить уже его?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,544
Завершенные тесты: 3
07.11.2011, 19:52 #4
HeHyA4o, Почитайте msdn.

Добавлено через 3 минуты
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Добавлено через 1 минуту
http://msdn.microsoft.com/en-us/library/aa383751(v=VS.85).aspx
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.11.2011, 22:49 #5
Цитата Сообщение от HeHyA4o Посмотреть сообщение
то за LPCSTR ?
- const char, запихивайте вашу string в MessageBox так
C++
1
2
3
string text;
string capt;
MessageBox(NULL,text.c_str(),capt.c_str(),MB_OK);
Если не хотим первый параметр NULL, то HWND консоли подхватить проще всего
C
1
HWND hWnd = GetForegroundWindow();
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.11.2011, 09:02 #6
Пиши вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
 
HWND        hwnd;
 
LPCTSTR str1 = "Programina";
LPCTSTR str2 = "Програмина";
 
 
int WINAPI WinMain (HINSTANCE hinst,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    int resp = MessageBox(hwnd, str1, str2, MB_YESNO );
 
    if (resp == IDNO)
    {}
    else if (resp == IDYES)
    {}
 
    return 0;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2011, 10:50 #7
programina, ТС чётко сказал с чём работает
Цитата Сообщение от HeHyA4o Посмотреть сообщение
Или объявлять как std::string
Цитата Сообщение от HeHyA4o Посмотреть сообщение
std::string sXs="";
sXs="qwerty";
- а если в программе text и caption прогой формируются тоже так делать???
Цитата Сообщение от programina Посмотреть сообщение
LPCTSTR str1 = "Programina";
LPCTSTR str2 = "Програмина";
-
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
08.11.2011, 17:05 #8
Цитата Сообщение от ForEveR Посмотреть сообщение
работать с WinAPI напрямую через стандартные С++ типы нельзя
Можно. А вот через STL типы нельзя.
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.11.2011, 18:20 #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
programina, ТС чётко сказал с чём работает

- а если в программе text и caption прогой формируются тоже так делать???
-
Ему похоже заняться нечем вот он и выдумывает всякие там str::string,
0
Kastaneda
08.11.2011, 19:34
  #10

Не по теме:

Цитата Сообщение от HeHyA4o Посмотреть сообщение
Оказалось что просто MessageBox как в Delphi тут нет, но это одно и тоже
Совершенно не знаю Delphi, но общался с делфийцами, так вот могу сказать, что и в Delphi просто MessageBox нету, потому что ее нет в WinAPI. Просто там что-то типа макроса (или что там в Delphi), а на самом деле вызывается все та же MessageBoxA (или MessageBoxW).

0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.11.2011, 19:38 #11
Цитата Сообщение от programina Посмотреть сообщение
Ему похоже заняться нечем вот он и выдумывает всякие там str::string,
А вы предлагаете си-строки использовать?...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
08.11.2011, 19:54 #12
Цитата Сообщение от Kastaneda Посмотреть сообщение
там что-то типа макроса
Точно так же, как и в WinAPI на C++. Для почти всех функций с постфиксом A|W предусмотрен макрос, автоматически выбирающий какую из функций выбрать, в зависимости от определения символа _UNICODE.
0
Kastaneda
08.11.2011, 19:58
  #13

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Точно так же, как и в WinAPI на C++. Для почти всех функций с постфиксом A|W предусмотрен макрос, автоматически выбирающий какую из функций выбрать, в зависимости от определения символа _UNICODE.
просто я не знаю, понимает ли delphi сишные макросы, поэтому так написал.

0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
09.11.2011, 07:19 #14
Можно подробнее про макрос. Где его можно просмотреть в текстовом виде, если можно просмотреть.
А я думала что, в Дельфи есть что-нибудь наподобие user32.h c описанием этой функции.
0
-=ЮрА=-
09.11.2011, 10:46     Использование функции MessageBoxA
  #15

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Ему похоже заняться нечем вот он и выдумывает всякие там str::string,
- programina, это срр - строка, если вы не практиковали работу с этим типом данных то для расширения кругозора скажу что это некий аналог CString. Я ещё раз вам говорю если текст и капшин текст в меседже должні формироваться програмно то ваш вариант неприемлим, зачем спорите?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2011, 10:46
Привет! Вот еще темы с ответами:

использование массива из функции в другой функции - C++
как использовать полученный массив в другой функции. к примеру в функции int Mass(char *fname) происходит конвертация одномерного массива...

Использование функции - C++
Я должен посчитать сколько букв в каждой строке с использованием функции int countAccurance(char arr, char ch). Но вывод должен быть в...

Использование функции - C++
Не могли бы помочь решить вот это задание? И подскажите где можно прочитать о функциях, передаче данных при вызове функции....

Использование функции Gets() - C++
Помогите переделать данный код, чтобы вводить str не через функцию cin, а через функцию gets() #include &lt;iostream&gt; #include &lt;string&gt;...


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

Или воспользуйтесь поиском по форуму:
15
09.11.2011, 10:46
Ответ Создать тему
Опции темы

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