Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/106: Рейтинг темы: голосов - 106, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 05.03.2010
Сообщений: 24
1

MessageBox - чтобы вместо "Yes" и "No" показывало "Да" и "Нет"

19.11.2010, 10:05. Показов 21805. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток,
как переделать
C++
1
int Key= Application->MessageBox(L"Text", L"Caption", MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);
чтоб место "YES" и "NO" показывало "ДА" и "НЕТ"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2010, 10:05
Ответы с готовыми решениями:

изменить чтоб вместо мама показывало igorek
#include <stdio.h> #include <conio.h> main(){ int i,j,k,n;int B; static char s="Mama"; char c;...

Как сделать чтобы не показывало -0?
Собственно в лабе есть задача квадратное уравнение, запускаю ввожу -5 ; 5 ; 5 Пишет Количество...

При нажатии в одном messagebox "Нет" всё равно появляется другой messagebox
При удалении записи сделал messagebox с подтверждением Да или Нет. При нажатии Нет всё равно...

Добавить ссылку в скрипт, чтобы показывало наименование провйдера
Добрый день. Есть вот такие два скрипта (function($){$.jqIpLocation=function(opt){var...

2
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
19.11.2010, 10:22 2
C++
1
2
3
4
5
6
7
8
9
AnsiString ds = "Вы деиствительно хотите удалить выбранную строку? \n\n" + IntToStr(ADOQuery1->FieldByName("Invent_Number")->AsInteger)+" - "+ADOQuery1->FieldByName("Number_in_Lan")->AsString+" - "+ADOQuery1->FieldByName("Department")->AsString+" - "+ADOQuery1->FieldByName("Processor")->AsString+" - "+ADOQuery1->FieldByName("Memory")->AsString+" - "+ADOQuery1->FieldByName("HDD")->AsString+" - "+ADOQuery1->FieldByName("Room")->AsString;
     if (Application->MessageBox(ds.c_str(),"Подтверждение удаления строки из базы данных",MB_YESNO +MB_TOPMOST+ MB_ICONQUESTION)!=IDYES)
     {
         Abort();
     }
     else
{
 
}
1
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
19.11.2010, 20:59 3
Кнопки MessageBox`а показывают надписи на том языке, который установлен в системе по умолчанию. Как вариант - сделать свой.

Вот нашел пример кода на стороннем форуме, где меняются надписи на кнопках. Делается это с помощью установки хука на окно сообщения. В этом случае надписи просто меняются при появлении окна.
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
//
//  MsgBoxEx - how to customize a standard message box
//  Written by J Brown 2002
//  Freeware
//
 
#include <windows.h>
#include <tchar.h>
 
TCHAR szContents[] = _T("Windows will now wipe your harddisk!");
TCHAR szTitle[]    = _T("Hello");
 
HHOOK hMsgBoxHook;
 
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    TCHAR ach[40];
    HWND hwnd;
    HWND hwndButton;
 
    if(nCode < 0)
        return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
 
    switch(nCode)
    {
    case HCBT_ACTIVATE:
 
        // Get handle to the message box!
        hwnd = (HWND)wParam;
 
        SetWindowText(hwnd, _T("Message from Bill"));
 
        hwndButton = GetDlgItem(hwnd, IDOK);
        SetWindowText(hwndButton, _T("Thankyou"));
        
        return 0;
 
    }
 
    return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
}
 
 
int MsgBoxEx(HWND hwnd, TCHAR *szText, TCHAR *szCaption, UINT uType)
{
    int retval;
 
    // Install a window hook, so we can intercept the message-box
    // creation, and customize it
    hMsgBoxHook = SetWindowsHookEx(
        WH_CBT, 
        CBTProc, 
        NULL, 
        GetCurrentThreadId()            // Only install for THIS thread!!!
        );
 
    // Display a standard message box
    retval = MessageBox(hwnd, szText, szCaption, uType);
 
    // remove the window hook
    UnhookWindowsHookEx(hMsgBoxHook);
 
    return retval;
}
 
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd)
{
    // Just display a standard message box.
    // It doesn't matter that we have no parent window or a
    // message-loop, because MessageBox has it's own message loop.
 
    MsgBoxEx(NULL, szContents, szTitle, MB_OK | MB_ICONSTOP);
        
    return 0;
}

Вот для C++ Builder пример реализации окна сообщения, со своими названиями на кнопках:

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
86
87
88
89
90
91
92
93
94
95
96
97
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "message.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm23 *Form23;
//---------------------------------------------------------------------------
__fastcall TForm23::TForm23(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
//контейнер для своих названий кнопок
class MessageButtons
{
    public:
        String OK,
                YES,
                NO,
                CANCEL,
                ABORT,
                RETRY;
};
 
MessageButtons buttons;
HHOOK hook;
 
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        HWND hwnd;
        HWND hwndButton;
 
        if(nCode < 0)
                return CallNextHookEx(hook, nCode, wParam, lParam);
 
        switch(nCode)
        {
            case HCBT_ACTIVATE:
                hwnd = (HWND)wParam;
                //присваимаем текст, кнопке
                hwndButton = GetDlgItem(hwnd, IDOK);
                SetWindowText(hwndButton, buttons.OK.c_str());
 
                hwndButton = GetDlgItem(hwnd, IDCANCEL);
                SetWindowText(hwndButton, buttons.CANCEL.c_str());
 
                hwndButton = GetDlgItem(hwnd, IDCANCEL);
                SetWindowText(hwndButton, buttons.NO.c_str());
 
                hwndButton = GetDlgItem(hwnd, IDYES);
                SetWindowText(hwndButton, buttons.YES.c_str());
 
                hwndButton = GetDlgItem(hwnd, IDABORT);
                SetWindowText(hwndButton, buttons.ABORT.c_str());
 
                hwndButton = GetDlgItem(hwnd, IDRETRY);
                SetWindowText(hwndButton, buttons.RETRY.c_str());
                break;
        }
 
        return CallNextHookEx(hook, nCode, wParam, lParam);
}
 
//перегружаем функцию MessageBox
int MessageBox(String message, String title, UINT type)
{
    int messageRes;
    hook = SetWindowsHookEx(
                WH_CBT,
                (HOOKPROC)HookProc,
                NULL,
                GetCurrentThreadId()
                );
    MessageBox(NULL, message.c_str(), title.c_str(), type);
    UnhookWindowsHookEx(hook);
    return messageRes;
}
 
void __fastcall TForm23::Button1Click(TObject *Sender)
{
    //задаём название кнопок
    buttons.OK = "Хорошо!";
    buttons.NO = "Нет, не надо!";
    buttons.CANCEL = "Да ну на фиг!";
    buttons.YES = "Ага!";
    buttons.ABORT = "Прервать";
    buttons.RETRY = "Повторить ещё разок!";
 
    //вызываем нашу функцию MessageBox
    MessageBox("Моё сообщение", "Сообщение", MB_OKCANCEL|MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
9
19.11.2010, 20:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2010, 20:59
Помогаю со студенческими работами здесь

Как сделать, чтобы из базы данных показывало jpeg-картинки?
Как сделать, что бы из базы данных показывало jpeg картинки, и может, что бы при нажатии на...

Как сделать, чтобы при resize показывало содержимое окна?
Использую Ubuntu 12.04, Unity. Подскажите, пожалуйста, как включить показ содержимого окна при...

Как сделать чтобы от одного ПК на 2 мониторох показывало 1 и тоже изображение?
Как сделать чтобы от одного ПК на 2 мониторох показывало 1 и тоже изображения . у меня видео...

MessageBox: Как сделать так, чтобы если окно модальное, при клике на родительское окно MessageBox мигал?
Здравия всем! Никак не найду нужный MB_*, как можно сделать так, чтобы если сделать MessageBox...

Часы: нужно, чтобы стрелки были жирные и время показывало точное
в этих часах нужно, чтобы стрелки были жирные и время показывало точное, а как сделать я...

Сделал в классе Triangle чтобы показывало вершины но что-то не выходит , подкоректируйте
Сделал в классе Triangle чтобы показывало вершины но что-то не выходит , подкоректируйте пожалуйста...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru