c语言编写窗口,c窗口程序设计
个人主页:@电脑魔术师作者简介:CSDN内容合伙人,全栈领域优质创作者。
更新时间:2022年4月18日
visual studio 2022编译器打开项目流程:
创建主函数
专注!必须设置,否则在设置类的配置回调函数中不允许命名为常量字符,就会报错!
创建一个文件,并把代码#includewindows.h
#定义PageSizex 500 //窗口宽度
#定义页面大小600 //窗口长度
LRESULT回调回调(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM LPARAM);//声明回调函数
//WINAPI:调用约定,调用约定,主要是参数的堆栈顺序,这个堆栈空间更干净,
//其他代码中_ __stdcall,APIENTRY都一样,可以去定义查看,
//
//Handle:一个数字;作用:窗口的独特标志。
int WINAPI WinMain(
Hincehinstance,//当前实例句柄
HinceHPReinstance,//上一个实例的句柄
Lptr IP cmdline,//传递给系统的命令行参数
IntMDShow//默认值为1,指定如何打开窗口:隐藏、最大和最小显示。
)
{
//初始化窗口类
WNDCLASSEX wc//窗口类extra和wndclass扩展
HWND hWnd//窗口句柄窗口的句柄
味精味精;//信息接受消息
//配置窗口类
WC . cbclsextra=0;//窗口类的额外空间
WC . CB size=sizeof(WNDCLASSEX);//类的结构大小
WC . h instance=h instance;//当前窗口实例句柄
wc.hCursor=NULL//系统游标loadcursor (NULL,IDC _ hand)可以自己加载,不需要将游标设置为NULL;
WC . cbwndextra=0;//窗口的额外空间
wc.hIcon=NULL//图标不需要设置为NULL。可以将NULL改为系统默认图标LoadIcon(NULL,IDI _错误);
WC . HBR background=(HBRUSH)COLOR _ WINDOW;//更改背景的颜色
wc.hIconSm=NULL//小图标可以自己加载系统图标Loadicon (NULL,idi _ error)而不用设置为NULL;
wc.lpfnWndProc=CallBack//回调函数名
WC . lpsz class name= first win ;//名称不能重复!对于操作系统来说。
wc.lpszMenuName=NULL//菜单名不需要设置为空
WC . style=CS _ HREDRAW CS _ VREDRAW;//Window类样式:hrizons redaw vertical redaw垂直刷新和水平刷新
//12个成员中有一个不行!
//注册窗口对象
///RegisterClassEx( wc)返回数据类型ATOM unsigned short。注册成功返回非0,失败返回0。
if (0==RegisterClassEx( wc))
{
int a=GetLastError();//函数生成相应的错误代码。您可以使用工具查询注册失败的原因。
返回0;
};
//创建窗口lp是指针,意思是指针英文:pointer
hWnd=CreateWindowEx(
WS_EX_TOPMOST,//dwExStyle窗口附加属性:显示在顶层。
FirstWin ,//lpClassName窗口类的名称,对于系统来说,和以前一样。
我的第一个窗口,//由//lpWindowName窗口显示的名称
WS_OVERLAPPEDWINDOW,//dwStyle窗口创建样式可以通过一个或多个连接。
100,//x指定窗口显示的x坐标,相对于桌面。
100,//y指定窗口的显示y坐标,相对于桌面。
PageSizex,//n窗口宽度
PageSizey,//n高度窗口的n高度
Null,hwndparent辅助窗口的句柄
NULL,//hMenu窗口菜单
Hince,//Hince当前hInstance,//hInstance
NULL //lpParam
);
If (NULL==hWnd) //窗口句柄窗口唯一标识
{
返回0;
}
//显示窗口
ShowWindow(hWnd,ncmdshow);//指定窗口显示模式,此处为1。标准显示窗口样式同上。
//Hidden返回0,visual返回非0
//获取消息
while (GetMessage(
MSg,//指向信息体的指针
NULL,//指定窗口句柄。选择处理该窗口的消息。NULL和非NULL的区别,所有句柄都被接受。
0,0 //设置消息处理的范围。这是全部产品。
))
{
翻译消息(mSg);//翻译消息,将关键虚拟消息转换成字符消息,发送到调用线程的信息队列,
DispatchMessage(消息);//将消息分发给系统,系统会调用我们的回调函数callback(过程函数)
//信息类型:标准消息命令消息通知消息自定义消息
}
返回0;
}
//LRESULT处理消息生成的有符号值回调调用约定。
LRESULT回调回调(
Hwndwnd,//窗口句柄
UINT nMsg,//消息ID UIMT实际上是一个无符号INT。
Ramwparam,LPARAM LPARAM//每条消息携带的两个数据‘word’数据类型和‘long’数据类型
)
{
PAINTSTRUCT pst
HDC hDC
开关(nMsg)
{
案例WM_DESTROY:
PostQuitMessage(0);//点击窗口关闭键,Getmessage函数返回0,停止信息接收循环。
//点击分叉会通过WM _ Close-WM _ Destiny-WM _ Quit处理消息。
打破;
}
返回DefWindowProc(hWnd,nMsg,wParam,lParam);//默认系统处理其他消息
//保持系统的一致性
}ctrl F5运行!效果如下
我的第一个窗口创建成功了!
在这里,你对添加、删除和检查有什么疑问吗?
欢迎私人博主提问。博主们会尽力解答你的疑惑!
如果对你有帮助,你的赞就是对博主最大的支持!电脑魔术师原创作品,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。