Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Giúp mình về bài thực hành LT Window

2 posters

Go down

Giúp mình về bài thực hành LT Window Empty Giúp mình về bài thực hành LT Window

Bài gửi  lymotonew 29/11/2009, 09:37

B1: Bổ sung dữ liệu thành phần vào lớp CChildView :

private:
enum{MIN_FONTSIZE=30,STEP_SIZE=5};

void DecreaseFontSize();
void IncreaseFontSize();
CRect m_rtShowArea;
CRect m_rtInputArea;
CString m_sShowText;
CString m_sInputText;

CFont m_font;
int m_nFontSize;
CRect m_rtTextBound;

bool m_bOutlineMode;
CBrush m_brush;
CPen m_pen;
COLORREF m_clrTextColor;

bool m_bOpaqueMode;
COLORREF m_clrBkColor;

B2: – Khởi tạo giá trị cho các dữ liệu thành phần của CChildView
o Phương thức thiết lập

CChildView::CChildView()
{
m_sShowText = _T("Hello");
m_sInputText = _T("");

m_nFontSize = 30;

m_bOutlineMode = false;
m_bOpaqueMode = false;

m_pen.CreatePen(PS_SOLID,4,RGB(0,0,255));
m_brush.CreateHatchBrush(HS_CROSS, RGB(255,0,255));

m_clrTextColor = RGB(255,0,255);
m_clrBkColor = RGB(255,150,255);
}

o Trình xử lý thông điệp WM_SIZE

void CChildView::OnSize(UINT nType, int cx, int cy)
{
CWnd ::OnSize(nType, cx, cy);
m_rtInputArea.SetRect(0,cy-50,cx,cy);
m_rtShowArea.SetRect(0,0,cx,cy-m_rtInputArea.Height());
}

o Trình xử lý thông điệp WM_CREATE

int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd ::OnCreate(lpCreateStruct) == -1)
return -1;


CClientDC dc(this);
LOGFONT lf;

ZeroMemory(&lf,sizeof(lf));

lf.lfCharSet = ANSI_CHARSET;


lf.lfHeight = -MulDiv(m_nFontSize,dc.GetDeviceCaps(LOGPIXELSY),72);

lf.lfWeight = FW_EXTRABOLD;
_tcscpy(lf.lfFaceName, _T("Arial"));


m_font.CreateFontIndirect(&lf);
dc.SelectObject(&m_font);


dc.DrawText(m_sShowText,&m_rtTextBound,DT_CALCRECT);

return 0;
}

Cho mình hỏi m_rtTextBound là vùng HCN nào vì mình chưa thấy nó được khởi tạo ở đâu và vì sao phải sử dụng thêm toán tử tham chiếu & cho biến này.

lymotonew

Tổng số bài gửi : 15
Join date : 19/10/2009
Age : 38
Đến từ : Bình Thuận

Về Đầu Trang Go down

Giúp mình về bài thực hành LT Window Empty Re: Giúp mình về bài thực hành LT Window

Bài gửi  DoTanLoc_I83C 30/11/2009, 09:05

lymotonew đã viết:
int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
dc.DrawText(m_sShowText,&m_rtTextBound,DT_CALCRECT);
return 0;
}
Cho mình hỏi m_rtTextBound là vùng HCN nào vì mình chưa thấy nó được khởi tạo ở đâu và vì sao phải sử dụng thêm toán tử tham chiếu & cho biến này.
m_rtTextBound là hình chữ nhật ngầm định, dùng để lưu lại kích thước khung chứa đoạn text trong m_sShowText.
Đoạn màu đỏ cũng chính là đoạn khởi tạo của m_rtTextBound đó bạn.
Tham số DT_CALCRECT được truyền vào dc.DrawText() dùng để tính toán kích thước khung hình chữ nhật chứa đoạn text nằm trong biến m_sShowText, sau đó nó tự động ghi lại kích thước khung hình đó vào hình chữ nhật m_rtTextBound.
Toán tử tham chiếu "&" giúp ta có thể truy cập được giá trị của khung hình chữ nhật đó ở những nơi khác sau khi nó đã được khởi tạo ở OnCreate().
DoTanLoc_I83C
DoTanLoc_I83C

Tổng số bài gửi : 24
Join date : 29/10/2009
Age : 38
Đến từ : HCTH083C

Về Đầu Trang Go down

Giúp mình về bài thực hành LT Window Empty Re: Giúp mình về bài thực hành LT Window

Bài gửi  lymotonew 1/12/2009, 15:21

Cảm ơn vì câu trả lời của bạn đã giúp mình hiểu thêm về môn học này.Thank so muck!

lymotonew

Tổng số bài gửi : 15
Join date : 19/10/2009
Age : 38
Đến từ : Bình Thuận

Về Đầu Trang Go down

Giúp mình về bài thực hành LT Window Empty Re: Giúp mình về bài thực hành LT Window

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết