Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 292

Скрыть одно, отобразить другое

30.09.2012, 21:57. Показов 1084. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
//В рабочей области отображена кнопка с надписью "Нажмите правую клавишу мыши над рабочей областью".
//После нажатия правой клавиши мыши кнопка скрывается и отображается многострочный редактор с текстом 
//"Нажмите левую клавишу мыши над рабочей областью". 
//После нажатия левой клавиши мыши вернуться к исходному состоянию.
 
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");
HINSTANCE hInst;
BOOL RC(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//функция оконной процедуры
#define ID_BUTTON   3000
#define ID_EDIT 2000
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)  ///главная функция
{
    hInst=hInstance;
    if(!RC(WndProc,szWindowClass,COLOR_WINDOW)) return FALSE;
       //создаём окно
 
HWND hWnd = CreateWindow(
    szWindowClass,
    szTitle,
    WS_OVERLAPPEDWINDOW|WS_VISIBLE,
    CW_USEDEFAULT, CW_USEDEFAULT,
    500, 500,
    NULL,
    NULL,
    hInstance,
    NULL
);
 
if (!hWnd)
{
    MessageBox(NULL,
        _T("Call to CreateWindow failed!"),
        _T("Win32 Guided Tour"),
        NULL);
 
    return FALSE;
}
 
//отображаем окно
 
ShowWindow(hWnd,
    nCmdShow);
UpdateWindow(hWnd);
 
//цикл обработки сообщений отправляемых ОС
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
 
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)//добавляем функциональные возможности
{
    static HWND hButton; 
    HWND hEdit = {0};
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR greeting[] = _T("Zaharova Anna");
    TCHAR but[] = _T("BUTTON");
    TCHAR butt[] = _T("Нажмите правую клавишу мыши над рабочей областью");
    TCHAR text[] = _T("edit");
    TCHAR textt[] = _T("Нажмите левую клавишу мыши над рабочей областью");
    switch (message)
    {
        
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
                TextOut(hdc,
                    5, 5,
                    greeting, _tcslen(greeting));
            EndPaint(hWnd, &ps);
 
        break;
        
 
        case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
        case WM_CREATE:
        {   hButton=CreateWindow(but, butt, WS_VISIBLE|WS_CHILD,0,0,400,50,hWnd,(HMENU)ID_BUTTON,hInst,NULL);
        hEdit = CreateWindow(text, textt, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 30, 30, 230,300, hWnd, (HMENU) ID_EDIT, hInst, NULL);
        ShowWindow(hEdit,SW_HIDE);
        return 0;
        }
        
        case WM_RBUTTONDOWN:
            ShowWindow(hEdit,SW_RESTORE);
            ShowWindow(hButton,SW_HIDE);
            break;
        case WM_LBUTTONDOWN:
            //hEdit = CreateWindow(text, textt, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 30, 30, 230,400, hWnd, (HMENU) ID_EDIT, hInst, NULL);
            ShowWindow(hButton,SW_RESTORE);
            ShowWindow(hEdit,SW_HIDE);
            break;
        default:return DefWindowProc(hWnd, message, wParam, lParam);break;
    }
return 0;
}
 
 
BOOL RC(WNDPROC WndProc, LPCTSTR Name, UINT brBackground)
{
    
WNDCLASS wc = { 0 }; 
    wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
 
    wc.lpfnWndProc=WndProc; //указывает на функцию окна
    wc.hInstance=hInst; //указывает на дескриптор текущего приложения
    wc.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_APPLICATION)); //иконка
    wc.hCursor=LoadCursor(NULL, IDC_ARROW); //курсор
    wc.hbrBackground=(HBRUSH)( brBackground +1); //  задает дескриптор кисти закрашивания фона окна
    wc.lpszMenuName=NULL; // имя 
    wc.lpszClassName=Name; //имя класса окон
return (RegisterClass(&wc)!=0);
}
Почему-то теперь редактор вообще не отображается =(

Добавлено через 29 минут
Ну помогите пожалуйста, уже и так и эдак пробовала, не получается то, что нужно
Сейчас смотрю - вроде отличный вариант, а почему редактор не отображается - не пойму
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2012, 21:57
Ответы с готовыми решениями:

Скрыть и Отобразить другую кнопку
Здравствуйте,столкнулся с проблемой.Задание звучит так: на экране есть 5 кнопок(6 кнопка - выход).нажатие на одну из 5 кнопок скрывает...

Как "вшить" одно окно в другое?
Допустим, если главное окно, в углу которого должна отображаться статистическая информация. Хотелось бы эту статическую информацию выводить...

Как пересчитать одно в другое?
b|g 0|0000000000 1|0000000001 2|0000000011 3|0000000111 4|0000000101 5|0000000100 6|0000001100 7|0000001101 8|0000001111

2
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
01.10.2012, 03:23
Пробуй дальше. 72 строка, что ты чудишь...
0
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 292
01.10.2012, 10:34  [ТС]
Цитата Сообщение от Digit@ll Посмотреть сообщение
Пробуй дальше. 72 строка, что ты чудишь...
просто если так не делать то прога вылетает из-за того что рекдактор не проинициализован. Если делать инициализацию в одном из кейсов например в WM_RBUTTONDOWN: то всё равно будет ругаться, так как если я нажму сначала левую кнопку мыши для удаления - удалять будет просто нечего. а если я и там и там создам, то получится он 2 создаст объекта =( сначала для правой кнопки мыши потом для левой и один из них удалит.
если я создаю объект сразу в create или вообще до switch то в случае с create ругается на инициализацию в случае с switch зависает намертво так и не запустившись

Добавлено через 2 минуты
и почему-то тоже самое для кнопки (созадние в create, а потом просто её скрывание и появление) работает, а для редактора - не хочет

Добавлено через 1 час 33 минуты
Проблема решена, тему можно закрыть. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2012, 10:34
Помогаю со студенческими работами здесь

Заменить в тексте одно слово на другое
в текстовом файле содержащий код программы на языке С, заменить все вхождения одного заданного пользователем идентификатора на другой

Заменить в тексте одно словосочетание на другое
Здравствуйте,помогите пожалуйста сделать программу которая в любом (не имеет значения в каком тексте) будет меня например словосочетание...

Разделить одно длинное число на другое
Здравствуйте. Имеется два длинных числа, заданные в две переменных типа char. Нужно разделить одно число на другое и записать ответ в...

Наложить одно изображение на другое с заполнением
Неподскажите, как сделать так чтобы изображение накладывалось на другое пока оно не закончиться?Borland C++

Замена слова одно на другое с fgets
Добрый день. Нужна помощь. Незнаю как доделать. Надо из zod в zod1 перенести все данные, потом там заменить а17 на troleibusas и записать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru