• 技术文章 >运维 >windows运维

    Win32 SDK基础(七)之如何创建一个窗口的子窗口的案例

    黄舟黄舟2017-06-06 09:47:03原创2732
    什么是子窗口?当我们在点击Windows窗口的某个按钮时,比如点击窗口的关闭按钮,往往会弹出一个窗口来提示相关信息,类似这种弹出窗口就是主窗口的子窗口。我们创建子窗口时,也是使用CreateWindow或者CreateWindowEx API
    我们来看下CreateWindow的函数原型:

    HWND WINAPI CreateWindow(
    _In_opt_ LPCTSTR lpClassName,
    _In_opt_ LPCTSTR lpWindowName,
    _In_ DWORD dwStyle,
    _In_ int x,
    _In_ int y,
    _In_ int nWidth,
    _In_ int nHeight,
    _In_opt_ HWND hWndParent,
    _In_opt_ HMENU hMenu,
    _In_opt_ HINSTANCE hInstance,
    _In_opt_ LPVOID lpParam
    );

    这里我们只介绍下第三个参数dwStyle,设置窗口的风格。我们在本专栏创建的第一个Windows窗口时,将该值设置为WS_OVERLAPPEDWINDOW,这个设置的意思是允许窗口重叠。我们想要创建子窗口,也是通过设置窗口的WS_CHILD风格实现。而需要显示子窗口,还需要添加WS_VISIBLE风格。若想以弹出的方式显示子窗口(类似关闭确认的对话框),需要添加WS_POPUP风格。
    我们在本专栏介绍创建窗口的代码之上,在主函数中增加如下代码:

    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR lpCmdLine,
    _In_ int nCmdShow)
    {
    // TODO: Place code here.
    
    g_hInstance = hInstance;
    BOOL nRet = Register("Main", WndProc);
    if (!nRet)
    {
    MessageBox(NULL, "注册失败", "Infor", MB_OK);
    return 0;
    }
    HWND hWnd = CreateMain("Main", "window");
    
    CreateWindow("Main", "子窗口",
    WS_OVERLAPPEDWINDOW|WS_CHILD|WS_VISIBLE|WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, 400, 200,
    hWnd, NULL, g_hInstance, NULL);
    
    
    Display(hWnd);
    Message();
    return 0;
    }

    注意第16行代码,就是我们利用CreateWindow创建子窗口,运行程序,效果如下:

    以上就是Win32 SDK基础(七)之如何创建一个窗口的子窗口的案例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Win32 SDK基础(六)之详解窗口类的查找过程和相关API 下一篇:Win32 SDK基础(八)之 关于Windows消息机制的详解(图)
    大前端线上培训班

    相关文章推荐

    • 手把手教你怎么使用Win10推出软件包管理器(分享)• 一文讲解Win10子系统安装与配置(分享)• 浅析Wind和Linux中查看端口占用情况和Kill(附代码)• Win10怎么显示隐藏文件• windows添加路由后不能上网怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网