Настройка видимости командной кнопки в VC++ 6.0?

Как я могу сделать кнопку команды в моем диалоговом окне VC++ 6.0 видимой или невидимой при загрузке?


person Community    schedule 03.11.2008    source источник
comment
Это не очень ясно. Вы говорите о команде menu или о кнопке в самом диалоговом окне?   -  person OJ.    schedule 03.11.2008


Ответы (4)


В редакторе ресурсов после выбора кнопки вы можете увидеть ее свойства в окне свойств. Здесь вы можете установить для свойства visible значение true/false. (при условии, что эта функция присутствует в 6.0 - сейчас я использую 2003 и не могу вспомнить, присутствовала ли она раньше в 6.0)

Добавить переменную CButton

Если вы хотите динамически изменять видимость кнопок во время загрузки, добавьте переменную для кнопки с помощью мастера классов MFC. (вам повезло с этим - этот мастер, кажется, был удален из Visual Studio .NET)

Переопределить CDialog InitDialog

Затем переопределите функцию initdialog вашего диалогового окна, а затем, после успешного вызова базовой функции InitDialog, установите для свойства showwindow кнопок значение SW_HIDE / перед отображением диалогового окна.

Код

BOOL CMyDialog::OnInitDialog() 
   {
   CDialog::OnInitDialog();

   if (ConditionShow)
       m_MyButton.ShowWindow(SW_SHOW);
   else
       m_MyButton.ShowWindow(SW_HIDE);

   return TRUE;
   }
person computinglife    schedule 03.11.2008
comment
const int cmdShow = ConditionShow ? SW_SHOW : SW_HIDE; m_MyButton.ShowWindow (cmdShow); - person Vincent Robert; 03.11.2008

Вы также можете сделать это без добавления переменной CButton - просто вызовите

В методе OnInitDialog окна, содержащего кнопку/элемент управления, введите код:

CWnd *wnd = GetDlgItem (YOUR_RESOURCE_NAME_OF_THE_BUTTON) wnd->ShowWindow(SW_SHOW) или SW_HIDE

person Tim    schedule 03.11.2008
comment
Еще короче: GetDlgItem(IDC_MY_CTRL)->ShowWindow(SW_HIDE); - person OneWorld; 23.04.2020

Что именно вы подразумеваете под «командной кнопкой»?

В любом случае вам нужно получить дескриптор кнопки, а затем вызвать функцию ShowWindow:

BOOL prevState = ShowWindow( itemHandle, SW_HIDE );
person arul    schedule 03.11.2008
comment
Не удается разрешить этот метод. Пожалуйста, опубликуйте документы, если вы действительно думаете, что он существует — OneWorld только что - person OneWorld; 23.04.2020

Используйте только

ShowDlgItem(Your_DLG_ITEM_ID,1); // visible = true   
ShowDlgItem(Your_DLG_ITEM_ID,0); // visible = false
person Mahbub Alam    schedule 05.06.2017
comment
Не удается разрешить этот метод. Пожалуйста, опубликуйте документы, если вы действительно думаете, что они существуют. - person OneWorld; 23.04.2020