日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)...

發布時間:2023/12/1 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

windows程序設計——飛機大戰筆記(單文檔文件登陸界面)

//2015/07/21

/by xbw///

/環境 VS 2013

飛機大戰做的差不多了,閑來無事加點高大上的東西,關于單文檔的登陸界面;;;

界面有點丑,但是足夠賬號登陸了,,先試一把;

還不錯吧,該有的都有了;;

下面說一下過程 、、、、、、

首先,我們要在資源視圖中創建一個Dialog對話框;;;

先大體畫一下這個對話框,自己設計就好了,然后在空白處右鍵添加類,給這個對話框添加類;

這里呢,我添加了一個loading類,英語不是太好,胡亂寫點高大上的英文;;;

在哪用對話框我們就需要吧#include "loading.h"加為他的頭文件,,,

這樣呢,我在view類中建了一個函數

BOOL CPlaneGameView::Indlg()

{

loading dlg;

//opening = TRUE;

if (dlg.DoModal() == IDOK)

{

Invalidate();

opening = dlg.open1;

}

return TRUE;

}

調用在

void CPlaneGameView::OnInitialUpdate()

{

CView::OnInitialUpdate();

// TODO: 在此添加專用代碼和/或調用基類

//登陸界面

Indlg();

//初始化游戲

if (!opening)

InitGame();

else

exit(0);

}

這個函數中會依次運行;

這樣的話登陸界面就會先于單文檔窗口顯示,

至于opening是我設置的開關,就是點登陸界面的退出按鈕時就會執行exit(0),整個程序就結束了,之前遇到的問題是,點了退出按鈕后,程序反而運行了飛機大戰主程序,哭笑不得,索性把這個按鈕刪掉了,玩家只能進入游戲才能退出,后來一想這不扯呢嗎,哈哈,于是弄了起來;;

先來段loading.cpp的代碼;

完整的******

// loading.cpp : 實現文件

//

#include "stdafx.h"

#include "PlaneGame.h"

#include "loading.h"

#include "afxdialogex.h"

// loading 對話框

IMPLEMENT_DYNAMIC(loading, CDialogEx)

loading::loading(CWnd* pParent /*=NULL*/)

: CDialogEx(loading::IDD, pParent)

, open(false)

, open1(false)

{

}

loading::~loading()

{

}

void loading::DoDataExchange(CDataExchange* pDX)

{

}

BEGIN_MESSAGE_MAP(loading, CDialogEx)

ON_WM_NCHITTEST()

ON_WM_CTLCOLOR()

ON_BN_CLICKED(IDCANCEL, &loading::OnBnClickedCancel)

ON_BN_CLICKED(IDOK, &loading::OnBnClickedOk)

ON_BN_CLICKED(IDOK2, &loading::OnBnClickedOk2)

END_MESSAGE_MAP()

// loading 消息處理程序

//鼠標拖動窗口移動

LRESULT loading::OnNcHitTest(CPoint point)

{

// TODO: 在此添加消息處理程序代碼和/或調用默認值

ScreenToClient(&point);

CRect rc;

GetClientRect(&rc);

if (rc.PtInRect(point))

{

return HTCAPTION;

}

else

{

return CDialogEx::OnNcHitTest(point);

}

}

HBRUSH loading::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

//HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

//CFont font;

//font.CreatePointFont(200, _T("宋體"), NULL);

//GetDlgItem(IDC_STATIC)->SetFont(&font);

// TODO: 在此更改 DC 的任何特性

//在OnInitDialog()函數中添加:

// TODO: 在此添加額外的初始化代

if (nCtlColor == CTLCOLOR_STATIC)

{

pDC->SetTextColor(RGB(200, 100, 50));

pDC->SetBkMode(RGB(200, 100, 50)); //設置背景透明

return HBRUSH(GetStockObject(HOLLOW_BRUSH));

}

// TODO: 如果默認的不是所需畫筆,則返回另一個畫筆

//return hbr;

return 0;

}

void loading::OnBnClickedCancel()

{

// TODO: 在此添加控件通知處理程序代碼

open = FALSE;

CDialogEx::OnCancel();

}

void loading::OnBnClickedOk()

{

// TODO: 在此添加控件通知處理程序代碼

CString name;

CString pwd;

int flog = 1;

GetDlgItem(IDC_EDIT3)->GetWindowTextW(name);

GetDlgItem(IDC_EDIT4)->GetWindowTextW(pwd);

if (name.Compare(_T("xbw12138")) || pwd.Compare(_T("201401061130")))

{

if (name.Compare(_T("xbw12138")))

{

flog = 0;

MessageBox(_T("用戶名不正確"), _T("提示"));

}

if (pwd.Compare(_T("201401061130"))&&flog==1)

MessageBox(_T("密碼不正確"), _T("提示"));

}

else

{

OnOK();

}

}

void loading::OnBnClickedOk2()

{

open1 = FALSE;

// TODO: 在此添加控件通知處理程序代碼

}

LRESULT loading::OnNcHitTest(CPoint point)這個是添加的消息,具體什么消息不再這說明了,請看我的其他文章,鼠標拖動對話框移動的那篇,對,就是這個功能;

HBRUSH loading::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)也是添加的消息,為了使static text等一些空間透明,在有背景圖的時候效果很明顯,不過這里裝逼失敗了,一會文章補上;;;;;

void loading::OnBnClickedCancel()

{

// TODO:? 在此添加控件通知處理程序代碼

open = FALSE;

CDialogEx::OnCancel();

}

這段已經沒用了,取消的空間已經被我刪除了;;;

void loading::OnBnClickedOk()

{

// TODO:? 在此添加控件通知處理程序代碼

CString name;

CString pwd;

int flog = 1;

GetDlgItem(IDC_EDIT3)->GetWindowTextW(name);

GetDlgItem(IDC_EDIT4)->GetWindowTextW(pwd);

if (name.Compare(_T("xbw12138")) || pwd.Compare(_T("201401061130")))

{

if (name.Compare(_T("xbw12138")))

{

flog = 0;

MessageBox(_T("用戶名不正確"), _T("提示"));

}

if (pwd.Compare(_T("201401061130"))&&flog==1)

MessageBox(_T("密碼不正確"), _T("提示"));

}

else

{

OnOK();

}

}

這段是重點了吧算是,檢查登陸是否正確,,,雖然是個單機,不過這樣也很高大上,后續呢,我將要用xml記錄一些數據,試試能不能實現一個賬號記錄一個分數,弄個排行榜什么的,等我昂;

void loading::OnBnClickedOk2()

{

open1 = FALSE;

// TODO:? 在此添加控件通知處理程序代碼

}

這就是退出按鈕的開關,,,,至于一些變量,都添加在相應的頭文件里吧,一定要記得初始化,要不會亂套的,,,

這樣就基本差不多了,不正確的地方互相交流學習,有問題在下邊留言,我會回復跟您一同解決問題的,

這樣就車不多了

,不多說了

版權聲明:本文為博主原創文章,未經博主允許不得轉載。1樓zhoujielunzhimi昨天 17:20居然看到了exit(0);nexit一般用在console程序中,n界面程序使用PostQuitMessage(0).Re: xbw12138昨天 19:04回復zhoujielunzhimin學習了,謝謝您,我會改進的Re: xbw12138昨天 19:05回復zhoujielunzhimin學習了,謝謝您,我會改進的

總結

以上是生活随笔為你收集整理的MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。