編程回消息
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機器人,為解決編程問題提供便利。
我是魚皮,對於這個項目深感滿意,希望它能為更多朋友帶來幫助。如果您覺得教程對您有啟發,還請給予點贊支持,感謝大家的鼓勵和關注。