Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как сделать CBitmapButton в обычном диалоге?


Автор: RaP1D 15.10.2008, 11:37
Допустим создаю проект BBB...

Куда в нем вписать это?:
Код

CBitmapButton* pmyButton = new CBitmapButton();
pmyButton->Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, CRect(200,64,32,30), pParent, 1111);
pmyButton->LoadBitmaps(IDC_COPYRS, 0, 0, 0);


В CBBBDlg::OnInitDialog()  ??? И ещё, там у меня ошибка - pParent, не знаю че вписать туда, подскажите...

Пробовал в:
Код

CBBBDlg::CBBBDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CBBBDlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

вписать - ошибка при запуске!

Автор: Andrey44 15.10.2008, 11:47
Цитата(RaP1D @  15.10.2008,  11:37 Найти цитируемый пост)
И ещё, там у меня ошибка - pParent, не знаю че вписать туда, подскажите...

Код

pmyButton->Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, CRect(200,64,32,30), this, 1111);

Автор: RaP1D 15.10.2008, 17:57
this я тоже пробовал! Ошибка!

Тогда по другому: куда (в какие ф-ции) что вписывать? Если не затруднит, то скиньте пример диалогового окна с такой кнопкой...

Автор: voov 16.10.2008, 13:04
Цитата(RaP1D @  15.10.2008,  17:57 Найти цитируемый пост)
куда (в какие ф-ции) что вписывать? 

Все в OnInitDialog.
Цитата(RaP1D @  15.10.2008,  17:57 Найти цитируемый пост)
this я тоже пробовал! Ошибка!

ошибка какая?

Добавлено через 4 минуты и 13 секунд
еще попробуй без BS_OWNERDRAW

Автор: RaP1D 16.10.2008, 16:38
Цитата

ошибка какая?

Ммм перепутал... ошибки не было, но элемент не рисовался!

Заменил CRect(200,64,32,30) на CRect(200,64,100,100)  и о чудо, оно заработало!..
НО меня волнует следующее: как я понимаю 1 параметр - x, 2 - y, 3 - width, 4- height? Если так, то почему же, когда размер в редакторе ресурсов 32 на 30 не отображается при создании с таким же размером вручную? А если писать 50 и 50, то получается вообще ..опа (рисуется токо 20x20 пикселей картинки)!

Еще вопрос: есть Static с флагом SS_NOTIFY и он обрабатывается функцией при нажатии на него. А как можно сделать, чтобы при наводке на него курсор менялся на руку?

Автор: voov 17.10.2008, 09:52
Цитата(RaP1D @  16.10.2008,  16:38 Найти цитируемый пост)
как я понимаю 1 параметр - x, 2 - y, 3 - width, 4- height?

не совсем. 1й,2й действительно х,у (верхней левой точки), но 3й4й тоже х,у (но нижней правой точки). читай мсдн про црект, много вопросов отпадут сами собой.

Автор: RaP1D 17.10.2008, 19:57
Цитата(voov @ 17.10.2008,  09:52)
Цитата(RaP1D @  16.10.2008,  16:38 Найти цитируемый пост)
как я понимаю 1 параметр - x, 2 - y, 3 - width, 4- height?

не совсем. 1й,2й действительно х,у (верхней левой точки), но 3й4й тоже х,у (но нижней правой точки). читай мсдн про црект, много вопросов отпадут сами собой.

Почитал я по CRect и все раво в непонятках...
Допустим есть диалог 200x200. Я делаю так:
Код

CBitmapButton* pmyButton = new CBitmapButton();
pmyButton->Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, CRect(100,100,150,150), this, 1111);
pmyButton->LoadBitmaps(IMG1, 0, 0, 0);

По идеи должна быть кнопка 50x50, да? НО во 1 - она рисуется не в координатах 100x100, а во 2 - ее размер не 50x50! В CRect единицы измерения другие чтоли? Не такие как в редакторе ресурсов?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)