新手求问MFC的2个有关问题
新手求问MFC的2个问题
问题一:如何在创建CButton类 的 控件的时候就指定其在右下角?
我尝试用了GetWindowRect和GetClientRect ,都不行。然后我再在View类中添加的OnCreate函数
//原型这样的int Ctets2View::OnCreate(LPCREATESTRUCT lpCreateStruct);
但是这里面的参数我调用lpCreateStruct->cx 的值都是0啊。是不是因为我创建这个控件的时候 那个窗口还是没有被创建的啊?如果是这样,该怎么实现呢?
问题二:
如果我要对按钮发送的WM_COMMAND消息进行判断, 我该怎么添加OnCommand函数呢?View类和MainFrm类向导里面都没有,手动添加的话,我搜索WindowProc,它居然只出来原型,点 "转到定义"没反应。。。。如果手工添加 , 该怎么找到WindowProc函数呢?
多谢大神,我最近在学sdk,对MFC的一些封装不是很了解,求大神指点
------解决方案--------------------
1:重载 CView::OnInitialUpdate,在这里创建按钮
2:添加虚函数 virtual BOOL OnCommand( WPARAM wParam, LPARAM lParam );
windowproc的话 响应 WM_COMMAND
------解决方案--------------------
问题一:在VIEW窗口动态按钮
void CTestSDIView::OnInitialUpdate()//在VIEW窗口的初始化函数中创建你的按钮
{
CView::OnInitialUpdate();
CRect m_rect;
GetClientRect(&m_rect);
CRect rect_btn(m_rect.right-100,m_rect.bottom-100,m_rect.right,m_rect.bottom);//以创建100*100大小为例
CButton* pbtn = new CButton;
CString title = "我的按钮";
pbtn->Create(title,BS_FLAT,rect_btn,this,IDC_BUTTON1);
pbtn->ShowWindow(SW_SHOW);
}
PS:IDC_BUTTON1需要在Resource.h头文件中声明
#define IDC_BUTTON1 101
问题一:为动态创建的按钮添加消息响应函数(自定义消息映射)
step1:在TestSDIView.h头文件中声明消息映射函数
afx_msg void ResponseButton();
step2:设定映射关系
BEGIN_MESSAGE_MAP(CTestSDIView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_COMMAND(IDC_BUTTON1, &CTestSDIView::ResponseButton)
END_MESSAGE_MAP()
step3:实现消息响应函数
void CTestSDIView::ResponseButton()
{
AfxMessageBox("按钮响应");
}
------解决方案--------------------
LZ需要淡定点,没有一蹴而就的东西:
1.前文已经提醒你了IDC_BUTTON1这个宏需要事先声明,你注意没有?(编译器已经告诉你错误了)
“IDC_BUTTON1”: 未声明的标识符
2.自定义的那个消息响应函数afx_msg void ResponseButton()的类型是public
问题一:如何在创建CButton类 的 控件的时候就指定其在右下角?
我尝试用了GetWindowRect和GetClientRect ,都不行。然后我再在View类中添加的OnCreate函数
//原型这样的int Ctets2View::OnCreate(LPCREATESTRUCT lpCreateStruct);
但是这里面的参数我调用lpCreateStruct->cx 的值都是0啊。是不是因为我创建这个控件的时候 那个窗口还是没有被创建的啊?如果是这样,该怎么实现呢?
问题二:
如果我要对按钮发送的WM_COMMAND消息进行判断, 我该怎么添加OnCommand函数呢?View类和MainFrm类向导里面都没有,手动添加的话,我搜索WindowProc,它居然只出来原型,点 "转到定义"没反应。。。。如果手工添加 , 该怎么找到WindowProc函数呢?
多谢大神,我最近在学sdk,对MFC的一些封装不是很了解,求大神指点
------解决方案--------------------
1:重载 CView::OnInitialUpdate,在这里创建按钮
2:添加虚函数 virtual BOOL OnCommand( WPARAM wParam, LPARAM lParam );
windowproc的话 响应 WM_COMMAND
------解决方案--------------------
问题一:在VIEW窗口动态按钮
void CTestSDIView::OnInitialUpdate()//在VIEW窗口的初始化函数中创建你的按钮
{
CView::OnInitialUpdate();
CRect m_rect;
GetClientRect(&m_rect);
CRect rect_btn(m_rect.right-100,m_rect.bottom-100,m_rect.right,m_rect.bottom);//以创建100*100大小为例
CButton* pbtn = new CButton;
CString title = "我的按钮";
pbtn->Create(title,BS_FLAT,rect_btn,this,IDC_BUTTON1);
pbtn->ShowWindow(SW_SHOW);
}
PS:IDC_BUTTON1需要在Resource.h头文件中声明
#define IDC_BUTTON1 101
问题一:为动态创建的按钮添加消息响应函数(自定义消息映射)
step1:在TestSDIView.h头文件中声明消息映射函数
afx_msg void ResponseButton();
step2:设定映射关系
BEGIN_MESSAGE_MAP(CTestSDIView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_COMMAND(IDC_BUTTON1, &CTestSDIView::ResponseButton)
END_MESSAGE_MAP()
step3:实现消息响应函数
void CTestSDIView::ResponseButton()
{
AfxMessageBox("按钮响应");
}
------解决方案--------------------
LZ需要淡定点,没有一蹴而就的东西:
1.前文已经提醒你了IDC_BUTTON1这个宏需要事先声明,你注意没有?(编译器已经告诉你错误了)
“IDC_BUTTON1”: 未声明的标识符
2.自定义的那个消息响应函数afx_msg void ResponseButton()的类型是public