Đề thi môn lập trình c trên windows

16 354 0
Đề thi môn lập trình c trên windows

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỀ THI MÔN LẬP TRÌNH C TRÊN WINDOWS Đề 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) { case IDM_GETTEXT: if(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: return DefWindowProc(hWnd, message, wParam, lParam); } 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); EnableWindow(GetDlgItem(hDlg, IDC_TOP), FALSE); EnableWindow(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; case IDOK: if(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; } break; } return FALSE; } ĐỀ THI MÔN LẬP TRÌNH C TRÊN WINDOWS Đề thi mẫu số 2 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. Trình bày hiểu biết của anh (chị) về cơ chế GDI của các ứng ụng trên MS Windows Giải thích quy trình xuất (các) đối tượng đồ họa ra thiết bị xuất (ví dụ xuất ra màn hình). Quy trình này được thể hiện và xử lý như thế nào khi cài đặt chương trình? 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) { PAINTSTRUCT ps; HDC hDC, hSrcMemDC, hDestMemDC; HBITMAP hBmp, hOldBmp, hBlankBmp, hOldBlankBmp; static RECT rBmp, rClient; static POINT ptCenter, ptVirDist; switch (message) { case WM_CREATE: GetClientRect(hWnd, rClient); ptCenter.x = (rClient.right + rClient.left)2; ptCenter.y = (rClient.bottom + rClient.top)2; ptVirDist.x = BMP_WIDTH2; Ghi chú: BMP_WIDTH và BMP_HEIGHT là ptVirDist.y = BMP_HEIGHT2; kích thước một ảnh trong tập tin tài nguyên break; case WM_PAINT: hDC = BeginPaint(hWnd, ps); hSrcMemDC = CreateCompatibleDC(hDC); hDestMemDC = CreateCompatibleDC(hDC); hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_EXAM)); Ảnh trong tập tin tài nguyên hBlankBmp = CreateCompatibleBitmap(hDC, rClient.right, rClient.bottom); hOldBmp = (HBITMAP)SelectObject(hSrcMemDC, hBmp); hOldBlankBmp = (HBITMAP)SelectObject(hDestMemDC, hBlankBmp); rBmp.left = ptCenter.xptVirDist.x; rBmp.top = ptCenter.yptVirDist.y; rBmp.right = ptCenter.x+ptVirDist.x; rBmp.bottom = ptCenter.y+ptVirDist.y; StretchBlt(hDestMemDC, rBmp.left, rBmp.top, rBmp.rightrBmp.left, rBmp.bottom rBmp.top, hSrcMemDC, 0, 0, BMP_WIDTH, BMP_HEIGHT, SRCCOPY); BitBlt(hDC, rBmp.left, rBmp.top, rBmp.rightrBmp.left, rBmp.bottomrBmp.top, hDestMemDC, rBmp.left, rBmp.top, SRCCOPY); SelectObject(hSrcMemDC, hOldBmp); SelectObject(hDestMemDC, hOldBlankBmp); DeleteObject(hBmp); DeleteObject(hBlankBmp); DeleteDC(hSrcMemDC); DeleteDC(hDestMemDC); EndPaint(hWnd, ps); break; case WM_SIZE: GetClientRect(hWnd, rClient); ptCenter.x = (rClient.right + rClient.left)2; ptCenter.y = (rClient.bottom + rClient.top)2; break; case WM_LBUTTONDOWN: if( (rBmp.leftBMP_WIDTH2)>0 (rBmp.topBMP_HEIGHT2)>0 ) { ptVirDist.x += BMP_WIDTH2; ptVirDist.y += BMP_HEIGHT2; InvalidateRect(hWnd, rClient, TRUE); } break; case WM_RBUTTONDOWN: if( (rBmp.left+BMP_WIDTH2)

Ngày đăng: 21/10/2014, 08:27

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan