Anh chị hãy trình bày phân tích tổng quát các đặc điểm chính của các ứng dụng trên MS Windows.. Anh chị hãy trình bày mô hình thể hiện quy trình nạp và zoom ảnh bitmap?. Giải thích mô
Trang 1Đề thi mẫu số 1
Thời gian: 60 phút. Được phép sử dụng tài liệu.
Câu 1. Anh (chị) hãy trình bày (phân tích) tổng quát các đặc điểm chính của các ứng
dụng trên MS Windows
Câu 2. Anh (chị) hãy trình bày mô hình thể hiện quy trình nạp và zoom ảnh bitmap? Giải
thích mô hình (các hàm) thông qua cơ chế thao tác và thể hiện các đối tượng đồ họa trên MS Windows
Câu 3. Anh (chị) hãy giải thích đoạn code dưới đây, bằng cách cho biết mục đích của
chương trình là gì, thể hiện qua các hàm, biến được cài đặt như thế nào; quy trình khi chương trình thực thi trong thực tế ra sao?
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId) {
Trang 2if(DialogBox(hInst, (LPCTSTR)IDD_GETTEXT, hWnd, (DLGPROC)GetText)==IDOK)
InvalidateRect(hWnd, NULL, TRUE);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam); }
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szContent, strlen(szContent), &rt, uAlignment); EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
Trang 3}
return 0;
}
LRESULT CALLBACK GetText(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
uAlignment = 0; // uAlignment là một biến toàn cục kiểu UINT CheckDlgButton(hDlg, IDC_SINGLELINE, BST_CHECKED);
CheckRadioButton(hDlg, IDC_TOP, IDC_BOTTOM, IDC_VCENTER); CheckRadioButton(hDlg, IDC_LEFT, IDC_RIGHT, IDC_CENTER);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDC_SINGLELINE:
if(IsDlgButtonChecked(hDlg, IDC_SINGLELINE)==BST_CHECKED) {
CheckDlgButton(hDlg, IDC_SINGLELINE, BST_UNCHECKED);
Trang 4EnableWindow(GetDlgItem(hDlg, IDC_VCENTER), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_BOTTOM), FALSE);
}
else
{
CheckDlgButton(hDlg, IDC_SINGLELINE, BST_CHECKED);
EnableWindow(GetDlgItem(hDlg, IDC_TOP), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_VCENTER), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_BOTTOM), TRUE);
}
break;
case IDC_TOP:
case IDC_VCENTER:
case IDC_BOTTOM:
CheckRadioButton(hDlg, IDC_TOP, IDC_BOTTOM,
LOWORD(wParam));
break;
case IDC_LEFT:
case IDC_CENTER:
case IDC_RIGHT:
CheckRadioButton(hDlg, IDC_LEFT, IDC_RIGHT, LOWORD(wParam)); break;
Trang 5if(IsWindowEnabled(GetDlgItem(hDlg, IDC_TOP)))
{
uAlignment |= DT_SINGLELINE;
if(IsDlgButtonChecked(hDlg, IDC_TOP))
uAlignment |= DT_TOP;
else if(IsDlgButtonChecked(hDlg, IDC_VCENTER))
uAlignment |= DT_VCENTER;
else if(IsDlgButtonChecked(hDlg, IDC_BOTTOM))
uAlignment |= DT_BOTTOM;
}
if(IsDlgButtonChecked(hDlg, IDC_LEFT))
uAlignment |= DT_LEFT;
else if(IsDlgButtonChecked(hDlg, IDC_CENTER))
uAlignment |= DT_CENTER;
else if(IsDlgButtonChecked(hDlg, IDC_RIGHT))
uAlignment |= DT_RIGHT;
GetDlgItemText(hDlg, IDC_CONTENT, szContent,
MAX_LOADSTRING); // szContent là biến toàn cục kiểu TCHAR[]
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
Trang 6HPEN CreatePen(int nStyle, int nWidth, COLORREF
crColor);
HBRUSH CreateSolidBrush(COLORREF crSetColor); HGDIOBJ SelectObject(HDC hDC, HGDIOBJ hObj); BOOL DeleteObject(HGDIOBJ hObj);
BOOL Rectangle(HDC hDC, int nLeft, int nTop, int
nRight, int nBottom);
* Lưu ý trình bày chính xác trong phạm vi câu hỏi; không lan man Câu 2 chỉ viết hàm xử lý LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) của cửa sổ chính.