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

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

18.06.2013, 00:08. Показов 1346. Ответов 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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru