#include<windows.h>
HINSTANCE hInst;
HINSTANCE hInstance;
MSG msg;
char lpszClassName[]="window_class";
char * ShowText;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void OnLButtonDown(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
void OnPaint(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
void OnDestroy(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
class CFrameWnd
{
public:
HWND hWnd;
public:
int RegisterWindow();
void Create(LPCTSTR lpClassName,
LPCTSTR lpWindowName);
void ShowWindow(int nCmdName);
void UpdateWindow();
};
int CFrameWnd::RegisterWindow ()
{
WNDCLASS wc;
wc.style=0;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName=lpszClassName;
return RegisterClass(&wc);
}
void CFrameWnd::Create (LPCTSTR lpClassName,LPCTSTR lpWindowName)
{
RegisterWindow();
hInst=hInstance;
hWnd=CreateWindow( lpszClassName,
lpWindowName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
}
void CFrameWnd::ShowWindow(int nCmdShow)
{
::ShowWindow(hWnd,nCmdShow);
}
void CFrameWnd::UpdateWindow ()
{
::UpdateWindow (hWnd);
}
class CWinApp
{
public:
CWinApp*m_pCurrentWinApp;
public:
CWinApp();
~CWinApp();
public:
CFrameWnd*m_pMainWnd;
public:
virtual BOOL InitInstance(int nCmdShow);
int Run();
};
CWinApp::CWinApp ()
{
m_pCurrentWinApp=this;
}
BOOL CWinApp::InitInstance (int nCmdShow)
{
m_pMainWnd=new CFrameWnd;
m_pMainWnd->Create(NULL,"封裝的Windows程式");
m_pMainWnd->ShowWindow(nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
int CWinApp::Run()
{
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
CWinApp::~CWinApp()
{
delete m_pMainWnd;
}
class CmyWnd:public CFrameWnd
{
};
class CMyApp:public CWinApp
{
public:
BOOL InitInstance(int nCmdShow);
};
int CMyApp::InitInstance (int nCmdShow)
{
CMyWnd*pMainWnd;
pMainWnd=new CMyWnd;
pMainWnd->Create(NULL,"應用表單的派生類的程式");
pMainWnd->ShowWindow(nCmdShow);
pMainWnd->UpdateWindow();
m_pMainWnd=pMainWnd;
return TRUE;
}
CMyApp MyApp;
CWinApp * AfxGetApp()
{
return MyApp.m_pCurrentWinApp;
}
uj5u.com熱心網友回復:
個人覺得SDK純API方式撰寫Windows程式已經過時了,效率太低,了解一下原理就可以了,主要是訊息機制。圖形用戶界面(GUI)編程可以學習C++ Builder,架構先進(和C#一樣拖控制元件),入門比較容易。
C++ Builder是真正的可視化的開發工具。C++ Builder可以用滑鼠拖拉控制元件加上設定屬性輕松的“設計”出一個程式的圖形用戶界面,利用可視的組件/控制元件像“搭積木”一樣,以“所見即所得”的方式搭建應用程式的界面,這也是C++ Builder這個名字中Builder的概念。這樣,只需要用C++語言撰寫業務邏輯代碼,類似于DOS下文本界面編程,只要專注于實作業務邏輯功能就可以了,代碼非常簡潔。資料的輸入和表現,都在圖形用戶界面,非常直觀、易用。這就是RAD開發(Rapid Application Development,快速應用程式開發)。
書籍推薦:
《C++Builder 6程式設計教程(第二版)》 (陸衛忠,劉文亮 等編著 /2011-04-01 /科學出版社)(當當網)
《C++Builder 6編程實體精解》(趙明現),PDF,是數字版的,非掃描版的,里面還有一個俄羅斯方塊游戲的完整實作。
《精彩C++Builder 6程式設計》(臺灣 吳逸賢),里面有10幾個簡單小游戲的實作,可以自己看懂以后再重寫,才是自己掌握的。
《C++ Builder 5高級編程實體精解》(劉濱 編著)都是較大的實用的程式。
C++ Builder書籍下載:
https://pan.baidu.com/s/13n9hxwVj9ai1p5L2rQC83Q
uj5u.com熱心網友回復:
是不是你頭檔案中沒有宣告啊轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8059.html
標籤:基礎類
上一篇:位域如何設定默認值?
下一篇:來個大神啊,救命啊
