Giúp mình về bài thực hành LT Window
2 posters
Trang 1 trong tổng số 1 trang
Giúp mình về bài thực hành LT Window
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.
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
Re: Giúp mình về bài thực hành LT Window
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.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.
Đ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- Tổng số bài gửi : 24
Join date : 29/10/2009
Age : 38
Đến từ : HCTH083C
Re: Giúp mình về bài thực hành LT Window
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
Similar topics
» Bài thực hành LTWin,Giúp mình với!!!!!!!!
» BAI THUC HANH SO 2 WINDOW
» Thi thuc hanh mon thuat giai: Khi nao lop mình thi thực hành vay các ban?
» Thông báo dời lịch thi thực hành môn LT Window
» Co ai co de thi thuc hanh LTrinh Window khoa truoc khong?
» BAI THUC HANH SO 2 WINDOW
» Thi thuc hanh mon thuat giai: Khi nao lop mình thi thực hành vay các ban?
» Thông báo dời lịch thi thực hành môn LT Window
» Co ai co de thi thuc hanh LTrinh Window khoa truoc khong?
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết