Windows框架

#include<Windows.h>
#include<tchar.h>
#include"resource.h"


//全局变量
LPSTR g_MainFrame = "主框架";
LPSTR  g_ClientFrame = "客户区框架";
LPSTR g_ChildFrame[] = { "子框架1","子框架2" };


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

//函数执行的入口函数
int WINAPI WinMain(
    _In_         HINSTANCE hInstance,
    _In_opt_  HINSTANCE hPrevInstance,
    _In_         LPSTR lpCmdLine,
    _In_         int nShowCmd)

{

    //1.初始化需要注册的窗口信息
    WNDCLASS MainFrame = { 0 };
    MainFrame.hbrBackground = (HBRUSH)::GetStockObject(GRAY_BRUSH);//背景
    MainFrame.hCursor = ::LoadCursor(NULL, IDC_ARROW);
    MainFrame.hInstance = hInstance;
    MainFrame.lpfnWndProc = WndProc;
    MainFrame.lpszClassName = g_MainFrame;
    MainFrame.lpszMenuName = MAKEINTRESOURCE(IDR_MainFrame);//定位资源,通过MAKEINTRESOURCE转换的id,                                                                                                                                        //也可以是资源名称的字符串。
    MainFrame.style = CS_VREDRAW | CS_HREDRAW;

    //2.注册MainFrame窗口
    if (!RegisterClass(&MainFrame))
    {
        MessageBox(NULL, _T("主框架注册失败!"), _T("Error"), MB_OK | MB_ICONERROR);//_T() 需用用到tchar.h头文件
    }

    //3.创建窗口    
        HWND mainframe_hwnd;
        mainframe_hwnd= CreateWindow(
            g_MainFrame,
            g_ClientFrame,
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT, 
            CW_USEDEFAULT, 
            CW_USEDEFAULT, 
            CW_USEDEFAULT,
            NULL, 
            NULL, 
            hInstance,
            NULL);
        if(!mainframe_hwnd)
            MessageBox(NULL, _T("主框架创建失败!"), _T("Error"), MB_OK | MB_ICONERROR);
    //4.显示窗口
        ShowWindow(mainframe_hwnd, nShowCmd);

    //5.刷新窗口
        UpdateWindow(mainframe_hwnd);

    //6.信息捕获
        MSG mainframe_msg;
        while (::GetMessage(&mainframe_msg, NULL, 0, 0))
        {
            ::TranslateMessage(&mainframe_msg);//TranslateMessage是用来把虚拟键消息转换为字符消息。
            ::DispatchMessage(&mainframe_msg);//消息调度
        }
        return mainframe_msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    //处理消息
    switch (message)
    {
        /*1.关不窗口时,会收到该消息,PostQuitMessage()像系统表明终止当前线程,没有这个函数的话,窗口不会关闭*/
        case WM_DESTROY:
            PostQuitMessage(0);//用于相应关闭消息,否则线程不会关闭,导致系统阻塞
        return 0;
    }
    //将不需要处理的消息传递给系统作默认处理
    return DefWindowProc(hwnd, message, wParam, lParam);
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7-4 最短工期 (25 分)

参考链接&#xff1a;https://blog.csdn.net/tianwei0822/article/details/88642441 一个项目由若干个任务组成&#xff0c;任务之间有先后依赖顺序。项目经理需要设置一系列里程碑&#xff0c;在每个里程碑节点处检查任务的完成情况&#xff0c;并启动后续的任务。现给定一个…

对我国6G早期研究布局的几点建议

来源&#xff1a;赛迪智库众所周知&#xff0c;5G网络技术无法满足2030年及未来的移动通信需求。第六代无线移动通信网络&#xff08;6G&#xff09;将引入全球覆盖、高频谱效率和能源效率、高智能性和安全性等新的性能指标和用例等&#xff0c;以解决快速增长的通信需求。虽然…

springmvc中@RequestMapping的使用

通过RequestMapping注解可以定义不同的处理器映射规则。 1.1 URL路径映射 RequestMapping(value"/item")或RequestMapping("/item")。 value的秩是数组&#xff0c;可以将多个url映射到同一个方法。 1.2 窄化请求映射 在class上添加RequestMapping(url)指定…

7-2 城市间紧急救援 (25 分)

作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你的任务是带领你的…

Win32 多文档多视图

#include<Windows.h> #include<tchar.h> #include"resource.h" //全局变量 LPSTR g_MainFrame "主框架"; LPSTR g_ClientFrame "客户区框架"; LPSTR g_ChildFrame[] { "子框架1","子框架2" }; //主窗口和子…

【前沿技术】严重事故!实习生删除字节跳动所有轻量级机器学习模型

来源&#xff1a;智能研究院昨晚脉脉上有网友爆料&#xff0c;字节跳动一位实习生删除了公司所有轻量级别的机器学习模型&#xff01;什么是lite模型&#xff1f;该楼主表示&#xff0c;lite模型就是公司内几乎所有GB大小以下的机器学习模型&#xff0c;且全部被删除了&#xf…

7-1 是否同一棵二叉搜索树 (30分)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而&#xff0c;一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树&#xff0c;都得到一样的结果。于是对于输入的各种插入序列&#xff0c;你需要判断它们…

Linux基础命令---文本显示od

od 将指定文件的内容以八进制、十进制、十六进制等编码方式显示。此命令的适用范围&#xff1a;RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 od [选项] file od [-abcdfilosx]... [FILE] [[]OFFSET[.][b]] od --traditional [OPTION]... [FILE] [[]OF…

MFC TabCtrl用法

基于对话框的MFC程序, 在主对话框中添加TabCtrl控件,CTabCtrl 类型的变量m_tabctrl; 插入3对话框&#xff0c;并设置属性styleChild,BorderNone,创建三个对话框类CDialog1&#xff0c;CDialog2&#xff0c;CDialog3&#xff1b;在主对话框中创建三个对话框类的全局对象 m_dg1,m…

机器人行业研究报告:智能化造就新时代,自动化生产成刚需

来源&#xff1a;东莞证券作者&#xff1a;黄秀瑜核心观点智能转型时代&#xff0c;机器人前景可期。智能化时代到来&#xff0c;工业机器人和服务 机器人逐渐普及。疫情后制造业走出低迷&#xff0c;中国工业机器人月产量创新 高。全球老龄化问题日益严重&#xff0c;中国作为…

7-2 是否完全二叉搜索树 (30分)

将一系列给定数字顺序插入一个初始为空的二叉搜索树&#xff08;定义为左子树键值大&#xff0c;右子树键值小&#xff09;&#xff0c;你需要判断最后的树是否一棵完全二叉树&#xff0c;并且给出其层序遍历的结果。 输入格式&#xff1a; 输入第一行给出一个不超过20的正整数…

bzoj 1596 电话网络

Description Farmer John决定为他的所有奶牛都配备手机&#xff0c;以此鼓励她们互相交流。不过&#xff0c;为此FJ必须在奶牛们居住的N(1 < N < 10,000)块草地中选一些建上无线电通讯塔&#xff0c;来保证任意两块草地间都存在手机信号。所有的N块草地按1..N 顺次编号。…

读取BMP格式数据

#pragma once #include<afx.h> class DigitalImage { private: //指针数据类型&#xff0c;需要动态分配数据大小&#xff0c;并初始化数据 char m_FileName[100]; //文件头 LPBITMAPFILEHEADER m_lpBitmapFileHender; //除位图文件头的所有数据 LPBYTE…

指甲盖大小塞了500亿晶体管!领先台积电,IBM打造世界首款2纳米芯片!能耗仅为7纳米的1/4!...

文章来源&#xff1a;EETOP我们知道在2014年IBM已将其Microelectronics部门出售给GlobalFoundries时&#xff0c;IBM就已经宣告退出芯片代工业务。但这几年来&#xff0c;尽管IBM退出了代工业务&#xff0c;不过好像IBM在半导体先进工艺研发上一直没有放弃&#xff0c;时不时会…

读取bmp格式数据--实践思考

实践代码 头文件 #pragma once #include <afx.h> class DigitalImage { private://指针数据类型&#xff0c;需要动态分配数据大小&#xff0c;并初始化数据//文件头LPBITMAPFILEHEADER m_lpBitmapFileHender;//除位图文件头的所有数据LPBYTE m_lpNotFileHenderData;//…

人工智能浪潮褪去,冲刺IPO成AI企业生存关键?

来源&#xff1a; 大作此前&#xff0c;AI四小龙持续亏损、登科受阻&#xff0c;投影出“AI估值泡沫&#xff0c;风口浪潮已褪”的现实。反观AI四小龙同期的独角兽格灵深瞳&#xff0c;6月22日科创板IPO受理&#xff0c;拟募资10亿元用于AI算法平台升级、创新应用研发等项目。前…

【开源】iTest教学辅助系统源代码

iTest教学辅助系统 2020.10.16第一次更新 重置了下载链接 2020.12.21第二次更新 重置了下载链接 2021.05.07第三次更新 重置了下载链接 1.关于iTest教学辅助系统 i实验辅助教学平台是基于局域网开发&#xff0c;力求为教师和学生用户提供实验课堂辅助教学环境的计算机系统&…

KnockoutJS-与服务端交互

几乎所有Web应用程序都要和服务器端交换数据&#xff0c;交换数据时最方便的就是使用JSON格式。Knockout可以实现很复杂的客户端交互&#xff0c;对于前后端交互使用的技术最为基本且常用的是Ajax&#xff0c;本次利用Ajax和ko的双向绑定完成一些简单的功能&#xff0c;可以快速…