... về kích thư c vùng client c a c a sổ hiện hành
RECT rect;
GetClientRect(hWnd, &rect);
// Tạo MDC tương thích với DC c a c a sổ
HDC hMemDC;
hMemDC = CreateCompatibleDC(hdc);
// Chọn ... liệu, cc
thông điệp này sẽ đư c truyền một c ch đồng
bộ, đầu tiên thủ t c Windows c a c a sổ trên
c ng bị mất kích hoạt, sau đó đến thủ t c của
c a sổ trên c ng đư c kích hoạt. Nếu cc cửa ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground...
... với c a
sổ (Window Class). Đây là c u tr c dữ liệu mô tả tính chất c a c a
sổ, lần lượt ta gán cc giá trị ban đầu cho cc thành phần c a c u
tr c lớp c a sổ, bao gồm: Kích thư c, kiểu, địa chỉ ... này đư c đặt trongcc thư viện liên kết động
(Dynamic Link Library – DLL). Cc chương trình ứng dụng sử dụng chúng
thông qua cc lời gọi hàm và chỉ chia sẻ đư c khi trong máy cc i đặt
Windows. ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground...
... với c a
sổ (Window Class). Đây là c u tr c dữ liệu mô tả tính chất c a c a
sổ, lần lượt ta gán cc giá trị ban đầu cho cc thành phần c a c u
tr c lớp c a sổ, bao gồm: Kích thư c, kiểu, địa chỉ ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground ... (HBRUSH)(COLOR _WINDOW+ 1);
wcex.lpszMenuName = (LPCSTR)IDC_BT1;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance,(LPCTSTR)IDI_SMALL);
return RegisterClassEx(&wcex);...
...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground ...
2. Cc thư viện lậptrìnhc a Windows
SDK – Software Development Kit
Là bộ thư viện lậptrình nền tảng c a HĐH Windows.
Cung c p tất ccc công cc n thiết để xây dựng 1 ứng dụng trên
Windows. ... này đư c đặt trongcc thư viện liên kết động
(Dynamic Link Library – DLL). Cc chương trình ứng dụng sử dụng chúng
thông qua cc lời gọi hàm và chỉ chia sẻ đư c khi trong máy cc i đặt
Windows....
... với c a
sổ (Window Class). Đây là c u tr c dữ liệu mô tả tính chất c a c a
sổ, lần lượt ta gán cc giá trị ban đầu cho cc thành phần c a c u
tr c lớp c a sổ, bao gồm: Kích thư c, kiểu, địa chỉ ... liệu, cc
thông điệp này sẽ đư c truyền một c ch đồng
bộ, đầu tiên thủ t c Windows c a c a sổ trên
c ng bị mất kích hoạt, sau đó đến thủ t c của
c a sổ trên c ng đư c kích hoạt. Nếu cc cửa ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground...
... với c a
sổ (Window Class). Đây là c u tr c dữ liệu mô tả tính chất c a c a
sổ, lần lượt ta gán cc giá trị ban đầu cho cc thành phần c a c u
tr c lớp c a sổ, bao gồm: Kích thư c, kiểu, địa chỉ ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground ...
với: hwnd chỉ số c a sổ c n hiển thị.
nShow c ch th c hiển thị c a c a sổ, tham số này đư c nhận giá trị
lần đầu tiên c a hàm WinMain(), chúng c thể nhận cc giá trị sau:
Macro C ch th c hiển...
...
(Dynamic Link Library – DLL). Cc chương trình ứng dụng sử dụng chúng
thông qua cc lời gọi hàm và chỉ chia sẻ đư c khi trong máy cc i đặt
Windows.
Vài điểm kh c biệt giữa lậptrình Windows ... Không ccc cửa sổ con.
9 Ví dụ: NotePad, Paint,…
• MDI – Multi Document Interface:
9 Một c a sổ làm vi c chính (Frame window) và nhiều c a sổ con
(Child window) .
Bài giảng: LậptrìnhC for ... 1:Giới thiệu chung Trần Minh Thái
2. Cc thư viện lậptrìnhc a Windows
SDK – Software Development Kit
Là bộ thư viện lậptrình nền tảng c a HĐH Windows.
Cung c p tất ccc công cc n thiết...
... liệu, cc
thông điệp này sẽ đư c truyền một c ch đồng
bộ, đầu tiên thủ t c Windows c a c a sổ trên
c ng bị mất kích hoạt, sau đó đến thủ t c của
c a sổ trên c ng đư c kích hoạt. Nếu cc cửa ...
if(iBrush == IDC_HS_CROSS)
hbrush=CreateHatchBrush(HS_CROSS,
crColor[iColor - IDC_BLACK]);
if(iBrush == IDC_HS_DIAGCROSS)
hbrush=CreateHatchBrush(HS_DIAGCROSS,
crColor[iColor - IDC_BLACK]);
if(iBrush ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground...
... liệu, cc
thông điệp này sẽ đư c truyền một c ch đồng
bộ, đầu tiên thủ t c Windows c a c a sổ trên
c ng bị mất kích hoạt, sau đó đến thủ t c của
c a sổ trên c ng đư c kích hoạt. Nếu cc cửa ...
RECT rect;
GetClientRect(hWnd, &rect);
// Tạo MDC tương thích với DC c a c a sổ
HDC hMemDC;
hMemDC = CreateCompatibleDC(hdc);
// Chọn một đối tượng bitmap để mở rộng vùng hiển thị cho ...
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BT1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground...
... ReleaseDC( HWND hWnd,
HDC hDC // handle to DC );
Chọn cc đối tượng vẽ vào trong DC
•HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj);
5
HBRUSH
• CreateBrushIndirect: Creates a brush with a specified ... tả:
Hãy đóng gói HDC thành lớp CMyDC nhằm hỗ trợ người lậptrìnhC trên
Windows.
• Yêu c u:
classCMyDC {
Public:
PAINTSTRUCT m_ps;
HDC m_hdc;
HWND m_hwnd;
HDC BeginPaint(HWND);
void EndPaint();
void ... pattern
• CreateSolidBrush: Creates a brush with a solid color
•Ví dụ:
hBr = CreateSolidBrush(255);
hOldBr = SelectObject(hdc,hBr);
Rectangle(hdc,0,0,400,200);
…
14
Bài tập 4
•Mô tả:
Viết một chương trình...
... CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BBBBB);
wcex.hCursor ... LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR _WINDOW+ 1);
wcex.lpszMenuName= (LPCSTR)IDC_BBBBB;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(hInstance,(LPCTSTR)IDI_SMALL);
RegisterClassEx(&wcex);
18
Ví ... WM_DESTROY
•WM_PAINT
•WM_TIMER
Bài tập 2
H
V
L
14
Bài tập 1
•Mô tả bài toán:
–Nhấn chuột trái chọn điểm đầu
–Thả chuột trái chọn điểm cuối
–Khi c thay đổi thì vẽ lại ra màn hình
•Yêu c u:
–Thiết kế dữ...