windows程式設計——飛機大戰筆記(單文檔檔案登陸介面)

來源:互聯網
上載者:User

標籤:

//////////////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:  在此添加控制項通知處理常式代碼
}
這就是退出按鈕的開關,,,,至於一些變數,都添加在相應的標頭檔裡吧,一定要記得初始化,要不會亂套的,,,

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

這樣就車不多了

,不多說了

 

 

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

windows程式設計——飛機大戰筆記(單文檔檔案登陸介面)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.