2015-02-06 2 views
0

Как создать кнопку с использованием класса CButton внутри области клиента.
Я только что попробовал, но элемент управления не отображается в клиентской области.Создание элемента управления в приложении MFC

код я использовал для создания кнопки

void CcontrolsView::OnDraw(CDC* pDC) 
{ 
CcontrolsDoc* pDoc = GetDocument(); 
ASSERT_VALID(pDoc); 
if (!pDoc) 
    return; 

CButton cb; 
cb.Create(BS_PUSHBUTTON,CRect(20,20,100,100),this,10000); 
// TODO: add draw code for native data here 
} 
+1

Пожалуйста, включите ваш код. В противном случае существует слишком много возможных проблем, и ваш вопрос будет закрыт. См. Http://stackoverflow.com/help/mcve – ryanyuyu

+0

Я не думаю, что вы хотите создать кнопку в обработчике OnDraw. Вероятно, вы получите много «мигания». – rrirower

+0

Можете ли вы предложить мне несколько шагов для создания кнопки в клиентской области .... – user3114430

ответ

-1

Вы должны построить новый CButton, а затем добавить его в диалог, установив его родителя или владельца (я забыл, какой - установить оба) и другие свойства, такие как разумное положение, а затем называть ShowWindow (SW_SHOW).

+0

[В окне может быть родитель или владелец, но не оба) (http://blogs.msdn.com/b/oldnewthing/archive /2010/03/15/9978691.aspx). – IInspectable

1

1 Не делайте этого в методе OnDraw(). Добавьте обработчик сообщений для WM_CREATE и вместо этого сделайте это там.

2 Не используйте объект на основе стека, чтобы создать кнопку. Я бы предложил добавить члена CButton в ваш класс вида m_Button (или что-то еще).

В вашем CcontrolsView метод :: OnCreate() добавить код, как:

m_Button.Create(BS_PUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(20,20,100,100),this,10000); 
+0

INT CtestView :: OnCreate (LPCREATESTRUCT lpCreateStruct) { \t, если (CView :: OnCreate (lpCreateStruct) == -1) \t \t возврата -1; \t // TODO: Добавьте свой специализированный код создания здесь \t // b1-> Создать (L "Hello", BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect (20,20,100,100), это, 10000); \t b1 = новый CButton(); \t b1-> Создать (L "Hello", BS_PUSHBUTTON, CRect (10,10,60,20), это 40000); \t возвращение 0; } – user3114430

Смежные вопросы