首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当父窗口重绘时子窗口的消失。

当父窗口重绘时子窗口的消失。
EN

Stack Overflow用户
提问于 2015-05-21 07:24:56
回答 1查看 922关注 0票数 3

我创建了子窗口(对话框),通过它的句柄设置它的父进程窗口(例如记事本)。

代码语言:javascript
复制
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
    PROCESS_VM_READ,
    FALSE, processID );

if (NULL != hProcess )
{
    HWND hw;
    hw = find_main_window(processID); //some function of getting win handle through process ID
}

................

CMyHud *mhDlg = new CMyHud();
CWnd* pWnd = CWnd::FromHandle(hw);


//if(mhDlg->m_hWnd != 0) 
if (!mhDlg->GetSafeHwnd())
{
    if (mhDlg != NULL)
    {
        ret = mhDlg->Create(IDD_DIALOG1, pWnd);
    }

    if (!ret)   //Create failed.
    {
        AfxMessageBox(_T("Error creating Dialog"));
        return FALSE;
    } 
}

然后设置父窗口和子窗口的样式。

代码语言:javascript
复制
LONG t = GetWindowLong(hw,GWL_STYLE) | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
SetWindowLong(hw,GWL_STYLE,t);

LONG t1 = GetWindowLong(mhDlg->m_hWnd,GWL_STYLE) | WS_CLIPSIBLINGS | WS_OVERLAPPED;
SetWindowLong(mhDlg->m_hWnd,GWL_STYLE,t1);
::BringWindowToTop(mhDlg->m_hWnd);
mhDlg->ShowWindow(SW_SHOW);

子窗口出现在父窗口的工作区(记事本)中。

好的。

但!当我将焦点放在父窗口时,它就消失了。井。实际上,它仍然存在,但是它的背景与父窗口的背景融合在一起,似乎子窗口已经消失了。

当您找到子窗口并将焦点放在它上时,它将再次出现。但是它重绘不好,仍然有一部分家长的窗口背景(看图片)。

我做错什么了??无论重绘父窗口,在父窗口上始终显示子窗口时,我应该做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 09:08:13

通过使用SetWindowPos方法,所有这些都能完美地工作!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30367156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档