星期五, 九月 08, 2006

MFC窗口中各控件的上下层次的设置


BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags
);

  • wndBottom

  • ウィンドウを Z オーダーの一番下に置きます。このCWnd が最上位のウィンドウの場合、
    ウィンドウの最上位ステータスは失われます。
    システムでは、このウィンドウをほかのすべてのウィンドウよりも下に置きます。

    将窗口(控件也是窗口)置于Z坐标的最下层

  • wndTop

  • ウィンドウを Z オーダーの先頭に置きます。

    将窗口(控件也是窗口)置于Z坐标的最上层

  • wndTopMost

  • ウィンドウを最上位でないすべてのウィンドウの上に置きます。ウィンドウは、非アクティブになったときも、最上位の位置を保持します。

    始终最上层

  • wndNoTopMost

  • ウィンドウを最上位でないすべてのウィンドウの先頭に再配置します (つまり、一番手前のすべてのウィンドウの後ろに置きます)。
    ウィンドウが既に非最上位ウィンドウとなっているときは、このフラグは無効です。



    BOOL ModifyStyle(
    DWORD dwRemove,
    DWORD dwAdd,
    UINT nFlags = 0
    );


    窗口中各控件的描画顺序
    top的最先描画
    bottom的最后描画
    导致控件的消息响应和显示矛盾

    可以通过以下方法的设置解决
    GetDlgItem(IDC_SCREEN_SWITCH_BACK)->SetWindowPos(&wndBottom, 0, 0, 50, 592, SWP_SHOWWINDOW);
    GetDlgItem(IDC_SCREEN_SWITCH_BACK)->ModifyStyle(0, WS_CLIPSIBLINGS, 0);

    没有评论: