Visual – MFC – Password – MessageBox API – C++

Publicado: 2 de abril de 2014 em C/C++

Para validar senhas em C++ você deve usar o componente Edit Control com sua propriedade Password alterada para True, deste modo o controle altera a visualização dos caracteres comuns para caracteres “*”.

MessageBox

Envia mensagens para o usuário através da API do Windows.

Visual Studio

Para criar um programa que valida senhas siga os seguintes passos:

  1. Crie um novo projeto C++ MFC Application Dialog Based.
  2. Coloque os componentes: Static Text, Edit Control e um Button no dialogo, use a figura abaixo para o design:

    password_design

    Design

  3. Crie uma variável chamada m_senha para o Edit Control.
  4. Mude a propriedade Password do Edit Control para True.
  5. Crie um evento para o clique do botão.
  6. Use o código abaixo e complete seu código gerado automaticamente.
password_prog

Programa

 

Exemplo:

Neste exemplo criamos um campo de entrada de senha, o validamos e exibimos mensagens para o usuário.

C++

// Código gerado automaticamente
// senhacppDlg.cpp : implementation file
//

#include "stdafx.h"
#include "senhacpp.h"
#include "senhacppDlg.h"
#include "afxdialogex.h"
#include <Windows.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CsenhacppDlg::CsenhacppDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CsenhacppDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CsenhacppDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_EDIT1, m_senha);
}

BEGIN_MESSAGE_MAP(CsenhacppDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CsenhacppDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

BOOL CsenhacppDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	SetIcon(m_hIcon, TRUE);			
	SetIcon(m_hIcon, FALSE);		

	return TRUE;  
}

void CsenhacppDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); 

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
				
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

HCURSOR CsenhacppDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

// Desenvolvimento Aberto
// nosso código começa aqui

// Verifica senha
static bool  verificaSenha(CString psenha)
{
	bool correto = true;
	
	// Retorna senha de alguma fonte
	CString rsenha = L"daaberto";

	// Verifica tamanho
	if (psenha.GetLength() != rsenha.GetLength())
	{
		correto = false;
	}
	else
	{
		// Verifica senha
		if (psenha != rsenha)
		{
			correto = false;
		}
	}

	return correto;
}

// Cria menssagens
int menssagem(bool correto)
{
	LPCWSTR msg;

	if (correto)
	{
		msg = L"A Senha está correta";
	}
	else
	{
		msg = L"A Senha está incorreta";
	}

	int msgboxID = MessageBox(
		NULL,
		msg,
		(LPCWSTR)L"Menssagem",
		MB_ICONWARNING | MB_OK | MB_DEFBUTTON2
		);

	switch (msgboxID)
	{
	case IDOK:

		break;	
	}

	return msgboxID;
}

// Evento do botão
void CsenhacppDlg::OnBnClickedButton1()
{
	// Exibe menssagem
	CString psenha;

	m_senha.GetWindowTextW(psenha);

	if (verificaSenha(psenha))
	{
		menssagem(true);
	}
	else
	{
		menssagem(false);
	}
	
}
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s