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

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

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

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

07.11.2011, 19:31. Просмотров 3558. Ответов 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
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
09.11.2011, 11:05 #16
Пусть делает вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h>
#include <string.h>
 
HWND hwnd;
 
int WINAPI WinMain (HINSTANCE hinst,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    char str3[64][256];
    strcpy ( str3[0], "ноль" );
    strcpy ( str3[1], "один" );
    strcpy ( str3[2], "два" );
    strcpy ( str3[3], "три" );
 
    for ( int nomer = 0; nomer < 4; nomer++ )
    {
        int resp = MessageBox(hwnd, str3[nomer], str3[nomer], MB_YESNO );
        if (resp == IDNO){}
        else if (resp == IDYES){}
    }
    return 0;
}
и все поменяется программно
0
-=ЮрА=-
Заблокирован
Автор FAQ
09.11.2011, 11:34 #17

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Пусть делает вот так:
- просто выносите мозг своим непониманием, ну выводите в меседж бокс строки которые читаются из файла, тоже константами их забъёте???Вам сделали замечание нет отсаиваете своё неправильное



Добавлено через 2 минуты

Не по теме:

PS:А если вам захочется строки в ваш массив читать скажу - строки разной длинны, весь файл может быть строкой - это чтоб вам формировать массив отбить охоту!

0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
09.11.2011, 13:50 #18
Или вот так. Просто косишь под мессажбокс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    int i = 0;
    MSG  msg ;
    HWND hwnd;
 
    WNDCLASS wc = {0};
    wc.lpszClassName = "Application";
    wc.hInstance     = hInstance ;
    wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
    wc.lpfnWndProc   = WndProc ;
    wc.hCursor       = LoadCursor(0,IDC_ARROW);
    RegisterClass(&wc);
 
    hwnd = CreateWindow( "Application", "",
                        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                        400, 300, 300, 120,
                        0, 0, hInstance, 0 );
 
    char str[256][256];
    strcpy ( str[0], "Messagebox 0" );
    strcpy ( str[1], "Messagebox 1" );
    strcpy ( str[2], "Messagebox 2" );
    strcpy ( str[3], "Messagebox 3" );
    strcpy ( str[4], "Messagebox 4" );
    strcpy ( str[5], "Messagebox 5" );
    strcpy ( str[6], "Messagebox 6" );
    strcpy ( str[7], "Messagebox 7" );
    strcpy ( str[8], "Messagebox 8" );
    strcpy ( str[9], "Messagebox 9" );
    strcpy ( str[10], "Messagebox 10" );
    strcpy ( str[11], "Messagebox 11" );
    strcpy ( str[12], "Messagebox 12" );
    strcpy ( str[13], "Messagebox 13" );
 
    while ( msg.message != WM_QUIT )
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
                 TranslateMessage(&msg);
                 DispatchMessage(&msg);
    }
        else
        {
                 i++;
                 if ( i == 14){ i = 0; }
                 Sleep(200);
                 SetWindowText(hwnd, TEXT(str[i]));
        }
    }
    return (int) msg.wParam;
}
 
 
 
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch(msg)
    {
        case WM_CREATE:
            CreateWindow(TEXT("button"), TEXT("Сигнал"), WS_VISIBLE | WS_CHILD, 50, 40, 80, 25, hwnd, (HMENU) 1, NULL, NULL);
            CreateWindow(TEXT("button"), TEXT("Выйти"), WS_VISIBLE | WS_CHILD, 150, 40, 80, 25, hwnd, (HMENU) 2, NULL, NULL);
            break;
 
        case WM_COMMAND:
            if (LOWORD(wParam) == 1) {
                MessageBeep(0);
            }
            if (LOWORD(wParam) == 2) {
                PostQuitMessage(0);
            }
            break;
 
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
09.11.2011, 14:44 #19
Цитата Сообщение от programina Посмотреть сообщение
Или вот так. Просто косишь под мессажбокс:
просто идиотизм!
Предлагаю Вам вывести в меседж бокс в поле text строки из файла, например эти
В файле строки(заранее неизвестно сколько строк и какие они!)
Programina
You are
Wrong


Добавлено через 3 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В файле строки(заранее неизвестно сколько строк и какие они!)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    string str;
    ifstream ifs("data.txt");
    if(!ifs)
        cout<<"Error open data.txt\n";
    else
    {
        while(!ifs.eof())
        {
            getline(ifs,str);
            MessageBox(hWnd,str.c_str(),"string",MB_OK);
        }
        ifs.close();
    }
    system("pause");
    return 0;
}
data.txt
Programina
You are
Wrong

Всё!

Добавлено через 4 минуты
programina, ещё будете спорить или всё же извлечёте ошибочность того что вы приводили???

 Комментарий модератора 
Не нарушайте правила форума, на которые сами периодически ссылаетесь. Относитесь уважительнее к участникам форума.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.11.2011, 14:54 #20

Не по теме:

-=ЮрА=-, Юра, успокойся. Вы друг друга не поняли кажется.


П.С. LPCSTR обязательно должна быть завершена нулем?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.11.2011, 15:42 #21
Цитата Сообщение от ForEveR Посмотреть сообщение
LPCSTR обязательно должна быть завершена нулем?
Если залезть в макроопределение, то это const char * . Должны ли строки в Си/С++ завершаться нулём ты и сам знаешь.)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2011, 15:42
Привет! Вот еще темы с ответами:

использование массива из функции в другой функции - 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;...


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

Или воспользуйтесь поиском по форуму:
21
Yandex
Объявления
09.11.2011, 15:42
Ответ Создать тему
Опции темы

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