首页 > 系统相关 >C++创建GUI按钮\文本框(Windows)不用QT!!!

C++创建GUI按钮\文本框(Windows)不用QT!!!

时间:2024-08-31 15:21:08浏览次数:14  
标签:wc QT MB Windows hwnd GUI WS HWND NULL

一定要的:

#include<windows.h>

剩下的:

 过程:

LRESULT CALLBACK WndProc(HWND hwnd,UINT Message,WPARAM wParam,LPARAM lParam){
    switch(Message){
		case WM_CREATE:{
			/*略*/
            //HWND 名称=CreateWindow(类型,显示的字,WS_CHILD|WS_VISIBLE,x,y,宽,高,hwnd,(HMENU)编号,hInst,NULL);
            /*
                类型有:
                "button"
                "static"
                分别为:
                按钮
                文本
            */
		}
		case WM_COMMAND:{
			switch(wParam){
				/*略*/
                /*case 编号:{
                    . . .
                    break;
                }*/
                (表示如果点击编号则执行)
			}
		}
		default:{
			DefWindowProc(hwnd,Message,wParam,lParam);
            break;
		}
	}
}

 创建窗口:

HINSTANCE hInstance;
HINSTANCE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
hInst=hInstance; 
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
memset(&wc,0,sizeof(wc));
wc.cbSize		 = sizeof(WNDCLASSEX);
wc.lpfnWndProc	 = WndProc;
wc.hInstance	 = hInstance;
wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "WindowClass";
wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc)) {
	MessageBox(NULL, "窗口注册失败!","Error!",MB_ICONEXCLAMATION|MB_OK);
	return 0;
}
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","窗口名称",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
	CW_USEDEFAULT, /* x */
	CW_USEDEFAULT, /* y */
	320,           /* 宽 */
	200,           /* 高 */
	NULL,NULL,hInstance,NULL);
if(hwnd == NULL) {
	MessageBox(NULL, "窗口创建失败!","Error!",MB_ICONEXCLAMATION|MB_OK);
	return 0;
}

消息循环:

while(GetMessage(&msg, NULL, 0, 0) > 0){
	TranslateMessage(&msg);
	DispatchMessage(&msg);
}

示例代码:

#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
bool shuai=0;
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND hwnd,UINT Message,WPARAM wParam,LPARAM lParam){
	switch(Message){
		case WM_CREATE:{
			HWND MBOK=CreateWindow("button","提交",WS_CHILD|WS_VISIBLE,
							10,60,75,20,hwnd,(HMENU)1,hInst,NULL);
			HWND MBNO=CreateWindow("button","退出",WS_CHILD|WS_VISIBLE,
							95,60,75,20,hwnd,(HMENU)2,hInst,NULL);
			HWND tishi=CreateWindow("static","作者帅不帅?",WS_CHILD|WS_VISIBLE,
							10,0,300,30,hwnd,(HMENU)3,hInst,NULL);
			HWND xuan1=CreateWindow("button","帅",WS_CHILD|WS_VISIBLE,
							10,20,130,30,hwnd,(HMENU)4,hInst,NULL);
			HWND xuan2=CreateWindow("button","不帅",WS_CHILD|WS_VISIBLE,
							160,20,130,30,hwnd,(HMENU)5,hInst,NULL);
			break;
		}
		case WM_COMMAND:{
			switch(wParam){
				case 1:{
					if(shuai==1){
						MessageBox(NULL, "Yes!","提示",MB_OK);
						exit(0);
					}else{
						MessageBox(NULL, "不能撒谎!","Error!",MB_ICONEXCLAMATION|MB_OK);
					}
					break;
				}
				case 2:{
					exit(0);
					break;
				}
				case 4:{
					shuai=1;
					break;
				}
				case 5:{
					shuai=0;
					break;
				}
			}
			break;
		}
		default:{
			DefWindowProc(hwnd,Message,wParam,lParam);
			break;
		}
	}
}
int main(){
	HINSTANCE hInstance;
	HINSTANCE hPrevInstance;
	LPSTR lpCmdLine;
	int nCmdShow;
	hInst=hInstance; 
	WNDCLASSEX wc;
	HWND hwnd;
	MSG msg;
	memset(&wc,0,sizeof(wc));
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.lpfnWndProc	 = WndProc;
	wc.hInstance	 = hInstance;
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszClassName = "WindowClass";
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION);
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION);
	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "窗口注册失败!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}
	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","问题",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, /* x */
		CW_USEDEFAULT, /* y */
		320,           /* 宽 */
		135,           /* 高 */
		NULL,NULL,hInstance,NULL);
	if(hwnd == NULL) {
		MessageBox(NULL, "窗口创建失败!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}
	while(GetMessage(&msg, NULL, 0, 0) > 0){
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

标签:wc,QT,MB,Windows,hwnd,GUI,WS,HWND,NULL
From: https://blog.csdn.net/2401_86351708/article/details/141752485

相关文章

  • 【Qt】Spacer
    Spacer在使用布局管理的时候,如果需要在控件之间添加一段空白,就可以使用QSpacerItem来表示。核心属性属性说明width宽度height⾼度hData⽔平⽅向的sizePolicyQSizePolicy::Ignored:忽略控件的尺⼨,不对布局产⽣影响。QSizePolicy::Minimum:......
  • Qt QString(十六进制形式) 转 int
    QString与QByteArray互转QStringstr("HelloWorld");QByteArraybytes=str.toUtf8();//QString转QByteArray方法1QStringstr("HelloWorld");QByteArraybytes=str.toLatin1();//QString转QByteArray方法2QByteArray转QStringQByteArraybytes(&......
  • Buildroot构建Qt根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板
    Buildroot构建Qt根文件系统获取Buildroot源码Buildroot源码下载地址,https://buildroot.org/本次下载的是长期支持版本移动至ubuntu后解压tarxfbuildroot-2022.02.3.tar.gz解压后的Buildroot源码配置Buildroot安装显示图形菜单需要的库sudoapt-getin......
  • Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图
    一、前言说明地址和经纬度坐标转换的功能必须在线使用,一般用在导航需求上,比如用户输入起点地址和终点地址,查询路线后,显示对应的路线,而实际上各大地图厂家默认支持的是给定经纬度坐标来查询(百度地图支持传入地址),但是你让用户输入经纬度坐标是不可能的,他肯定不可能知道怎么去拿到这......
  • wbemtest.exe 是 Windows 操作系统中的一个实用程序,用于测试和调试 Windows Managemen
    wbemtest.exe起源于Windows操作系统的WMI(WindowsManagementInstrumentation)框架。它首次引入于Windows2000,作为一个图形化工具,帮助用户和开发者测试和调试WMI查询、操作和配置。其目的是简化与WMI服务的交互,提供一个直观的界面用于管理和排查系统管理数据。wbemte......
  • DaVinci Resolve Studio 19.0 正式版 (macOS, Windows) - 剪辑、调色、特效和音频后期
    DaVinciResolveStudio19.0正式版(macOS,Windows)-剪辑、调色、特效和音频后期制作BlackmagicDesignDaVinciResolveStudio请访问原文链接:https://sysin.org/blog/davinci-resolve/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgDaVinciResolve19免费!......
  • 【python】PyQt5中富文本框QTextEdit的详细教程与应用实战
    ✨✨欢迎大家来到景天科技苑✨✨......
  • Windows Server 2016 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedAug2024(sysin)-VMware虚拟机模板2024年8月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。现在都是自动sysprep的......
  • Windows Server 2016 中文版、英文版下载 (updated Aug 2024)
    WindowsServer2016中文版、英文版下载(updatedAug2024)WindowsServer2016Version1607请访问原文链接:https://sysin.org/blog/windows-server-2016/,查看最新版。原创作品,转载请保留出处。本站将不定期发布官方原版风格月度更新ISO。WindowsServer2016直接上链......
  • Windows Server 2019 中文版、英文版下载 (updated Aug 2024)
    WindowsServer2019中文版、英文版下载(updatedAug2024)WindowsServer2019Version1809请访问原文链接:https://sysin.org/blog/windows-server-2019/,查看最新版。原创作品,转载请保留出处。本站将不定期发布官方原版风格月度更新ISO。WindowsServer2019直接上链......