[项目] -登录框

news2024/11/19 9:36:05

前言

  • 各位师傅大家好,我是qmx_07,今天来给大家讲解登录框的小练习,就此SDK的相关学习就此结束
    在这里插入图片描述

登录框

对话框绘制

在这里插入图片描述

  • 通过添加DIaLog对话框,添加 static test文本、Edit Control输入框、Button按钮,制作登录框
  • password输入框 需要将密码勾选为True,密码不可见
  • 对话框整体ID:IDD_DIALOG1
  • 账户名输入框 控件ID:IDC_EDIT_USERNAME
  • 密码输入框 控件ID:IDC_EDIT_PASSWORD
  • 提交按钮 控件ID:IDC_BUTTON_LOGIN

创建非模态对话框

登录框的消息处理:

INT_PTR CALLBACK login(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    case WM_CLOSE:
    {
        EndDialog(hDlg, 0);
        PostQuitMessage(0);
        return TRUE;
        
    }
    }
    return (INT_PTR)FALSE;
}

创建绑定非模态对话框:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // 将实例句柄存储在全局变量中
   HWND hWnd = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, login);
   if (!hWnd)
   {
      return FALSE;
   }
    ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

画面演示:
在这里插入图片描述

  • 对话框程序 已经创建好了,但是 在左上角不是很美观和方便,需要调整到 windows窗口中心位置

调整登录框显示位置

  • 想要调整登录框位置, 需要引用<atltypes.h>这个头文件库,里面包含一些用于处理和管理图形设备的接口函数
#include <atltypes.h>
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // 将实例句柄存储在全局变量中



   HWND hWnd = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, login);
   if (!hWnd)
   {
      return FALSE;
   }
   CRect rect;//表示矩形地址的结构体
   GetWindowRect(hWnd, &rect);//获得窗口的屏幕坐标矩形,用于存储左上角和右下角的坐标值
   int nX = GetSystemMetrics(SM_CXFULLSCREEN);//获得全屏的宽度
   int nY = GetSystemMetrics(SM_CYFULLSCREEN);//获得全屏的高度
   int nW = rect.Width();//获得窗口的宽度
   int nH = rect.Height();//获得窗口的高度
   MoveWindow(hWnd, (nX - nW) / 2, (nY - nH) / 2, nW, nH, TRUE);//让窗口来到正中心
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

画面演示:
在这里插入图片描述

功能实现

INT_PTR CALLBACK login(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
    {
        switch (HIWORD(wParam))
        {
        case BN_CLICKED:
        {
            if (LOWORD(wParam) == IDC_BUTTON_LOGIN)
            {
                //获得输入框句柄
                HWND hUserWnd = GetDlgItem(hDlg, IDC_EDIT_USERNAME);
                HWND hPassWnd = GetDlgItem(hDlg, IDC_EDIT_PASSWORD);

                //获得文本长度
                DWORD userLength = GetWindowTextLength(hUserWnd);
                DWORD passLength = GetWindowTextLength(hPassWnd);

                //申请内存
                WCHAR* UserBuffer = new WCHAR[userLength + 1];
                WCHAR* PassBuffer = new WCHAR[passLength + 1];

                //获得控件文本
                GetWindowText(hUserWnd, UserBuffer, userLength + 1);
                GetWindowText(hPassWnd, PassBuffer, passLength + 1);

                if (wcscmp(UserBuffer, L"qmx_07") == 0 && wcscmp(PassBuffer, L"123456") == 0)
                {
                    MessageBox(NULL, L"登录成功", L"提示", MB_OK);
                }
                else
                {
                    MessageBox(NULL, L"登录失败", L"提示", MB_OK);
                }
            }
            break;
        }
        }
    }
        break;
    case WM_CLOSE:
    {
        EndDialog(hDlg, 0);
        return TRUE;
    }
    }

    return (INT_PTR)FALSE;
}

  • 通过点击按钮,获取文本信息,进行对比内容
    画面演示:
    在这里插入图片描述

总结

  • 通过绘制登录框,调整窗口位置,获得文本信息 进行对比,实现了登录框的练习演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2132723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速入门编写一个Java程序

一、jdk配置 下载完jdk后需要配置环境变量 以下是其步骤 1、我的电脑-属性-高级系统设置-环境变量 2、在系统变量中新建JAVA_HOME环境变量&#xff0c;指向jdk的安装目录 3、编辑path环境变量&#xff0c;新建%JAVA_HOME%\bin 4、打开Dos命令行&#xff0c;任意目录下敲入j…

CGAL and the Boost Graph Library

CGAL and the Boost Graph Library 许多几何数据结构都可以解释为图&#xff0c;因为它们由顶点和边组成。对于halfedge数据结构、多面体曲面、arrangement以及二维三角剖分类来说&#xff0c;情况都是如此。利用对偶性&#xff0c;人们也可以将面解释为顶点&#xff0c;相邻面…

AcWing119 袭击

目录 AcWing119 袭击题目描述背景输入输出数据范围 题解解法优化 打赏 AcWing119 袭击 题目描述 背景 特工进入据点突袭发电站&#xff0c;已知所有发电站的位置和所有特工的降落位置&#xff0c;求任意特工距离任意核电站的最短距离 输入 第一行一个整数 T T T&#xff0…

基于SpringBoot实现SpringMvc上传下载功能实现

SpringMvc上传下载功能实现 1.创建新的项目 1&#xff09;项目信息填写 Spring Initializr (单击选中)Name(填写项目名字)Language&#xff08;选择开发语言&#xff09;Type&#xff08;选择工具Maven&#xff09;Group&#xff08;&#xff09;JDK&#xff08;jdk选择17 &…

深度学习——D1(环境配置)

课程内容 W-H-W 资源 AI地图 物体检测和分割 样式迁移 人脸合成 文字生成图片 预测与训练 本地安装

【IPV6从入门到起飞】5-2 IPV6+Home Assistant(ESP32+MQTT+DHT11+BH1750)传感器采集上传监测

IPV6Home Assistant[ESP32MQTTDHT11BH1750]传感器采集上传监测 1 背景2 实现效果3 Home Assistant配置3-1 MQTT配置3-2 yaml 配置3-3 加载配置 4 ESP32搭建4-1 开发环境4-2 工程代码 5 实现效果 1 背景 在上一小节【IPV6从入门到起飞】5-1 IPV6Home Assistant(搭建基本环境)我…

luogu基础课题单 入门 上

【深基2.例5】苹果采购 题目描述 现在需要采购一些苹果&#xff0c;每名同学都可以分到固定数量的苹果&#xff0c;并且已经知道了同学的数量&#xff0c;请问需要采购多少个苹果&#xff1f; 输入格式 输入两个不超过 1 0 9 10^9 109 正整数&#xff0c;分别表示每人分到…

chapter1-项目搭建

文章目录 序章1. 项目开发基础概念1.1 企业开发中常见的web项目类型1.2 企业项目开发流程1.3 立项申请阶段 2. 需求分析2.1 首页2.2 登录注册2.3 课程列表2.4 课程详情2.5 购物车2.6 商品结算2.7 购买成功2.8 个人中心2.9 我的课程及课程学习 3. 环境搭建3.1 创建虚拟环境3.2 相…

2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘

1.编写一个图像二维卷积程序。它应该能够处理任何灰度输入图像&#xff0c;并使用以下内核进行操作&#xff1a; %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy import linalg import random as rm import math import cv2# import and …

基于云端的SIEM解决方案

最近的一项市场研究爆出了一组惊人的数字&#xff0c;在2024年&#xff0c;网络攻击增加了600%&#xff01;更加令人担忧的是&#xff0c;这恐怕只是冰山一角。世界各地的组织都已经认识到了这一威胁&#xff0c;并正在采取多重措施来抵御来自线下和远程混合式办公模式带来的网…

SpringBoot项目获取统一前缀配置以及获取非确定名称配置

SpringBoot项目获取统一前缀配置以及获取非确定名称配置 在SpringBoot项目中&#xff0c;我们经常看到统一前缀的配置&#xff0c;我们该怎么统一获取 my.config.a.namexiaoming my.config.a.age18 my.config.a.addressguangdong my.config.b.namexiaomli my.config.b.age20 my…

【Unity】手写图片轮播

最近项目空闲&#xff0c;回顾了一下之前写的杂七杂八的软件&#xff0c;比较多&#xff0c;而且比较杂乱&#xff0c;代码能看明白&#xff0c;但是非常不科学&#xff0c;不符合逻辑&#xff0c;然后我就有点无奈&#xff0c;虽说是做了很多年的老程序的&#xff0c;但是遇到…

小目标检测顶会新思路!最新成果刷爆遥感SOTA,参数小了18倍

遥感领域的小目标检测一直是个具有挑战性和趣味性的研究方向&#xff0c;同时也是顶会顶刊的常客。但不得不说&#xff0c;今年关于遥感小目标检测的研究热情尤其高涨&#xff0c;已经出现了很多非常优秀的成果。 比如SuperYOLO方法&#xff0c;通过融合多模态数据并执行高分辨…

数据库安全性控制

‍ 在当今信息化时代&#xff0c;数据库安全性 对于保护数据免受非法访问和损害至关重要。无论是个人数据还是企业机密&#xff0c;数据库安全性控制都能有效地防范潜在的威胁。本文将为你深入浅出地介绍数据库安全性控制的关键方法和机制&#xff0c;帮助你轻松掌握这一重要概…

vulnhub靶机:21 LTR: Scene1

下载 下载地址&#xff1a;https://www.vulnhub.com/entry/21ltr-scene-1,3/ 导入靶机 一直按默认的来&#xff0c;一直下一步 修改网卡 修改靶机和 kali 攻击机网络模式为仅主机模式 把仅主机模式的 IP 修改为 192.168.2.0 信息收集 主机发现 arp-scan -l 靶机 IP 是 192.…

Windows系统下安装Redis

文章目录 1、下载Redis安装包2、解压压缩包3、运行Redis4、Redis连接检测5、Redis相关设置5.1设置环境变量PATH5.2Redis 配置文件修改 1、下载Redis安装包 Windows版本的Redis可以在Github中下载&#xff1a;下载Redis 2、解压压缩包 将下载的压缩包解压到某个目录下&#…

微服务CI/CD实践(五)Jenkins Docker 自动化构建部署Java微服务

微服务CI/CD实践系列&#xff1a; 微服务CI/CD实践&#xff08;一&#xff09;环境准备及虚拟机创建 微服务CI/CD实践&#xff08;二&#xff09;服务器先决准备 微服务CI/CD实践&#xff08;三&#xff09;Jenkins部署及环境配置 微服务CI/CD实践&#xff08;四&#xff09;…

c++20 std::format 格式化说明

在标头<format>定义 ()功能很强大&#xff0c;它把字符串当成一个模板&#xff0c;通过传入的参数进行格式化&#xff0c;并且使用大括号‘{}’作为特殊字符代替‘%’。 1、基本用法 &#xff08;1&#xff09;不带编号&#xff0c;即“{}”&#xff08;2&#xff09;带…

学会使用西门子博途Startdrive中的测量功能

工程师在驱动调试过程中&#xff0c;往往需要对驱动系统的性能进行分析及优化&#xff0c;比如说借助于调试软件中的驱动器测量功能&#xff0c;可以得到驱动系统的阶跃响应、波特图等&#xff0c;以此为依据工程师可以调整速度控制器、电流控制器的相关参数&#xff0c;使驱动…

今天一定要彻底卸载Windows Denfender!攻略给你了

最近有小伙伴吐槽&#xff1a;明明都已经把Windows Defender关了&#xff0c;为啥它还会时不时拦截我下载的文件&#xff1f; 小白就问&#xff1a;明明是谁&#xff1f; 嗯…… 肯定有小伙伴遇到同样的问题&#xff0c;Windows Defender已经关了&#xff0c;但好像并没有完…