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

云南工程建设总承包公司网站小程序多用户商城源码

云南工程建设总承包公司网站,小程序多用户商城源码,如何打造电商平台,微信推广图片目录 一、什么是Winodws编程 二、开发环境搭建以及如何学习 三、VA助手安装 四、第一个Win32程序 五、窗口类句柄/窗口类对象 六、Winodws消息循环机制 七、Windows数据类型 一、什么是Winodws编程 Windows 编程指的是在 Microsoft Windows 操作系统上进行软件开发的过…目录 一、什么是Winodws编程 二、开发环境搭建以及如何学习 三、VA助手安装 四、第一个Win32程序 五、窗口类句柄/窗口类对象 六、Winodws消息循环机制 七、Windows数据类型 一、什么是Winodws编程 Windows 编程指的是在 Microsoft Windows 操作系统上进行软件开发的过程通常涉及使用 Windows API、.NET Framework、WPFWindows Presentation Foundation、WinForms 等技术。下面我将简要介绍一些相关的内容。 Windows API: Windows 应用程序接口Windows API是一组定义了 Windows 操作系统核心功能的函数和数据结构的集合。通过调用这些函数开发者可以实现诸如窗口管理、文件操作、内存管理等底层操作。使用 Windows API 进行编程可以获得最高的灵活性和控制力但也需要处理更多的细节。 .NET Framework: .NET Framework 是一个由微软开发的应用程序框架它提供了大量的库和运行时环境使开发者能够使用多种编程语言如C#、VB.NET来开发 Windows 应用程序。.NET Framework 包括了各种功能强大的类库以及对于 Windows 应用程序开发非常有用的 Windows Forms 和 WPF 框架。 WPFWindows Presentation Foundation: WPF 是用于创建 Windows 客户端应用程序的 UI 框架它提供了一种基于 XML 的标记语言 XAMLExtensible Application Markup Language来定义用户界面同时支持丰富的数据绑定、样式模板、动画等功能。相较于传统的 Windows FormsWPF 提供了更加灵活和强大的界面设计方式可以实现更富有表现力的用户界面。 WinForms: Windows Forms 是 .NET Framework 中的一部分提供了一种快速开发 Windows 应用程序的方式。开发者可以使用 Visual Studio 中的可视化设计器来创建界面并通过添加事件处理程序等方式来实现应用程序逻辑。虽然 WinForms 在界面设计方面不如 WPF 灵活但它仍然是许多传统的 Windows 应用程序的首选开发方式 .h 文件和 .cpp 文件通常用于 C 项目的代码组织。它们有不同的作用 .h 文件头文件 通常包含类的声明、函数原型、常量定义以及其他需要在多个源文件中共享的信息。头文件中通常不包含函数或类的实际实现而是只包含其声明以便其他源文件可以通过包含头文件来访问这些声明。使用头文件可以帮助提高代码的模块化和可维护性因为它们允许将代码分割成更小的单元并进行组织。头文件通常使用 .h 扩展名但也可能使用 .hpp 或其他类似的形式。 .cpp 文件源文件 包含了类成员函数和全局函数的实际实现以及全局变量的定义等。在 .cpp 文件中你会找到与头文件中声明的内容对应的实际代码。.cpp 文件通常被编译器编译成目标代码最终链接成可执行程序或库。 一般来说C 项目中的代码都会以这种方式进行组织头文件用于声明和共享信息而 .cpp 文件用于实现声明并包含实际的代码逻辑。这种分离有助于提高代码的可读性、可维护性和重用性。 APIApplication Programming Interface 应用程序编程接口。 SDKSoftware Development Kit 软件开发工具包一般会包括 API 接口文档示例文档帮助文档使用手册相关工具等。 二、开发环境搭建以及如何学习 Visual Studio Installer中选择 创建项目选择Windows桌面应用程序即可 如何学习多查官方参考文档 Windows API官方文档Windows API 索引 - Win32 apps | Microsoft Learn 三、VA助手安装 下载地址https://www.jb51.net/softs/756854.html 解压密码www.jb51.net 如果之前安装失败或者卸载过参考下面文章解决 https://blog.csdn.net/m0_52776283/article/details/128329994 常用快捷键只记住这几个就可以了剩下的可以慢慢探索 ALTG跳到定义ALTSHIFTF查找所有引用ALT左箭头/右箭头回退/前进 四、第一个Win32程序 #include windows.h #include stdio.h/*如何创建一个窗口1. 设计窗口类2. 注册窗口类3. 创建窗口操作系统会把它绘制出来4. 消息循环5. 回调函数 */// LPCTSTR CHAR* 指向多字节字符串的指针 LPCTSTR clsName My; LPCTSTR msgName 欢迎学习;// LRESULT long LRESULT CALLBACK MyWinProc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameter wordLPARAM lParam // second message parameter long ) {//uMsg 消息类型int ret;/*声明 HDC hdc; 的目的是创建一个变量 hdc用于存储设备上下文环境的句柄。通过使用设备上下文句柄可以将绘图操作指定给特定的设备如屏幕、打印机或图像文件等。在实际应用中通常需要使用特定的函数来获取设备上下文句柄例如 GetDC 函数用于获取屏幕设备上下文句柄。获取到设备上下文句柄后可以使用它来进行相关的绘图操作例如绘制线条、填充颜色、显示文本等。完成绘图操作后可能需要使用相应的函数释放设备上下文句柄以避免资源泄露。*/HDC hdc;switch (uMsg){case WM_CHAR:char szChar[20];sprintf_s(szChar, 您刚才按下了: %c, wParam);MessageBox(hwnd, szChar, char, NULL);break;case WM_LBUTTONDOWN:MessageBox(hwnd, 检测鼠标左键按下, msg, NULL);break;case WM_PAINT:// 声明了一个名为 ps 的 PAINTSTRUCT 结构体变量。PAINTSTRUCT 结构体用于存储绘图信息包括绘图区域的坐标等。PAINTSTRUCT ps;// BeginPaint 函数用于开始绘图操作并返回一个设备上下文句柄 hdc。// 它接受窗口句柄 hwnd 和指向 PAINTSTRUCT 结构体的指针作为参数。这个函数的调用表示程序即将开始在指定窗口进行绘图操作。hdc BeginPaint(hwnd, ps);TextOut(hdc, 0, 0, www.baidu.com, strlen(www.baidu.com));EndPaint(hwnd, ps);// 用于结束绘图操作并清理相关资源。MessageBox(hwnd, 重绘, msg, NULL);break;case WM_CLOSE:ret MessageBox(hwnd, 是否真的结束, msg, MB_YESNO);if (ret IDYES){/*DestroyWindow(hwnd) 是一个 Windows API 函数用于销毁指定窗口。在这里hwnd 是一个窗口句柄代表要销毁的窗口。通过调用 DestroyWindow(hwnd) 函数程序可以关闭并销毁与该窗口相关联的资源。当调用 DestroyWindow 函数时系统会发送 WM_DESTROY 消息给窗口过程函数以通知窗口即将被销毁。窗口过程函数可以处理这个消息并执行一些清理操作。之后系统会释放与窗口相关的资源包括设备上下文句柄、菜单、图标等。值得注意的是使用 DestroyWindow 函数只能销毁由当前进程创建的窗口。如果要销毁其他进程创建的窗口可以使用 PostMessage 函数发送 WM_CLOSE 消息给目标窗口。*/DestroyWindow(hwnd);}break;case WM_DESTROY:/*PostQuitMessage(0) 是一个 Windows API 函数用于向消息队列中发送一个退出消息通知应用程序要求其退出消息循环并终止。在这里参数 0 表示指定的退出代码。当应用程序接收到这个退出消息后它将会开始退出过程并使用给定的退出代码作为程序的返回值。*/PostQuitMessage(0);break;default:// 默认过程函数处理其他消息return DefWindowProc(hwnd, uMsg, wParam, lParam);}return 0; }// WINAPI __stdcall int WINAPI WinMain(_In_ HINSTANCE hInstance, // 标识当前程序实例的句柄 _In_opt_ HINSTANCE hPrevInstance,_In_ LPSTR lpCmdLine, _In_ int nShowCmd ) {// a 设计一个窗口类//定义和配置窗口对象WNDCLASS wndcls; // 用来存储窗口类信息的结构体实例。wndcls.cbClsExtra NULL; // 表示窗口类的额外类内存这里设为NULL表示不使用额外类内存。wndcls.cbWndExtra NULL; // 表示每个窗口实例的额外窗口内存这里同样设为NULL表示不使用额外窗口内存wndcls.hbrBackground (HBRUSH)GetStockObject(WHITE_BRUSH); // 指定了窗口背景的画刷句柄这里使用 GetStockObject 函数获取了白色画刷。wndcls.hCursor LoadCursor(NULL, IDC_ARROW); // 指定了光标的句柄这里使用 LoadCursor 函数加载了箭头光标。wndcls.hIcon LoadIcon(NULL, IDI_APPLICATION); // 指定了窗口的图标句柄这里使用 LoadIcon 函数加载了应用程序图标。wndcls.hInstance hInstance; // 指定了窗口类所属的实例句柄。程序的句柄wndcls.lpfnWndProc MyWinProc; // 指定了窗口过程的地址即窗口的消息处理函数。wndcls.lpszClassName clsName; // 指定了窗口类的类名。wndcls.lpszMenuName NULL; // 指定了窗口的菜单名这里设置为NULL表示没有菜单。wndcls.style CS_HREDRAW | CS_VREDRAW; // 指定了窗口类的风格CS_HREDRAW | CS_VREDRAW 表示当窗口大小水平或垂直方向发生变化时窗口的内容需要重绘。// b 注册窗口类// 窗口类的信息被注册到系统中使得之后可以使用这个窗口类来创建窗口实例以便让系统知道如何处理特定类型的窗口。RegisterClass(wndcls);// c 创建窗口// 通过调用 CreateWindow 函数根据指定的窗口类、标题和风格等信息系统会创建一个窗口实例并返回该窗口的句柄。// 句柄可以用于后续对窗口进行操作和管理。/*clsName: 窗口类名这里使用之前注册的窗口类 clsName。msgName: 窗口标题用于在窗口的标题栏显示窗口的名称。WS_OVERLAPPEDWINDOW: 窗口风格指定了窗口的外观和行为这里使用了 WS_OVERLAPPEDWINDOW 风格表示创建一个具有标题栏、边框和最大化/最小化按钮的窗口。CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT: 窗口的初始位置和大小这里使用 CW_USEDEFAULT 表示使用系统默认值即由系统决定窗口的位置和大小。NULL: 父窗口句柄这里设置为NULL表示新创建的窗口没有父窗口。hInstance: 窗口所属的实例句柄用于标识窗口所属的应用程序。NULL: 与窗口相关联的菜单句柄这里设置为NULL表示不使用菜单。*/HWND hwnd CreateWindow(clsName, msgName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance,NULL);//d 显示和刷新窗口ShowWindow(hwnd, SW_SHOWNORMAL); // 用于显示先前创建的窗口实例这里使用 SW_SHOWNORMAL 表示以原始大小和位置显示窗口。UpdateWindow(hwnd); // 用于更新先前创建的窗口实例的客户区域。这样做可以立即将窗口客户区域的内容显示出来。//e 消息循环 GetMessage 只有在接收到 WM_QUIT 才会返回 0//TranslateMessage 翻译消息 WM_KEYDOWN 和 WM_KEYUP 合并为 WM_CAHR// MSG是一个结构体MSG msg;/*当调用 GetMessage 函数时系统会检查当前线程的消息队列如果队列中有消息则将消息复制到 msg 结构体中并返回非零值如果队列中没有消息函数会将当前线程置于等待状态直到有新消息到达为止。通常情况下这行代码会被放在一个循环中不断地调用 GetMessage 函数以获取并处理消息直到接收到退出程序的消息为止。通过不断地获取消息程序可以及时响应用户的输入、系统事件等各种消息从而实现交互式的用户界面和响应式的应用程序逻辑。*/while (GetMessage(msg, NULL, NULL, NULL)) // 3个NULL 表示没有过滤规则即获得所有消息{/*调用了 TranslateMessage 函数用于将虚拟键消息转换为字符消息。具体来说该函数会检查接收到的消息是否属于虚拟键消息如键盘按键事件如果是则将其转换为相应的字符消息如字符输入事件。这样可以确保程序正确处理用户的键盘输入。*/TranslateMessage(msg);/*调用了 DispatchMessage 函数用于将消息分派给窗口过程Window Procedure来进行处理。每个窗口都有一个窗口过程它是对窗口消息进行处理的函数。DispatchMessage 函数会根据消息中的窗口句柄找到对应的窗口过程并将消息传递给该窗口过程进行处理。*/DispatchMessage(msg);}return msg.wParam; }五、窗口类句柄/窗口类对象 窗口就是屏幕上的一片区域接收用户的输入显示程序的输出。可以包含标题栏菜单栏工具栏控件等。 句柄[Handle](资源的编号二级指针门把手)窗口句柄文件句柄数据库连接句柄。 C窗口类对象与窗口并不是一回事它们之间惟一的关系是C窗口类对象内部定义了一个窗口句柄变量保存了与这个 C窗口类对象相关的那个窗口的句柄。窗口销毁时与之对应的 C窗口类对象销毁与否要看其生命周期是否结束。但 C窗口类对象销毁时与之相关的窗口也将销毁。 WinMain函数的第一个参数HINSTANCE hInstance 是一个表示程序实例的句柄handle。在Windows操作系统中每个正在运行的程序都有一个唯一的实例句柄用于标识该程序在内存中的位置和资源。hInstance 参数在程序启动时由操作系统传递给程序的主函数 WinMain()以便程序可以使用该句柄来访问程序实例的各种资源如窗口、图标、菜单等。 通过使用 hInstance 句柄程序可以获取程序的路径、图标资源、对话框模板等信息或者创建和管理窗口、菜单、图标等对象。另外在多个实例同时运行的情况下hInstance 句柄还可用于区分不同的程序实例。需要注意的是hInstance 是一个抽象的句柄值它不直接表示实际的内存地址。在操作系统中句柄通常被映射到实际的内存地址或资源描述符上程序可以通过句柄来间接引用这些内存地址或资源。 六、Winodws消息循环机制 事件可分为几种由输入设备触发的比如鼠标键盘等等。由窗体控件触发的比如button控件file菜单等。还有就是来自Windows内部的事件。这三种称为事件。 消息是由事件翻译而来的。事件产生消息。从数据结构角度来讲消息是一种结构体。结构如下 typedef struct tagMSG{HWND hwnd; //窗口句柄。UINT message;//消息类型。WPARAM wParam;//32位附加信息。LPARAM lParam;//32位附加信息。DWORD time;//消息发送时间。POINT pt;//消息发送时鼠标所在位置。}MSG; 消息队列消息队列有两种分为系统消息队列和应用程序消息队列。产生的消息首先由Windows系统捕获放在系统消息队列再拷贝到对应的应用程序消息队列。32/64位系统为每一个应用程序维护一个消息队列。 消息循环系统为每个应用程序维护一个消息循环消息循环会不断检索自身的消息队列。每有一个消息就用GetMessage()取出消息。 while(GetMessage (msg, NULL, 0, 0))//Windows消息循环。{TranslateMessage (msg) ;//翻译消息如按键消息翻译为WM_CHARDispatchMessage (msg) ;//分发消息到对应窗口} GetMessage具有阻塞机制。当消息队列中没有消息时程序非忙等而是让权等待。当收到WM_QUIT时GetMessage返回false循环停止同时应用程序终止。 消息处理DispatchMessage()把取出来的消息分配给相应的窗口或线程由窗口过程处理函数DefWindowProc()处理。 Windows的应用程序靠消息驱动来实现功能。而消息驱动靠消息机制来处理。消息机制就是由消息队列消息循环消息处理构成的。 那么消息机制是如何运作的呢 当用户运行一个应用程序通过对鼠标的点击或键盘按键产生一些特定事件。由于Windows一直监控着I/O设备该事件首先会被翻译成消息由系统捕获存放于系统消息队列。经分析Windows知道该消息应由那个应用程序处理则拷贝到相应的应用程序消息队列。由于消息循环不断检索自身的消息队列当发现应用程序消息队列里有消息就用GetMessage()取出消息封装成Msg()结构。如果该消息是由键盘按键产生的用TranslateMessage()翻译为WM_CHAR消息否则用DisPatchMessage()将取出的消息分发到相应的应用程序窗口交由窗口处理程序处理。Windows为每个窗体预留了过程窗口函数该函数是一个回掉函数由系统调用应用程序不能调用。程序员可以通过重载该函数处理我们”感兴趣”的消息。对于不感兴趣的消息则由系统默认的窗口过程处理程序做出处理。 上面代码的执行过程为 消息循环调用GetMessage()从消息队列中查找消息进行处理如果消息队列为空程序将停止执行并等待(程序阻塞)。事件发生时导致一个消息加入到消息队列(例如系统注册了一个鼠标点击事件)GetMessage()将返回一个正值这表明有消息需要被处理并且消息已经填充到传入的MSG参数中当传入WM_QUIT消息时返回0如果返回值为负表明发生了错误。取出消息(在Msg变量中)并将其传递给TranslateMessage()函数这个函数做一些额外的处理将虚拟键值信息转换为字符信息。这一步实际上是可选的但有些地方需要用到这一步。上面的步骤执行完后将消息传递给DispatchMessage()函数。DispatchMessage()函数将消息分发到消息的目标窗口并且查找目标窗口过程函数给窗口过程函数传递窗口句柄、消息、wParam、lParam等参数然后调用该函数。窗口过程函数中检查消息和其他参数你可以用它来实现你想要的操作。如果不想处理某些特殊的消息你应该总是调用DefWindowProc()函数系统将按按默认的方式处理这些消息(通常认为是不做任何操作)一旦一个消息处理完成窗口过程函数返回DispatchMessage()函数返回继续循环处理下一个消息。 七、Windows数据类型 Unicode 是世界通用的字符编码标准使用 16 位数据表示一个字符一共可以表示 65535 种字符。 ASNI 字符集使用 8 位数据或将相邻的两个 8 位的数据组合在一起表示特殊的语言字符。如果一个字节是负数则将其后续的一个字节组合在一起表示一个字符。这种编码方式的字符集也称作“多字节”字符集。 DWORD 32 字节无符号整型数据 DWORD32 32 字节无符号整型数据DWORD64 64 字节无符号整型数据HANDLE 对象的句柄最基本的句柄类型HICON 图标的句柄HINSTANCE 程序实例的句柄HKEY 注册表键的句柄HMODULE 模块的句柄HWND 窗口的句柄INT 32位符号整型数据类型INT_PTR 指向 INT 类型数据的指针类型INT32 32位符号整型INT64 64 位符号整型LONG32 32 位符号整型LONG64 64 位符号整型LPARAM 消息的 L 参数WPARAM 消息的 W 参数LPCSTR WindowsANSI字符串常量LPCTSTR 根据环境配置如果定义了 UNICODE 宏则是LPCWSTR类型否则是 LPCSTR 类型 LPCWSTR UNICODE 字符串常量LPDWORD 指向 DWORD 类型数据的指针LPSTR WindowANSI字符串变量LPTSTR 根据环境配置如果定义了 UNICODE则是LPWSTR类型否则是 LPSTR 类型LPWSTR UNICODE 字符串变量SIZE_T 表示内存大小以字节为单位其最大值是CPU 最大寻址范围TCHAR 如果定义了 UNICODE则为 WCHAR否则为CHARWCHAR 16 位 Unicode 字符 变量命名规则
http://www.w-s-a.com/news/906270/

相关文章:

  • 用r做简易的网站软件园二期做网站的公司
  • 菏泽网站建设价格长春高档网站建设
  • PHP网站开发与管理设计心得网站流量图怎么做
  • 苏州做网站企业wordpress点击文字弹出层
  • 做网站必要性中山古镇做网站
  • 增城住房和城乡建设局网站2021网站你懂我意思正能量
  • seo优秀网站深圳企业医疗网站建设
  • 单页 网站 模板重庆微信网站制作专家
  • 石家庄网站定制制作企业所得税优惠政策最新2022文件
  • 免费推广网站途径有哪些郑州企业型网站建设
  • wap网站建设设计wordpress首页名称
  • wordpress网站换空间南宁网站设计可以找我
  • 期货贵金属网站建设招远网站建设哪家专业
  • 上海网站排名个人网站可以做百度推广
  • 网站主题及样式优化个人网站 可以做论坛吗
  • 中企动力 网站推广一级域名免费申请
  • 山东专业的网站建设博罗做网站哪家强
  • 手机网站支持微信支付吗宝塔如何添加ip域名做网站
  • 什么专业学网站建设企业合同管理系统
  • 我要啦免费统计怎么做网站销售订单管理系统软件
  • 门户网站建设教程更改wordpress端口
  • 普兰店网站建设公司云计算培训
  • 网站建设的网络技术app下载平台哪个好
  • 中国建筑人才网是什么网站导购网站制作
  • 网站建设开票东莞龙岗网站建设
  • 17网站一起做网批最近湘潭的新闻
  • 专业网站设计专业服务网站news怎么做
  • 杭州租房网站建设设计网站架构
  • 安徽做网站公司哪家好建设网站需要什么内容
  • 哪些网络公司可以做机票预订网站网站新闻后台怎么做