void CListCtrlPop::SetStrWindowText()
{
::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0);
PostMessage(WM_SHOWWINDOW,0,0);
}
在这个函数里 执行到::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0); 时 调试显示wndStrEdited为:0x00375618{CBaseEdit Hwnd=0x00020a58}。
而CBaseEdit代码如下:
class CBaseEdit : public CEdit
{
// Construction
public:
CBaseEdit();// Attributes
public:// Operations
public:// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBaseEdit)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL// Implementation
public:
CFont m_font;
BOOL m_breturn;
BOOL m_besc;
long m_dSetFocusValue;
long m_dKillFocusValue;
long kc_number;
BOOL m_bInputValid;
virtual ~CBaseEdit(); // Generated message map functions
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//{{AFX_MSG(CBaseEdit)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnChange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:};那::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0); 这条语句发送的消息是否是由CBaseEdit的对象来捕获的?那具体是执行哪个函数呢?
搞不懂郁闷了
{
::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0);
PostMessage(WM_SHOWWINDOW,0,0);
}
在这个函数里 执行到::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0); 时 调试显示wndStrEdited为:0x00375618{CBaseEdit Hwnd=0x00020a58}。
而CBaseEdit代码如下:
class CBaseEdit : public CEdit
{
// Construction
public:
CBaseEdit();// Attributes
public:// Operations
public:// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBaseEdit)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL// Implementation
public:
CFont m_font;
BOOL m_breturn;
BOOL m_besc;
long m_dSetFocusValue;
long m_dKillFocusValue;
long kc_number;
BOOL m_bInputValid;
virtual ~CBaseEdit(); // Generated message map functions
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//{{AFX_MSG(CBaseEdit)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnChange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:};那::PostMessage(m_wndStrEdited->GetSafeHwnd(),WM_KEYDOWN,13,0); 这条语句发送的消息是否是由CBaseEdit的对象来捕获的?那具体是执行哪个函数呢?
搞不懂郁闷了
等到该消息被取出的时候 ,才调用相应的消息处理函数
和SendMessage不一样
后者是马上返回
SendMessage不一样,对于本进程是直接调用窗口消息函数,函数执行完才返回
SendMessage不一样,对于本进程是直接调用窗口消息函数,函数执行完才返回