高手们,请讲解下MFC中各种常用消息的调用顺序
高手们,请教几个问题:1.请讲解下MFC中各种常用消息(如WM_CHAR、WM_PAINT、WM_DARW、WM_COMMAND、WM_CREATE、WM_SIZE等等)...
高手们,请教几个问题:
1.请讲解下MFC中各种常用消息(如WM_CHAR、WM_PAINT、WM_DARW、WM_COMMAND、WM_CREATE、WM_SIZE等等)的调用顺序,最好举例说明,越详细越好
2.有时候不知道下一步该怎么做,比如画图函数,一般定义两支画笔,最后要把系统原始的画笔给还原回去,但当时我就不知道这个。这种类似的情况还很多,请问以后若是遇到这种问题时该怎么办?
谢谢各位了 展开
1.请讲解下MFC中各种常用消息(如WM_CHAR、WM_PAINT、WM_DARW、WM_COMMAND、WM_CREATE、WM_SIZE等等)的调用顺序,最好举例说明,越详细越好
2.有时候不知道下一步该怎么做,比如画图函数,一般定义两支画笔,最后要把系统原始的画笔给还原回去,但当时我就不知道这个。这种类似的情况还很多,请问以后若是遇到这种问题时该怎么办?
谢谢各位了 展开
4个回答
展开全部
1 有的消息本来就无序,WM_CHAR 和WM_KEYDOWN, WM_NCCREATE和WM_CREATE一类消息间,在一定的时间内有序,详见MSDN文档或相关书籍例如:
Programing Windows by Charles Petzold
Programing with Microsoft Visual C++.Net Core Reference By George Shapherd...
"Shapherd" 呵呵,,哥哥不由想起使命召唤6里面那个大坏蛋
2 你就当你不知道,然后看程序会怎么表现:假如你没有把默认的笔选回去,那么你画完圆后再画直线,直线的颜色可能(依赖于绘制下个物体时使用的设备上下文的状态,当前的上下文可能已经被自动重建了)会和圆一样,如果这不影响你的绘制逻辑,你就难得管。
不过你感觉不爽,你肯定会查到SelectObject这个函数来置换当前的画笔,当你顺着MSDN往下读的时候,你会发现下面一段话:
This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object.
An application cannot select a bitmap into more than one DC at a time.
ICM: If the object being selected is a brush or a pen, color management is performed.
这段话将告诉你一切。。。。。。。
3 嘎嘎,,你现在是不是感觉到中学的英语老师是那么的可爱,,,,,,,
Programing Windows by Charles Petzold
Programing with Microsoft Visual C++.Net Core Reference By George Shapherd...
"Shapherd" 呵呵,,哥哥不由想起使命召唤6里面那个大坏蛋
2 你就当你不知道,然后看程序会怎么表现:假如你没有把默认的笔选回去,那么你画完圆后再画直线,直线的颜色可能(依赖于绘制下个物体时使用的设备上下文的状态,当前的上下文可能已经被自动重建了)会和圆一样,如果这不影响你的绘制逻辑,你就难得管。
不过你感觉不爽,你肯定会查到SelectObject这个函数来置换当前的画笔,当你顺着MSDN往下读的时候,你会发现下面一段话:
This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object.
An application cannot select a bitmap into more than one DC at a time.
ICM: If the object being selected is a brush or a pen, color management is performed.
这段话将告诉你一切。。。。。。。
3 嘎嘎,,你现在是不是感觉到中学的英语老师是那么的可爱,,,,,,,
展开全部
好像LZ是要问是什么函数调用了MessageBox(...)吧?
-------------------------------------------
BOOL CNopanleDoc::CanCloseFrame(CFrameWnd* pFrame)
{
// TODO: Add your specialized code here and/or call the base class
if(this->IsModified())//判断文件是否被修改过
{
AfxMessageBox("将这一语句替换成你所要的操作");
this->SetModifiedFlag(false);//不弹出询问
}
return CDocument::CanCloseFrame(pFrame);
}
-------------------------------------------
在工工程名Doc.cpp处右击鼠标,选择建立类向导,添加CanCloseFrame,将里面的内容替换成上面的内容就行了
-------------------------------------------
BOOL CNopanleDoc::CanCloseFrame(CFrameWnd* pFrame)
{
// TODO: Add your specialized code here and/or call the base class
if(this->IsModified())//判断文件是否被修改过
{
AfxMessageBox("将这一语句替换成你所要的操作");
this->SetModifiedFlag(false);//不弹出询问
}
return CDocument::CanCloseFrame(pFrame);
}
-------------------------------------------
在工工程名Doc.cpp处右击鼠标,选择建立类向导,添加CanCloseFrame,将里面的内容替换成上面的内容就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像LZ是要问是什么函数调用了MessageBox(...)吧?
-------------------------------------------
BOOL CNopanleDoc::CanCloseFrame(CFrameWnd* pFrame)
{
// TODO: Add your specialized code here and/or call the base class
if(this->IsModified())//判断文件是否被修改过
{
AfxMessageBox("将这一语句替换成你所要的操作");
this->SetModifiedFlag(false);//不弹出询问
}
return CDocument::CanCloseFrame(pFrame);
}
-------------------------------------------
在工工程名Doc.cpp处右击鼠标,选择建立类向导,添加CanCloseFrame,将里面的内容替换成上面的内容就行了
-------------------------------------------
BOOL CNopanleDoc::CanCloseFrame(CFrameWnd* pFrame)
{
// TODO: Add your specialized code here and/or call the base class
if(this->IsModified())//判断文件是否被修改过
{
AfxMessageBox("将这一语句替换成你所要的操作");
this->SetModifiedFlag(false);//不弹出询问
}
return CDocument::CanCloseFrame(pFrame);
}
-------------------------------------------
在工工程名Doc.cpp处右击鼠标,选择建立类向导,添加CanCloseFrame,将里面的内容替换成上面的内容就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建个项目 对你要知道的消息函数重载 在函数中加入断点或者加入一个AfxMessage("我是XX消息"); 单步执行 你马上就知道顺序是啥了···
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询