1. 程式人生 > >vc++如何創建窗口

vc++如何創建窗口

pcm != 技術 分享圖片 cmd png lse 訂閱 api

創建一個mfc工程,AppWizard可以用來增加和選擇一些特性

技術分享圖片

可以發現一共有五個類,每一個類都有一個基類,都是mfc基礎類庫中的類

技術分享圖片

例如將一個類拷貝一下,將CFrameWnd到msdn中查找一下,MSDN(Microsoft Developer Network)是早期微軟在推廣Win32 程序設計以及開發工具時,專門為開發人員所提供的一個服務,是使用微軟技術開發軟件或應用程序時必定會參訪的地方,同時它也有提供訂閱的服務

技術分享圖片

例如cwinapp

技術分享圖片

技術分享圖片

理解mfc脈絡,每一種不同的窗口類

創建窗口:createwindow類

技術分享圖片

理清關系。 例如演示Cwind類如何與窗口聯系起來的

技術分享圖片

技術分享圖片

class CWnd
{
public:
bool CreateEx(DWORD dwExStyle)
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HWND hMenu,
HINSTAMCE hInstance,
LPUOIO IpParan);
BOOL ShowWindow(int nCndShow);
BOOL UpdateWindow();
//定義一個句柄的成員變量
public:
HWND n_hWnd;

};
//完成三個函數,返回值 類名::作用於標識符 ,
BOOL CWnd::CreateEx(DWORD dwExStyle)
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HWND hMenu,
HINSTAMCE hInstance,
LPUOIO IpParan);
//完成一個創建窗口的過程,利用win32提供的api函數成員變量保護
{
m_hWnd=::CreateWindowEx(dwExst,lpClassName,dwStyle,dwStyly,x,y,
nWidth,nHeight,hWndParent,HWenu,hInstance,Iparam);
//表示全局函數可以加一個::
BOOL ShowWindow(int nCndShow);
BOOL UpdateWindow();
if(n_hWnd!=NULL)
return TRUE;
else
return FALSE;
}
bool CWnd::ShowWindow(int nCmdShow)
{
return ::ShowWindow(m_hWnd,nCndShow);// ::ShowWindow(m_hWnd,nCndShow);表示是一個全局函數,是一個平臺sdk的函數,
//只要想表示sdk的,全局的,都可以用::來表示,返回值也是bool類型
//當調用createEx函數時,表示函數已經傳過來了,可以直接返回
}

bool CWnd::UpdateWindow(int nCmdShow)
{
return ::UpdateWindow(m_hWnd);// ::ShowWindow(m_hWnd,nCndShow);表示是一個全局函數,是一個平臺sdk的函數,
//只要想表示sdk的,全局的,都可以用::來表示,返回值也是bool類型
//當調用createEx函數時,表示函數已經傳過來了,可以直接返回
}

bool CWnd::UpdateWindow(int nCmdShow)
{
return ::UpdateWindow(m_hWnd);// ::ShowWindow(m_hWnd,nCndShow);表示是一個全局函數,是一個平臺sdk的函數,
//只要想表示sdk的,全局的,都可以用::來表示,返回值也是bool類型
//當調用createEx函數時,表示函數已經傳過來了,可以直接返回
}
//可以粘貼代碼過來
int WINPI WinHain(
HINSTAMCE hInstance,
HINSTAMCE hPreVInstance,
LPSTR IpCmdLine,
int nCmdShow
)

{
WNDCLASS undels;
undels.cbWndExtra=0;
undels.cbClsExtra=0;
....
//註冊
RegisterClass(&wndcls);
//產生窗口,寬度,高度
CWnd wnd;
wnd.CreateEx(...);
//顯示窗口
wnd.ShowWindow(SW_SHOWHORHAL);
//更新窗口
wnd.UpdateWindow();
//循環。。。。
//保存句柄
HWND hwnd;
hwnd=CreateWindowEx();
.....

}

vc++如何創建窗口