//Test.h
#include <afxwin.h>
#define IDC_PRINT 0X0001
class CTestApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CTestWnd:public CWnd
{
public:
CTestWnd();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPushButtonClicked();
private:
CButton m_wndPushButton;
DECLARE_MESSAGE_MAP()
};
//Test.cpp
#include "Test.h"
CTestApp test;
BOOL CTestApp::InitInstance()
{
m_pMainWnd=new CTestWnd;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CTestWnd,CWnd)
ON_BN_CLICKED(IDC_PRINT,OnPushButtonClicked)
ON_WM_CREATE()
END_MESSAGE_MAP()
CTestWnd::CTestWnd()
{
CString strWndClass=AfxRegisterWndClass(
0,
AfxGetApp()->LoadStandardCursor(IDC_ARROW),
(HBRUSH)(COLOR_3DSHADOW),
AfxGetApp()->LoadStandardIcon(IDI_WINLOGO));
CreateEx(0,strWndClass,_T("Hello"),
WS_OVERLAPPED|WS_SYSMENU|WS_CAPTION|WS_MINIMIZEBOX,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,NULL);
CRect rect(0,0,200,150);
CalcWindowRect(&rect);
SetWindowPos(NULL,0,0,rect.Width(),rect.Height(),
SWP_NOZORDER|SWP_NOMOVE|SWP_NOREDRAW);
}
afx_msg int CTestWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(-1==CWnd::OnCreate(lpCreateStruct))return -1;
CClientDC dc(this);
CString str(_T("Hello"));
CSize s=dc.GetTextExtent(str);
m_wndPushButton.Create(str,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(40,30,40+s.cx*2,30+s.cy*2),
this,IDC_PRINT);
return 0;
}
void CTestWnd::OnPushButtonClicked()
{MessageBox(_T("Hello"));}