C++ 使窗口为静态,并允许使用CreateWIndowEx()添加文本

C++ 使窗口为静态,并允许使用CreateWIndowEx()添加文本,c++,windows,winapi,C++,Windows,Winapi,我正在使用CreateWindowEx函数创建一个编辑窗口,即用户可以在其中键入内容的窗口 g_hwndMain=CreateWindowEx0, WC_文本, 无效的 WS|U可见| WS|U边框| ES|U自动旋转, 0, 0, 400, 200, phwnd,NULL, g_hInstance,空 但我也希望窗口是静态的。在创建窗口的过程中,有没有办法做到这一点?或创建窗口后可能使用的任何其他功能?在使用SWP_NOSENDCHANGING和SWP_NOREPOSITION创建窗口后,我尝

我正在使用CreateWindowEx函数创建一个编辑窗口,即用户可以在其中键入内容的窗口

g_hwndMain=CreateWindowEx0, WC_文本, 无效的 WS|U可见| WS|U边框| ES|U自动旋转, 0, 0, 400, 200, phwnd,NULL, g_hInstance,空

但我也希望窗口是静态的。在创建窗口的过程中,有没有办法做到这一点?或创建窗口后可能使用的任何其他功能?在使用SWP_NOSENDCHANGING和SWP_NOREPOSITION创建窗口后,我尝试使用SetWindowPos函数,但这并没有奏效。有什么想法吗

不,我是说不动的窗户。基本上,我创建的窗口应该能够同时接受文本和不可移动。

您需要处理该窗口的消息,然后在转发之前设置WINDOWPOS结构的flags成员的SWP_NOMOVE标志


这有一个例子,虽然他在阻止尺寸变化,但技术是一样的。

谢谢你的帮助。好的,到目前为止,我已经做了这个来处理WM_WindowPos更改消息

BOOL OnWindowPosChanging(HWND hwnd, WINDOWPOS *pwp)
{

    return 0;
}

LRESULT CALLBACK
WndProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uiMsg) {

        HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, OnWindowPosChanging);
    }

    return DefWindowProc(hwnd, uiMsg, wParam, lParam);
}
当我创建窗口时,我会执行以下操作:

g_hwndMain =  CreateWindowEx(0,
                            TEXT("EDIT"),
                            NULL, 
                            WS_BORDER,
                            0, 0, 400, 200,
                            phwnd, NULL, 
                            g_hInstance, NULL);

                    if (!g_hwndMain) {
                        RemoveImages(spHTMLDoc);//Just so I know that the window has been created properly
                    }
                    else{                           

                        SetWindowPos(g_hwndMain, HWND_TOP, 500, 500, 300, 300,  SWP_NOSENDCHANGING | SWP_SHOWWINDOW );
                    }

SWP_NOMOVE标志不允许代码更改窗口的位置,但用户仍然可以通过使用鼠标移动窗口来更改窗口的位置。但这正是我想要阻止的。窗口应该是静态的。我的代码中有什么遗漏,或者还有什么建议吗?

好的,我已经找到了答案。在CreateWIndow中,添加WS_子标志作为第四个参数。这样就行了。谢谢你的帮助!!!最好使用WS\u POPUP而不是WS\u CHILDBy static,你是说只读吗?然后在加载文本后发送。静态的意思是窗口不能移动。但它是一个编辑控件。。。除非你给它加上WS_标题等,否则你无论如何都不能移动它…?你说得对,阿鲁尔。顺便说一句,我不是he:RichieHindle,除非声明为静态,否则窗口在有或没有WS_标题的情况下仍然是可移动的。我在考虑是否可以同时使用WC_文本和WC_静态,但我想这是不可能的。