15,978
社区成员
发帖
与我相关
我的任务
分享
自绘菜单把chlid风格的对话框认父窗口
bool CWndPopup::SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam)
{
HWND hParent = ::GetParent(m_hWnd);
if (hParent)
{
::PostMessage(hParent, Msg, wParam, lParam);//发送自定义信息收不到。
return true;
}
return false;
}
//创建没问题吧????
BOOL CWndPopup::Create(CWnd *pParent, CRect rc, UINT uMessageID)
{
CString sWindowClassName = AfxRegisterWndClass(CS_DBLCLKS,::LoadCursor(NULL, IDC_ARROW));
m_uMessageID = uMessageID;
m_point.x = rc.left;
m_point.y = rc.top;
if(CWnd::CreateEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW,sWindowClassName ,NULL,WS_POPUP, rc, pParent, 0, NULL))
{
return FALSE;
}
return TRUE;
}
bool CWndPopup::SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam)
{
HWND hParent = ::GetWindow(m_hWnd, GW_OWNER);
if (hParent)
{
::PostMessage(hParent, Msg, wParam, lParam);//发送自定义信息收不到。
return true;
}
return false;
}
public:
CWnd *m_pParent; //给CWndPopup加个成员变量
BOOL CWndPopup::Create(CWnd *pParent, CRect rc, UINT uMessageID)
{
CString sWindowClassName = AfxRegisterWndClass(CS_DBLCLKS,::LoadCursor(NULL, IDC_ARROW));
m_uMessageID = uMessageID;
m_point.x = rc.left;
m_point.y = rc.top;
if(CWnd::CreateEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW,sWindowClassName ,NULL,WS_POPUP, rc, pParent, 0, NULL)) //Nonzero if successful
{
m_pParent = pParent;
return FALSE;
}
return TRUE;
}
bool CWndPopup::SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (m_pParent)
{
m_pParent->PostMessage(Msg, wParam, lParam);
return true;
}
return false;
}
//这种风格是啥吧?
int CWndPopup::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// 设置窗口风格
DWORD dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE)
| WS_SIZEBOX | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_EX_LAYERED;
dwStyle &= ~(WS_CAPTION);
::SetWindowLong(m_hWnd, GWL_STYLE, dwStyle);
::SetWindowLong(m_hWnd,GWL_EXSTYLE, WS_EX_TOOLWINDOW);
InitUI();
DrawWindow();
SetWindowPos(NULL, m_point.x, m_point.y, 100, 100, SWP_SHOWWINDOW|SWP_NOSIZE);
return TRUE;
}