Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133

Пропадает кнопка

18.06.2013, 00:08. Показов 1358. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ДОбрый вечер!
Есть приложение на С++, с использованием MFC.
Задание - при нажатии на кнопку она должна изменять размер.

Так вот, компиляция и постороение проходит без ошибок, но в приложении при нажатии она исчезает.
может что по коду подскажите??
Очень надо..


Фрагмент самого события..

C++
1
2
3
4
5
6
7
8
9
void CprogDlg::OnBnClickedButton1()
{
    // TODO: добавьте свой код обработчика уведомлений
    int Width  = pRect.right - pRect.left;
    int Height = pRect.top - pRect.bottom;
    int NewHeight = Height + 1;
    int NewWidth = Width + 1;
    button1.MoveWindow(pRect.right,pRect.top,NewWidth,NewHeight,true);
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2013, 00:08
Ответы с готовыми решениями:

Кнопка свертывания + кнопка справки (MFC)
Обшарил огромные просторы инета, так и не нашел VS MFC Диалоговое окно, как добавить одновременно и кнопки min\max справа вверху для...

Нужна кнопка, при нажатии на которую весь интерфейс пропадает
Вообще нужно сделать так: на форме есть кнопка, при нажатии на неё весь интерфейс пропадает, а кнопка остаётся на рабочем столе, про...

Кнопка BS_OWNERDRAW или кнопка со своей картинкой
Есть код, с помощью которого можно менять картинку при нажатии, при фокусе { // ownerdraw button static HBITMAP no_active; ...

11
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 00:27
Цитата Сообщение от Linkfanka Посмотреть сообщение
button1.MoveWindow(pRect.right,pRect.top ,NewWidth,NewHeight,true);
pRect.right может все таки pRect.left
и кто такой pRect?
где ты его инициализируешь?
1
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133
18.06.2013, 00:30  [ТС]
Вот где инициализирую...
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
// progDlg.h : файл заголовка
//
 
#pragma once
#include "afxwin.h"
 
 
// диалоговое окно CprogDlg
class CprogDlg : public CDialogEx
{
// Создание
public:
    RECT pRect;
    CprogDlg(CWnd* pParent = NULL); // стандартный конструктор
 
// Данные диалогового окна
    enum { IDD = IDD_PROG_DIALOG };
 
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // поддержка DDX/DDV
 
 
// Реализация
protected:
    HICON m_hIcon;
 
    // Созданные функции схемы сообщений
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
public:
    CButton button1;
    afx_msg void OnBnClickedButton1();
};
А с pRect.left сейчас попробую...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 00:32
может вот так попробуешь
C++
1
2
3
CRect rct;
button1.GetWindowRect(&rct)
button1.MoveWindow(rct.left,rct.top,rct.Width()+1,rct.Height()+1,true);
Добавлено через 56 секунд
Цитата Сообщение от Linkfanka Посмотреть сообщение
RECT pRect;
ну и???
значение то у этого прямоугольника какие?
1
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133
18.06.2013, 01:58  [ТС]
все равно исчезает с формы...

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
ну и???
значение то у этого прямоугольника какие?
В примере, на основе которого я переделала прог-у было так
C++
1
2
3
4
5
6
7
8
9
void CMfcButtonDlg::OnOK() 
{
    // TODO: Add extra validation here
    int Width  = pRECT.right - pRECT.left;
    int Height = pRECT.bottom - pRECT.top;
    int NewHeight = Height + 10 + rand()%80;
    m_ok.MoveWindow(pRECT.left,10,Width,NewHeight,true);
    //CDialog::OnOK();
}
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 01:58
Цитата Сообщение от Linkfanka Посмотреть сообщение
все равно исчезает с формы...
в смысле ?
ты мой код ввел?
Цитата Сообщение от ValeryS Посмотреть сообщение
CRect rct;
button1.GetWindowRect(&rct)
button1.MoveWindow(rct.left,rct.top,rct. Width()+1,rct.Height()+1,true);
1
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133
18.06.2013, 01:59  [ТС]
Да, вводила. Кнопка просто исчезает с формы при нажатии на нее!
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 02:12
поставь точку останова (F9) на
button1.MoveWindow(rct.left,rct.top,rct. Width()+1,rct.Height()+1,true);
и запусти программу
нажми на кнопку прога остановится на этой строчке и посмотри какие значения лежат в rct
1
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133
18.06.2013, 02:15  [ТС]
+ &rct 0x0032efe4 {top=268 bottom=291 left=640 right=715} CRect *
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 02:19
Я понял в чем ошибка координаты не привели к окну
если подгонишь свое окно в левый верхний угол экрана то пропадать не должна

вот исправленный вариант

C++
1
2
3
4
CRect rct;
button1.GetWindowRect(&rct);
ScreenToClient(&rct);
button1.MoveWindow(rct.left,rct.top,rct.Width()+1,rct.Height()+1,true);
или можно так
C++
1
2
3
4
5
CRect rct;
button1.GetClientRect(&rct);
button1.ClientToScreen(&rct);
ScreenToClient(&rct);
button1.MoveWindow(rct.left,rct.top,rct.Width()+1,rct.Height()+1,true);
1
 Аватар для Linkfanka
4 / 4 / 0
Регистрация: 29.03.2011
Сообщений: 133
18.06.2013, 02:27  [ТС]
Отлчино! Все получилось!
Спасибо огромное!!!

А не подскажите, что значит эта строчка?

Цитата Сообщение от ValeryS Посмотреть сообщение
ScreenToClient(&rct);
Добавлено через 4 минуты
все, уже нашла))
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
18.06.2013, 02:29
Цитата Сообщение от Linkfanka Посмотреть сообщение
А не подскажите, что значит эта строчка?
http://www.vsokovikov.narod.ru... client.htm
обратная функция
http://www.vsokovikov.narod.ru... screen.htm
C++
1
2
3
4
5
6
//возмем прямогольник кнопки(размеры)
button1.GetClientRect(&rct);
//приведем их к экранным координатам
button1.ClientToScreen(&rct);
//приведем к клиентским координатам нашего окна
ScreenToClient(&rct);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2013, 02:29
Помогаю со студенческими работами здесь

Пропадает кнопка, а вообще-то не должна
Здравствуйте. По нажатию кнопки должна показываться или скрываться галерея, но после каждого обновления страницы пропадает сама кнопка....

Пропадает кнопка при клике на другие
Когда кликаешь на кнопках, при том что каждая выполняет свою работу без пробем, есть одно но ...- первая кнопка пропадает при клинанье на...

Пропадает кнопка при работе с файлом
Всем доброго времени суток! У меня случилась такая проблема, при работе непосредственно с готовым приложением(*.exe) начали пропадать...

Пропадает кнопка громкости из панели задач
В панели задач кнопка громкости появляется не после каждой перезагрузки. Как ее там закрепить намертво, чтобы не пропадала? Спасибо.

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru