编程回消息
1. mfc如何让组合框响应消息
在MFC编程中,对于系统默认的消息,我们可以采用向导来快速的实现添加消息映射函数,其实我们也可以通过自己的手动添加代码,来实现自定义的消息映射函数,下面以单文档程序为例,在鼠标左键按下的时候,发送一个自定义消息,并添加消息处理函数:
1.在需要添加消息的类的头文件中,定义自定义消息.
本例中,在CView类的头文件,定义一个自定义消息
#define WM_MYMESSAGE 2008
注意,采用宏定义消息的时候,要注意消息的范围,系统处理消息的最大值是WM_USER ,可以转到定义出看,WM_USER的值为1024,我们可以自定义的消息是任何大于改数的一个值.
2.添加消息函数的声明.
在类的头文件中添加消息函数的声明:
class CMyView : public CView
{
protected: // create from serialization only
CMyView();
DECLARE_DYNCREATE(CMyView)
// Attributes
public:
CMyDoc* GetDocument();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMyView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CMyView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void DoMyMessage(WPARAM wParam,LPARAM lParam);//添加自定义消息处理函数声明
};
3.在类的实现部分的消息映射部分,添加消息映射
BEGIN_MESSAGE_MAP(CMyView, CView)
//{{AFX_MSG_MAP(CMyView)
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)
ON_MESSAGE(WM_MYMESSAGE,CMyView::DoMyMessage) //这个是自己添加的消息隐射(注意不要加分号)
END_MESSAGE_MAP()
4.编写消息处理函数
void CMyView::DoMyMessage(WPARAM wParam,LPARAM lParam)
{
CString str;
str.Format("x=%d y=%d",wParam,lParam);
MessageBox(str);
}
5.再需要发送消息的地方发送消息.
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// MessageBox("DOWN!");
PostMessage(WM_MYMESSAGE,point.x,point.y);
// SendMessage()
CView::OnLButtonDown(nFlags, point);
}
在鼠标左键按下的时候,发送消息,消息的两个参数包含了鼠标的横坐标和纵坐标.
注意,发送消息可以采用SendMessage或者PostMessage,前者等待消息响应再返回,后者立即返回.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/likefermat/archive/2008/10/07/3030263.aspx
2. errmsg和ret是什么意思
errmsg和ret是编程和软件开发中常见的术语,通常用于表示函数或方法返回的错误信息和返回值。
errmsg,全称为“error message”,即错误信息。在程序运行过程中,如果出现错误或异常情况,系统通常会生成一个errmsg来告知开发者或用户出现了什么问题。errmsg通常包含错误的描述、原因和可能的解决方案,以帮助开发者定位并修复问题。例如,在数据库查询操作中,如果查询语句有误或数据库连接出现问题,系统可能会返回一个errmsg,如“查询语句错误”或“数据库连接失败”。
ret,全称为“return”,即返回值。在函数或方法执行完毕后,通常会返回一个值给调用者,这个值就是ret。ret可以是任何类型的数据,如整数、字符串、对象等,具体取决于函数或方法的定义。ret通常用于表示函数或方法的执行结果,例如,一个计算函数可能会返回计算结果,一个查询函数可能会返回查询到的数据。
在编程实践中,errmsg和ret通常一起使用,以提供更全面的信息给调用者。例如,在一个查询数据库中用户信息的函数中,如果查询成功,函数可能会返回用户信息作为ret,同时errmsg为空或表示成功的消息;如果查询失败,函数可能会返回一个空值或错误码作为ret,同时errmsg包含错误信息,以便调用者了解失败的原因并进行相应的处理。
总的来说,errmsg和ret是编程中用于传递错误信息和执行结果的重要机制,它们帮助开发者更好地理解和处理程序运行中的各种问题。通过合理地使用errmsg和ret,可以提高程序的健壮性和可维护性,提升用户体验和系统的稳定性。
3. 动手做个 AI 机器人,帮我回消息!
制作AI机器人,为我自动回复微信消息,成为解决编程问题的助手。
面对每日数百条消息,大部分来自咨询编程问题的朋友们,我感到力不从心。为减少重复劳动并提升效率,我决定自制一个AI问答机器人。结果,制作过程充满挑战和趣味,感兴趣的朋友们可以观看相关视频了解详情。
教程分享如下:制作AI机器人预计耗时10分钟。首先明确需求——创建一个能自动回复微信消息的机器人。实现这一功能涉及两个关键点:
1. 接受消息:利用开源的wechaty库,仅需6行代码启动一个机器人,自动收发消息、处理扫码、用户登录等操作。
2. 智能回复:针对不同的问题,采用简单的if...else逻辑实现自动回复。若读者对同一问题有不同表述,引入人工智能,通过微信对话开放平台实现智能对话,轻松解决。
教程完整步骤包括:
1. 使用wechaty库接受消息:在代码中添加事件处理逻辑,如收到消息自动回复相同内容。
2. 限制回复范围:确保机器人只对特定人或群聊的消息进行回复,避免误操作。
3. AI智能回复:通过微信对话开放平台,无需编写代码,即可实现基于问题规则的自动回复,满足不同读者的需求。
教程详细说明了使用wechaty库接收微信消息的方法,以及如何通过微信对话开放平台实现智能回复。代码示例展示了如何启动机器人并自动回复消息,以及如何限制回复范围,确保操作安全。最后,教程介绍了如何将AI机器人与公众号或小程序绑定,或在程序中调用开放接口实现智能对话。
完成制作后,即可轻松实现微信自动回复,提高工作效率。感兴趣的朋友可以尝试制作自己的AI机器人,为解决编程问题提供便利。
我是鱼皮,对于这个项目深感满意,希望它能为更多朋友带来帮助。如果您觉得教程对您有启发,还请给予点赞支持,感谢大家的鼓励和关注。