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

澄迈网站制作自学建筑app

澄迈网站制作,自学建筑app,wordpress简单广告框,一个人做网站 没有人写文章怎么办简言 一个窗口的创建大致可以分为这几个步骤:1.初始化窗口结构体,2.注册窗口类,3.创建窗口,4.显示和更新窗口,5.消息循环 初始化窗口结构体 使用:WNDCLASS函数 语法: typedef struct tagWN…

简言

一个窗口的创建大致可以分为这几个步骤:1.初始化窗口结构体,2.注册窗口类,3.创建窗口,4.显示和更新窗口,5.消息循环

初始化窗口结构体

使用:WNDCLASS函数

语法:

typedef struct tagWNDCLASSA {UINT      style;WNDPROC   lpfnWndProc;int       cbClsExtra;int       cbWndExtra;HINSTANCE hInstance;HICON     hIcon;HCURSOR   hCursor;HBRUSH    hbrBackground;LPCSTR    lpszMenuName;LPCSTR    lpszClassName;
} WNDCLASSA, *PWNDCLASSA, *NPWNDCLASSA, *LPWNDCLASSA;

参数一:
style,类型:UINT,类样式(s)。 此成员可以是 类样式的任意组合。Windows 类样式 (Winuser.h) - Win32 apps | Microsoft Learn
代码:
 

WNDCLASS wnd;
wnd.style=CS_HREDRAW|CS_VREDRAW;

参数二:
类型:WNDPROC
指向窗口过程的指针。 必须使用 CallWindowProc 函数来调用窗口过程。 有关详细信息,请参阅 WindowProc。
直接将函数原型拿来用:

LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{return 1;
}

代码:

wnd.lpfnWndProc=WindowProc;

参数三:
要按照窗口类结构分配的额外字节数。系统将字节初始化为零。
(默认先不管)

参数四:
在窗口实例之后分配的额外字节数。 系统将字节初始化为零。如果应用程序使用 WNDCLASS 江册通过使用资源文件中 的 CLASS 指令创建的对话框,则必须将此成员设置为DLGWINDOWEXTRA.
(默认先不管)

参数五:
包含类的窗口过程的实例的句柄。
代码:

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow)
{WNDCLASS wnd;//直接填写服务的函数中的HINSTANCEwnd.hInstance=hInstance;return 0;

参数六: 
类图标的句柄。此成员必须是图标资源的句柄。如果此成员为 NULL,则系统提供默认图标.
(目前正在学习,不用管图标)

参数七:
类游标的句柄。 此成员必须是游标资源的句柄。 如果此成员为 NULL,则每当鼠标移动到应用程序的窗口中时,应用程序都必须显式设置光标形状。(当光标移动到窗口时,显示不同的光标样式),当前阶段可设为NULL

参数八:
类背景画笔的句柄。 此成员可以是用于绘制背景的物理画笔的句柄,也可以是颜色值。 颜色值必须是以下标准系统颜色之一,(值1必须添加到所选颜色)。简单来说就是背景颜色,目前不用管,只用默认的COLOR_WINDOW

参数九:
类菜单的资源名称,因为名称显示在资源文件中。如果使用整数标识菜单,请使用MAKEINTRESOURCE 宏。如果此成员为 NULL,则属于此类的窗口没有默认菜单。(一定要有)
代码:

wnd.lpszClassName="Wechat:190";

总结代码:

LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{return 1;
}
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow)
{//1.初始化窗口类结构WNDCLASS wnd={0};wnd.style=CS_HREDRAW|CS_VREDRAW;wnd.lpfnWndProc=WindowProc;wnd.hInstance=hInstance;wnd.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);wnd.lpszClassName="Wechat:190";
}

 

注册窗口类

使用registerClass()函数。

语法:

ATOM RegisterClassA([in] const WNDCLASSA *lpWndClass
);

参数:

类型:const WNDCLASS*

指向 WNDCLASS 结构的指针。 在将结构传递给函数之前,必须用相应的类属性填充结构。

代码:

RegisterClass(&wnd);

创建窗口 

使用CreateWindowA()函数。

语法:

HWND CreateWindowA([in, optional] LPCSTR    lpClassName,[in, optional] LPCSTR    lpWindowName,[in]           DWORD     dwStyle,[in]           int       x,[in]           int       y,[in]           int       nWidth,[in]           int       nHeight,[in, optional] HWND      hWndParent,[in, optional] HMENU     hMenu,[in, optional] HINSTANCE hInstance,[in, optional] LPVOID    lpParam
);

参数一:
类名,才初始化时已经创建,直接复制过来用。
代码:

HWND hWnd = CreateWindowA(wnd.lpszClassName,

参数二:
窗口名称,可自由设计:
代码:

HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",

参数三:
正在创建的窗口的样式。 此参数可以是 窗口样式值的组合,以及“备注”部分中指示的控件样式。
(准确数值可点击蓝色超链接,来进行查看)
代码:

    HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,

参数四、五:
类型:int
窗口的初始水平位置/窗口的初始垂直位置:
从屏幕的最左上方,往右/下=都为正方向
代码:

 HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100,

参数六、七:
类型:int 
窗口的宽度/窗口的高度(以设备单位为单位)
代码:

    HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,

参数八:
类型:HWND
正在创建的窗口的父窗口或所有者窗口的句柄。(我们现在默认就行:NULL)
代码:

HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,NULL,

参数九:
类型:HMENU 
菜单的句柄,或根据窗口样式指定子窗口标识符。(我们现在默认:NULL)
代码:

    HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,NULL,NULL,

参数十:
类型:HINSTANCE
要与窗口关联的模块实例的句柄。
将我们的实例句柄填入:
 

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,NULL,NULL,hInstance,);
}

参数十一:
类型:LPVOID
指向通过 CREATESTRUCT 结构(lpCreateParams 成员)指向的值的指针,该值由 WM_CREATE 消息的 lParam 参数指向。 此消息在返回之前由此函数发送到创建的窗口。
(目前我们不管,填写NULL,或是0)
代码:

HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_EX_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,NULL,NULL,hInstance,0);

返回值:
类型:HWND
如果函数成功,则返回值是新窗口的句柄。
如果函数失败,则返回值 NULL。 若要获取扩展的错误信息,请调用 GetLastError。

显示和更新窗口

使用ShowWindow()函数和UpdateWindow()函数

语法1:

showWindow():

BOOL ShowWindow([in] HWND hWnd,[in] int  nCmdShow
);

参数:
类型:HWND
窗口的句柄。

返回值:
类型: BOOL
如果窗口以前可见,则返回值为非零值。
如果以前隐藏窗口,则返回值为零。

语法2:

updateWindow():

BOOL UpdateWindow([in] HWND hWnd
);

参数:
类型:HWND
要更新的窗口的句柄。

返回值:
类型:BOOL
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。

消息循环

意识:windows操作系统---消息机制 消息投递、反应(行动)
以文本编辑软件为例子:
1.鼠标消息(可能还有按钮消息)---> windows操作系统
2.windows操作系统说可以 -->文本编辑软件就大了(因为对操作系统有很大的依赖性。

在消息循环中用到俩个API函数:GetMessage()和DispatchMessage()函数

代码:

MSG msg = {};while (GetMessageA(&msg, 0, NULL, NULL)){TranslateMessage(&msg);DispatchMessageA(&msg);}

总结:

全代码

#include "framework.h"
#include "WindowsProject2.h"
#include <windows.h>#define MAX_LOADSTRING 100// 回调函数
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{switch (uMsg){case WM_LBUTTONDOWN:MessageBoxA(NULL, "鼠标左键按下", "温馨提示", MB_OK);break;case WM_CLOSE:PostQuitMessage(0);break;default:return DefWindowProcA(hwnd,uMsg,wParam,lParam);break;}return 0;
}int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow)
{// 1.初始化窗口类结构WNDCLASSA wnd = {0};wnd.style = CS_HREDRAW | CS_VREDRAW;wnd.lpfnWndProc = WindowProc;wnd.hInstance = hInstance;wnd.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);wnd.lpszClassName = "Wechat:190";// 注册RegisterClassA(&wnd);// 创建窗口HWND hWnd = CreateWindowA(wnd.lpszClassName,"第一个程序",WS_OVERLAPPEDWINDOW | WS_VISIBLE,100, 100, 500, 500,NULL,NULL,hInstance,0);// 显示和更新窗口ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);// 消息循环MSG msg = {};while (GetMessageA(&msg, 0, NULL, NULL)){TranslateMessage(&msg);DispatchMessageA(&msg);}
}

输出:

 

 

 

 


 

 


文章转载自:

http://nfdfv34q.qwmdx.cn
http://3yhfnoYj.qwmdx.cn
http://3t4ScKpb.qwmdx.cn
http://EgT4QXJ9.qwmdx.cn
http://gQK8Z1Es.qwmdx.cn
http://LQNWm7ff.qwmdx.cn
http://kCQoFnXM.qwmdx.cn
http://OaujYb6i.qwmdx.cn
http://f7n9UAzh.qwmdx.cn
http://8oUY7BEJ.qwmdx.cn
http://sUoAR6LO.qwmdx.cn
http://GtfCLddd.qwmdx.cn
http://e9S1riXB.qwmdx.cn
http://VfTgXduP.qwmdx.cn
http://4r3hnfrh.qwmdx.cn
http://2tSkFwlA.qwmdx.cn
http://8k0nvEgz.qwmdx.cn
http://B35TQhHI.qwmdx.cn
http://gqGF2fbx.qwmdx.cn
http://ezehponb.qwmdx.cn
http://paWMicRg.qwmdx.cn
http://vsGpqjF2.qwmdx.cn
http://HJnKV4CB.qwmdx.cn
http://LJGCzo6G.qwmdx.cn
http://EyqlJVB1.qwmdx.cn
http://878zbAcd.qwmdx.cn
http://aLdtJFfz.qwmdx.cn
http://J632IsbE.qwmdx.cn
http://2qSSEkE3.qwmdx.cn
http://5CsxPTSs.qwmdx.cn
http://www.dtcms.com/wzjs/727460.html

相关文章:

  • 水资源监控能力建设门户网站国外好的室内设计网站
  • 网站描述多个词怎么分隔盘锦网站建设公司
  • 口碑好的福州网站建设青岛seo招聘
  • 比较实用的h5网页建设网站图片文章wordpress
  • CQ网络科技网站建设关于医院建设网站的请示
  • 四站合一网站建设网站建设培训方案
  • 网站开发记入什么会计科目餐饮企业网站设计
  • ip分享网站网站怎么建设dw
  • 快速网站空间免费推广软件下载
  • seo竞价网站建设莱芜网红小莱芜
  • 注册域名网站甘肃网站开发
  • 服务专业的公司网站设计手机网站可以直接做百度推广不
  • 网站导航大全电商网站是什么意思
  • delphi7 网站开发新公司注册工商核名系统
  • 玉树营销网站建设公司pc网站建设企业
  • 国外经典设计网站北京高端网站建设优势
  • 成都专业网站制作哪家好鲜花网站建设规划书
  • 网站硬件方案seo标题优化是什么意思
  • 计算机程序设计网站开发模具厂咋做网站
  • 小程序怎么进入公众号百度搜索引擎关键词优化
  • 乐都网站建设多少钱网页设计优化网站建设可以吗
  • 博山做网站公司科技型中小企业税收优惠政策2022
  • 集约化网站建设方案装修设计公司公司价格表
  • 网站内容设置站长源码论坛
  • 网站建设捌金手指下拉二七重庆网络推广网站
  • 建设厅注册中心网站考试报名费缴费网站服务器知识
  • 聊城做网站公司网站正在备案中
  • 网站建设公司讯息深圳网站建设排名
  • 电子平台网站建设百度怎样建立网站链接
  • 南宁市两学一做网站游戏推广是干什么的