//hello.cpp
#include "afxwin.h"
#define IDB_BUTTON 100
//100以内的值為系統所用,是以此值要大于99
#define IDT_TIMER_LEN 200
#define IDM_SCROLLBAR 100
const int MAX_RANGE = 100;
const int MIN_RANGE = 0;
class CHelloApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
CHelloApp HelloApp;
class CHelloWindow:public CFrameWnd
{
CStatic *cs;
CFont *font;
CButton *button;
CScrollBar *sb;
public:
CHelloWindow();
afx_msg void HandleButton();
afx_msg void OnSize(UINT,int,int);
afx_msg void OnTimer(UINT);
afx_msg void OnHScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar);
DECLARE_MESSAGE_MAP();
};
void CHelloWindow::HandleButton()
{
MessageBeep(-1);
//MessageBox("這是一個單文檔應用程式","消息框",MB_ICONEXCLAMATION|MB_OKCANCEL);
}
void CHelloWindow::OnSize(UINT nType,int cx,int cy)
{
CRect r;
GetClientRect(&r);
r.InflateRect(-20,-20);
button->MoveWindow(r);
}
void CHelloWindow::OnTimer(UINT id)
{
//MessageBeep(-1);
}
void CHelloWindow::OnHScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar)
{
//MessageBeep(-1);
int pos;
pos = sb->GetScrollPos();
switch (nSBCode)
{
case SB_LINEUP:
pos -= 1;
break;
case SB_LINEDOWN:
pos += 1;
break;
case SB_PAGEUP:
pos -= 10;
break;
case SB_PAGEDOWN:
break;
pos += 10;
case SB_TOP:
pos = MIN_RANGE;
break;
case SB_BOTTOM:
pos = MAX_RANGE;
break;
case SB_THUMBPOSITION:
pos = nPos;
break;
default:
return;
}
if (pos<MIN_RANGE)
{
pos = MIN_RANGE;
}
else if (pos>MAX_RANGE)
{
pos = MAX_RANGE;
}
sb->SetScrollPos(pos,TRUE);
}
BEGIN_MESSAGE_MAP(CHelloWindow,CFrameWnd)
ON_BN_CLICKED(IDB_BUTTON,HandleButton)
ON_WM_SIZE()
ON_WM_TIMER()
ON_WM_HSCROLL()
END_MESSAGE_MAP()
BOOL CHelloApp::InitInstance()
{
m_pMainWnd = new CHelloWindow();
//int m_nCmdShow=SW_SHOWNORMAL;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return true;
};
CHelloWindow::CHelloWindow()
{
CRect r;
Create(NULL,"CStatic Test",WS_OVERLAPPEDWINDOW,CRect(0,0,800,600));
SetTimer(IDT_TIMER_LEN,1000,NULL);
GetClientRect(&r);
//r.InflateRect(-20,-20);
cs = new CStatic();
cs->Create("Now is the time for all good men to come to the aid of their country",
WS_CHILD|WS_VISIBLE|WS_BORDER|SS_LEFT,CRect(10,20,150,150),this);
sb = new CScrollBar();
sb->Create(WS_CHILD|WS_VISIBLE|SBS_HORZ,CRect(10,10,r.Width()-10,30),this,IDM_SCROLLBAR);
sb->SetScrollRange(MIN_RANGE,MAX_RANGE,TRUE);
font = new CFont;
//36pixel
//700字型的密度(400是normal的,700是黑bold,值範圍是1到1000)
//Arial,Courier New,Symbol,Times New Roman,Wingdings
font->CreateFont(18,0,0,0,700,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"arial");
cs->SetFont(font);
r.InflateRect(-40,-80);
button = new CButton();
button->Create("Push me",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
r,this,IDB_BUTTON);//CRect(50,60,30,20)
}