孙鑫VC++深入详解:Lesson3
2013-07-03 13:11
232 查看
问题: 如果创建2个button则会运行时出错.
在Win32中,直接用CreateWindow()创建2个buttons时,只要ID不同没有任何任何问题, 但是这里就是不行.
m_Btn.Create("按钮A",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123); // 创建按钮123
m_Btn.Create("按钮B",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(100,100,200,200),this,12);//同时创建按钮12 Failed.
在Win32中,直接用CreateWindow()创建2个buttons时,只要ID不同没有任何任何问题, 但是这里就是不行.
m_Btn.Create("按钮A",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123); // 创建按钮123
m_Btn.Create("按钮B",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(100,100,200,200),this,12);//同时创建按钮12 Failed.
// Lesson3View.cpp : implementation of the CLesson3View class // #include "stdafx.h" #include "Lesson3.h" #include "Lesson3Doc.h" #include "Lesson3View.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLesson3View IMPLEMENT_DYNCREATE(CLesson3View, CView) BEGIN_MESSAGE_MAP(CLesson3View, CView) //{{AFX_MSG_MAP(CLesson3View) ON_WM_CREATE() ON_WM_SIZE() ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLesson3View construction/destruction CLesson3View::CLesson3View() { // TODO: add construction code here } CLesson3View::~CLesson3View() { } BOOL CLesson3View::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CLesson3View drawing void CLesson3View::OnDraw(CDC* pDC) { CLesson3Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CLesson3View printing BOOL CLesson3View::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CLesson3View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CLesson3View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CLesson3View diagnostics #ifdef _DEBUG void CLesson3View::AssertValid() const { CView::AssertValid(); } void CLesson3View::Dump(CDumpContext& dc) const { CView::Dump(dc); } CLesson3Doc* CLesson3View::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLesson3Doc))); return (CLesson3Doc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CLesson3View message handlers // 增加Create消息响应函数 OnCreate int CLesson3View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here // m_Btn.Create("按钮A",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123); // 创建按钮123 m_Btn.Create("按钮B",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(100,100,200,200),this,12);//同时创建按钮12 Failed. // m_Btn.ShowWindow(SW_SHOWNORMAL); // m_Btn.UpdateData(); return 0; } // Size消息响应 void CLesson3View::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here static int flag =0; if(flag==0) { // m_Btn.Create("按钮B",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,CRect(100,100,200,200),this,1234); flag =1; } } // left button 消息响应 void CLesson3View::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default static int flag =0; if(flag==0) { // m_Btn.Create("按钮C",WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,CRect(210,210,300,300),this,12345); flag =1; } CView::OnLButtonDown(nFlags, point); }
相关文章推荐
- 孙鑫VC++深入详解:Lesson7 Part1---模态对话框,非模态对话框,静态文本控件的访问
- 孙鑫VC++深入详解:Lesson9 Part8---给程序加个启动画面
- 孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?
- 孙鑫VC++深入详解:Lesson7 Part3---对话框伸缩功能的实现
- 孙鑫VC++深入详解:Lesson7 Part4 ---对话框上各个控件之间循环接受回车键获得焦点
- 孙鑫VC++深入详解:Lesson1
- 孙鑫VC++深入详解:Lesson8 Part1---"逃跑"按钮的实现
- 孙鑫VC++深入详解:Lesson8 Part2---属性表单
- 孙鑫VC++深入详解:Lesson5 Part1 文本插入符Caret,位图插入符,窗口重绘
- 孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?
- 孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath
- 孙鑫VC++深入详解:Lesson9 Part1---修改应用程序窗口
- 孙鑫VC++深入详解:Lesson5 Part3 文字输入: 处理回车键,空格键,CFont的使用
- 孙鑫VC++深入详解:Lesson9 Part2---修改窗口光标,图表,背景
- 孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息
- 孙鑫VC++深入详解:Lesson9 Part3---模拟动画图标
- 孙鑫VC++深入详解:Lesson9 Part4---工具栏编程
- 孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu
- 孙鑫VC++深入详解:Lesson9 Part5---状态栏编程
- 孙鑫VC++深入详解:Lesson6 Part4 ---CMenu 类的应用:添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu