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

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

Войти
Регистрация
Восстановить пароль
 
ANNG
0 / 0 / 0
Регистрация: 21.10.2015
#1

Диалоговые окна. - C++

15.06.2011, 19:47. Просмотров 874. Ответов 0
Метки нет (Все метки)

Подскажите ,почему открывается только одно немодальное диалоговое окно.
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <windows.h>
#include "resource.h"
 
const char szClassName[]="WinLabClass\0";
 
HINSTANCE hInstance=0;
HWND hDlg=(HWND)-1;
 
INT_PTR CALLBACK ModalProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK ModeLessProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    HWND hWnd=0;
    WNDCLASSA WndClass;
    MSG Msg;
 
    WndClass.lpszClassName=szClassName; 
    WndClass.hInstance=hInstance;
    WndClass.lpfnWndProc=WndProc; 
    WndClass.hCursor=LoadCursor(NULL, IDC_ARROW); 
    WndClass.hIcon=LoadIcon(0, IDI_WINLOGO); 
    WndClass.lpszMenuName=MAKEINTRESOURCEA(IDR_MENU); 
    WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
    WndClass.style=CS_HREDRAW | CS_VREDRAW;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
 
    if(RegisterClassA(& WndClass) == FALSE)
        return 0;
 
    hWnd=CreateWindowA(szClassName, 0, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 
                        CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); 
    ShowWindow(hWnd, SW_SHOW);
    SetTimer(hWnd, 1, 1000, NULL);
 
    while(GetMessageA(& Msg, hWnd, 0, 0) != FALSE){ 
        if(IsWindow(hDlg) == FALSE || IsDialogMessage(hDlg, & Msg) == FALSE){
            TranslateMessage(& Msg); 
            DispatchMessage(& Msg); 
        }
    }
    
    return(Msg.wParam);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hDC=0;
    PAINTSTRUCT ps;
    static RECT Rect;
    static int t=0;
    static char mass[0x10]={0};
 
    switch(message)
    { 
    case WM_TIMER:
        t++;
        itoa(t, mass, 10);
        hDC=GetDC(hWnd);
        DrawTextA(hDC, mass, -1, & Rect, DT_CENTER | DT_VCENTER);
        ReleaseDC(hWnd, hDC);
        break;
    case WM_PAINT:
        GetClientRect(hWnd, & Rect);
        hDC=BeginPaint(hWnd,& ps);
        itoa(t, mass, 10);
        DrawTextA(hDC, mass, -1, & Rect, DT_CENTER | DT_VCENTER);
        EndPaint(hWnd,& ps);
    break;
    case WM_COMMAND:
        if(LOWORD(wParam) == ID_MES1)
            MessageBoxA(hWnd, "Message 1 was called.\0", "Info...\0", MB_OK | MB_ICONINFORMATION);
        else if(LOWORD(wParam) == ID_MES2)
            MessageBoxA(hWnd, "Message 2 was called.\0", "Info...\0", MB_OK | MB_ICONINFORMATION);
        break;
    case WM_LBUTTONUP:
        DialogBoxParamA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG), hWnd, ModalProc, NULL);
        break;
    case WM_RBUTTONUP:
        if(IsWindow(hDlg) == FALSE){
            hDlg=CreateDialogA(hInstance, MAKEINTRESOURCEA(IDD_LESS), hWnd, ModeLessProc);
            ShowWindow(hDlg, SW_SHOW);
        }
        break;
    case WM_DESTROY:
        KillTimer(hWnd, 1);
        PostQuitMessage(0);
        break;
    default: 
        break;
    }
    
    return(DefWindowProc(hWnd, message, wParam, lParam));
}
 
INT_PTR CALLBACK ModalProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
    case WM_INITDIALOG:
        SetWindowTextA(hDlg, "Modal Dialog\0");
        return TRUE;
        break;
    case WM_COMMAND:
        if(LOWORD(wParam) == ID_OK)
            EndDialog(hDlg, ID_OK);
        break;
    case WM_CLOSE:
        EndDialog(hDlg, ID_OK);
        break;
    default:
        break;
    }
 
    return FALSE;
}
 
INT_PTR CALLBACK ModeLessProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
    case WM_INITDIALOG:
        SetWindowTextA(hDlg, "Modeless Dialog\0");
        return TRUE;
        break;
    case WM_COMMAND:
        if(LOWORD(wParam) == ID_OK)
            DestroyWindow(hDlg);
        break;
    case WM_CLOSE:
        DestroyWindow(hDlg);
        break;
    default:
        break;
    }
 
    return FALSE;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 19:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Диалоговые окна. (C++):

Не вижу окна с кодом (нет окна редактирования): найти причины странного поведения программы - C++
Создаю проект, а кроме синего экрана ничего больше нет, не знаю, что делать. Прочла здесь же про образователь решений(типа должен быть...

Почему авторы диалоговых окон стараются сделать свои окна максимально похожими на стандартные окна? - C++
Начал рассматривать множество программ на С++ и заметил, что программисты стараются сделать почти все диалоговые окна максимально похожими...

поиск Handle окна, зная ControlId окна - C++
вопрос по сабжу

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна" - C++
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что бы окно не сворачивалось? Чем это...

Подскажите функцию для получения HWND текущего окна, или по названию окна (для экспорта в VFP6) - C++
пусто

Диалоговые окна - C++ WinAPI
Я новичок в Win32 API, как впрочем и в С++. У меня уже который час не получается создать простейшее окно с кнопкой, которая на щелчок будет...

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

Диалоговые окна! - Программирование Android
Мужики, подскажите, как сделать такое диалоговое окно, в котором бы были поля ввода? Диалоговые окна создаю легко и работаю с ними! А вот...

Диалоговые окна - Delphi
не понимаю как это сделать! помогите пожалуйста вот задание На форму поместить текстовое поле и набрать в нем текст. При нажатии любой...

Диалоговые окна. - Delphi
Вывести диалоговое окно общего назначения с кнопками Yes, No, Cancel, заголовком окна «Проверка» и обеспечить проверку нажатия клавиши Yes....

Диалоговые окна - MS Excel
Здравствуйте. Уважаемые форумчане! Хочу попросить Вашей помощи с созданием встроенных диалоговых окон в Excel'e при помощи Visual Basic....


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

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

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