当前位置: 首页 > news >正文

黄村做网站的公司烟台网站制作步骤

黄村做网站的公司,烟台网站制作步骤,seo顾问达人,里面云智能建站第一个窗口程序的最后一部分#xff1a;应用程序入口函数wWinMain#xff1b;这是Windows应用程序的主函数#xff0c;负责初始化应用程序、注册窗口类、创建主窗口并进入消息循环处理消息。 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInst… 第一个窗口程序的最后一部分应用程序入口函数wWinMain这是Windows应用程序的主函数负责初始化应用程序、注册窗口类、创建主窗口并进入消息循环处理消息。 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow) {UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine); ​// 初始化全局字符串LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadStringW(hInstance, IDC_WINDOWSPROJECT1, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance); ​// 执行应用程序初始化:if (!InitInstance (hInstance, nCmdShow)){return FALSE;} ​HACCEL hAccelTable LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT1)); ​MSG msg; ​// 主消息循环:while (GetMessage(msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, msg)){TranslateMessage(msg);DispatchMessage(msg);}} ​return (int) msg.wParam; } ​ 函数声明部分 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow) APIENTRY 是一个宏定义了函数的调用约定;具体来说APIENTRY 在 Windows 平台上通常定义为 __stdcall。__stdcall 是一种调用约定规定了函数如何接收参数、返回值以及函数调用时堆栈的清理方式。(这个部分在汇编部分有涉及到这边再描述一下__stdcall调用约定的一些关键点) 参数传递顺序: 参数从右向左传递即最后一个参数最先压入堆栈。 堆栈清理: 函数自身负责清理堆栈。这与__cdecl不同在__cdecl中调用者负责清理堆栈。 名称修饰: 在使用__stdcall时编译器会对函数名进行修饰。这通常包括在函数名前加上一个下划线并在后面加上符号和参数的字节数。例如void MyFunction(int a) 会被修饰为 _MyFunction4。 应用场景: __stdcall主要用于Win32 API函数以及一些第三方库的接口函数。 接着来说一下程序入口函数的参数列表 hInstance是当前应用程序实例的句柄它是一个唯一标识应用程序的实例用于加载资源如图标、字符串、对话框模板等和其他操作。 hPrevInstance这是上一个实例的句柄。在 16 位 Windows 中它用于判断是否已经有一个实例在运行。对于 32 位和 64 位 Windows 应用程序这个参数总是 NULL所以一般不需要用它。 lpCmdLine是指向包含命令行参数的字符串的指针。 nCmdShow指定应用程序窗口的初始显示状态。这个参数可以有多种值比如 SW_SHOW、SW_HIDE 等用于决定窗口是最小化、最大化还是正常显示通常在创建窗口时传递给 ShowWindow 函数。 在Windows编程中应用程序的实例Instance通常指的是应用程序在内存中的一个运行副本。每个实例都有一个唯一的句柄HINSTANCE这是一个标识符用于区分和管理不同的实例。当你运行一个可执行文件如 .exe操作系统会为这个可执行文件分配内存并启动一个新进程。这个进程就是应用程序的一个实例。你可以同时运行多个相同的可执行文件每一个运行的进程都是该应用程序的一个实例。 函数体部分 UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER 是一个宏用于标记在函数中未使用的参数。这在编译时避免了未使用参数的警告。这行代码的作用是告诉编译器这两个参数 hPrevInstance 和 lpCmdLine 在函数体中没有被使用但这是有意为之并且这种情况是可以接受的。 在标记未使用的参数后模板代码就开始从资源文件加载字符串并注册窗口类。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadStringW(hInstance, IDC_WINDOWSPROJECT1, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance); LoadStringW 是一个Win32 API函数用于从应用程序的资源文件中加载字符串资源他的原型是 int LoadStringW(HINSTANCE hInstance,UINT uID,LPWSTR lpBuffer,int cchBufferMax ); hInstance: 应用程序实例的句柄。在这里它指定了包含字符串资源的模块。 uID: 字符串资源的标识符。在这里IDS_APP_TITLE 和 IDC_WINDOWSPROJECT1 是资源ID通常在资源文件如 .rc 文件中定义。 lpBuffer: 指向接收加载的字符串的缓冲区。 cchBufferMax: 缓冲区的最大字符数包括终止的空字符。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);:从资源文件中加载ID为 IDS_APP_TITLE 的字符串并将其存储在 szTitle 缓冲区中。 LoadStringW(hInstance, IDC_WINDOWSPROJECT1, szWindowClass, MAX_LOADSTRING);:从资源文件中加载ID为 IDC_WINDOWSPROJECT1 的字符串并将其存储在 szWindowClass 缓冲区中。 通过查看项目中的资源文件.rc的内容就可以找到载入的字符串是什么 MyRegisterClass(hInstance);接着就是调用自定义的注册窗口类函数去指定窗口的样式、窗口过程处理窗口消息的回调函数、窗口背景色等信息。part.2 接着就是需要进行应用程序实例的初始化这里调用了自定义函数InitInstance在这个函数中我们会创建实例的主窗口并根据nCmdShow参数指定程序窗口的显示方式。 if (!InitInstance (hInstance, nCmdShow)){return FALSE;} 若实例初始化失败则返回false如若成功则显示主窗口。在实例初始化成功后加载加速键表accelerator table以便在消息循环中处理快捷键。 HACCEL hAccelTable LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT1)); LoadAccelerators 是一个Win32 API函数用于加载加速键表。加速键表定义了一组快捷键及其对应的命令可以用来快捷地执行菜单命令。其原型如下 HACCEL LoadAccelerators(HINSTANCE hInstance,LPCWSTR lpTableName ); hInstance: 应用程序实例的句柄指定包含加速键表的模块。 lpTableName: 指向包含加速键表的资源名称或标识符通常使用 MAKEINTRESOURCE 宏转换资源ID。 当前项目的rc文件中的资源设置如下 这是菜单资源的标识符和类型。IDC_WINDOWSPROJECT1 是菜单的IDMENU 表示这是一个菜单资源。BEGIN 和 END:这些关键字用于定义菜单的开始和结束部分。 POPUP:POPUP 定义了一个包含子菜单的顶级菜单项 文件(F) 和 帮助(H) 是两个顶级菜单项它们分别包含一个或多个子菜单项。(F) 和 (H) 是快捷键按下 AltF 和 AltH 可以打开相应的菜单。 MENUITEM:MENUITEM 定义了一个具体的菜单项 退出(X), IDM_EXIT 定义了一个名为 退出 的菜单项(X) 是快捷键(X) 是快捷键IDM_EXIT 是菜单项的命令ID。 关于(A) ..., IDM_ABOUT 定义了一个名为 关于 的菜单项(A) 是快捷键IDM_ABOUT 是菜单项的命令ID。 接着进行消息变量声明 MSG msg; MSG 结构体用于存储从消息队列中检索的消息消息循环中会使用这个结构体来接收和处理窗口消息。MSG 结构体在 winuser.h 头文件中定义用于包含窗口消息信息 typedef struct tagMSG {HWND   hwnd;UINT   message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;DWORD lPrivate; } MSG, *PMSG; hwnd: 接收消息的窗口句柄message: 消息标识符如 WM_PAINT, WM_KEYDOWN以及其他参数 wParam: 消息的附加信息具体内容取决于消息类型。 lParam: 消息的附加信息具体内容取决于消息类型。 time: 消息被放入消息队列的时间戳。 pt: POINT 结构体表示消息发生时的光标位置。 lPrivate: 私有数据用于内部用途。 声明变量后接着就需要实现消息循环它在应用程序的整个生命周期中不断运行处理来自操作系统和用户的各种消息。 while (GetMessage(msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, msg)){TranslateMessage(msg);DispatchMessage(msg);}} GetMessage 函数从调用线程的消息队列中检索消息并将其存储在 MSG 结构体中。lpMsg: 指向 MSG 结构体的指针用于接收消息hWnd: 指定消息的窗口句柄nullptr 表示检索线程的所有消息wMsgFilterMin 和 wMsgFilterMax: 指定要检索的消息范围0, 0 表示检索所有消息。 TranslateAccelerator 函数将加速键消息转换为命令消息hWnd: 接收消息的窗口句柄hAccTable: 加速键表句柄lpMsg: 指向 MSG 结构体的指针。加速键Accelerator Key消息是指在 Windows 应用程序中用于快捷键操作的一种消息类型。 TranslateMessage 函数将虚拟键消息如 WM_KEYDOWN转换为字符消息如 WM_CHAR虚拟键消息Virtual Key Messages是 Windows 操作系统中用于处理键盘输入的一种消息类型。它们是由键盘驱动程序生成的消息通常通过输入设备如键盘上的按键触发。 DispatchMessage 函数将消息分派到窗口过程Window Procedure窗口过程根据消息类型执行相应的操作。 消息循环的完整流程 检索消息GetMessage 从消息队列中检索消息并存储在 msg 结构体中如果 GetMessage 返回 0表示收到 WM_QUIT 消息退出消息循环。 处理加速键TranslateAccelerator 检查消息是否为加速键如果是则翻译并处理它如果 TranslateAccelerator 返回 TRUE表示消息已处理不需要进一步处理。 翻译和分派消息如果消息不是加速键或未处理调用 TranslateMessage 将虚拟键消息转换为字符消息调用 DispatchMessage 将消息分派到窗口过程窗口过程根据消息类型执行相应的操作。 最后程序的执行结果 关于窗口
http://www.ho-use.cn/article/10819955.html

相关文章:

  • 郑州 高端网站建设网站忘记备案
  • 制作网站的公司做网站去哪里找做专业课视频课的网站
  • 莱芜正规的企业建站公司腾讯企业邮箱版
  • 东莞网站搜索排名apache fastcgi wordpress
  • 此网站服务器不在国内维护怎么通过微博做网站外链
  • 雄安微网站开发网站建设公司转型做什
  • 网站运营与建设作业设计方案ppt模板
  • 电商类网站模板下载个人wordpress 手机
  • 什么是网站流量优化vs和sql做购物网站
  • 做网站用什么主机好制作网页常见的布局方法有
  • 网站设计深圳要联系方式吗?惠安网站建设价格
  • 网络规划设计师多少分通过seo公司发展前景
  • 哪个网站可以做社工试题做网站有2个前提条件 一个是网站
  • 在百度云上做网站建设部网站从哪登陆
  • 推广网站的文案海南在线直播
  • 网站建设預算google官网入口
  • 南充北京网站建设深圳大型互联网公司
  • 济南市住建局官方网站网址安全检测中心
  • 舵落口网站建设wordpress动态行情页面
  • 做网站需要租服务器吗wordpress主题如何使用
  • 源码分享网站网站制作结算确认函
  • 自己做的网站验证码出不来怎么回事素材网站怎么推广
  • 怎么样搭建qq号网站做网站没有高清图片怎么办
  • 展示型网站解决方案福建网站建设费用
  • 美食烹饪网站策划书做简历的网站叫什么软件
  • 个人做的小网站需要备案公司网站建设的意义方案
  • 如何建设个人网站凡科怎么样Vantage wordpress主题
  • 中国建设银行网站-诚聘英才网站的页面
  • 如何优化网站关键词厂字形网页布局网站
  • 网站类别页面怎么做最近一周的国内新闻