1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình lập trình windows

312 275 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 312
Dung lượng 3,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 6

± Windows, title bar, toolbar, menu bar, status bar

± Thanh –Šዠ… ¯ዓ: File, Edit, Tool, Helpǥ

± ዒ’ –Š‘኶‹: –Šዛዕ‰ …Šዜƒ các ¯‹዆— Š‹዇ chung: Edit

Control, Button Control, CheckboxǥǤ

6

ኼ’–”¿Š‹†‘™•

Trang 8

д…ŠЦŽН’–”¿Š˜‡–-driven

8

ኼ’–”¿Š‹†‘™•

Trang 9

9

ŠØ‰¯‹Ъ’ȋ‹†‘™•‡••ƒ‰‡•Ȍ

‡ ዉ –Šዎ‰ (Windows) ghi Ž኶‹ ዑ‹ •ዠ ‹ዉ š኷› ra

(event) trong ዒ– thông ¯‹ዉ’ (message) và ¯዁–

trong hàng ¯ዘ‹ thông ¯‹ዉ’ (messages queue)

Trang 13

13

Windows Data Types (1)

‡ 0ዋŠ ‰ŠÂƒ Šዕ –ዝ khóa typedef trong các –ኼ’ tin (windef.h;

winbase.h, winuser.h ¯ዛዘ… include trong windows.h).

‡ Ví †ዙ:

± typedef unsigned int UINT;

Trang 14

LONG long 32-bit.

BOOL .LʀX logic True/False

Trang 18

Microsoft style (4) - Calling convention

‡ 0ዋŠ‰ŠÂƒ‹዇—Š‰ዌ‹„ዖ‹‹†‘™•

#define CALLBACK stdcall

#define WINAPI stdcall

#define APIENTRY WINAPI

#define APIPRIVATE stdcall

#define PASCAL stdcall

‡ Thêm vào –”ዛዔ… tên hàm ¯዇ …Šዊ ra cho

compiler ”ኾ‰ hàm này có cách –ዐ …Šዜ… ’Šዙ…

˜ዙ cho ˜‹ዉ… ‰ዌ‹ ¯ዅ Šዛ –Šዅ nào.

18

ኼ’–”¿Š‹†‘™•

Trang 20

± Tell Windows what kind of window the program requires

± Create the program window

± Initialize the program window

± Retrieve Windows messages intended for the program

‡ WinProc(): šዞ lý các thông ¯‹ዉ’ liên quan ¯ዅ …ዞƒ

•ዐ …ዚƒ nó

20

ኼ’–”¿Š‹†‘™•

Trang 21

21

1.2.1 Hàm WinMain()

‡ Hàm chính …ዚƒ ዜ‰ †ዙ‰ trên Windows

‡ Program entry point

‡ hInstance, is a handle to the instance of the program you

are writing.

‡ hPrevInstance, is used if your program had any previous

instance If not, this argument can be ignored.

‡ szCmdLine, is a string that represents all items used on the

command line to compile the application.

‡ nCmdShow, controls how the window you are building will

Trang 22

Hàm WinMain (cont.)

‡ Tìm Š‹዇— hàm WinMain ኻ—:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

wndclass.hInstance = hInstance; // ç͔QK danh ͲQJ GͮQJ

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCusor (NULL, IDC_ARROW);

wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.lpszMenuName = NULL; // Không có menu

22

Trang 23

CW_USEDEFAULT, // &KL͊X U͢QJ

CW_USEDEFAULT, // &KL͊X dài

NULL, // &ͶD V͞ cha

NULL, // Không có menu

Trang 25

hIcon ĈʈQKGDQKFͧDELʀXWɉͣQJ Dùng hàm LoadIcon

hCursor ĈʈQKGDQKFͧDFRQWU͏FKX͙W Dùng hàm LoadCursor

WɪSWLQWjLQJX\rQ

lpszClassName 7rQO͛S

25

Trang 27

int nWidth, // ç͢ U͢QJ ban ÿ̰X

int nHeight, // ç͢ cao ban ÿ̰X

HWND hWndParent, // ç͔QK danh FͰD cͶa V͞ cha

MENU hMenu, // ç͔QK dang FͰD thͺc ÿ˱Q

INSTANCE hInstance, // ç͔QK danh WK͌ KL͐Q Ͳng GͮQJ

PVOID lpParam // Các tham V͚ ban ÿ̰X

) ;

27

ኼ’–”¿Š‹†‘™•

Trang 28

‹Ш –ŠЬ …пƒ •б

‡ 0዇ š—ኸ– Š‹ዉ …ዞƒ •ዐ ‰ዌ‹ hàm ShowWindow

BOOL ShowWindow(HWND hWnd, // ç͔QK danh cͰD cͶD V͞ F̰Q WK͌ KL͐Q

int iCmdShow // 7U̪QJ thái KL͌Q WK͔

Trang 29

‡ Giao –‹ዅ’ ˜ዔ‹ Šዉ –Šዎ‰ (Windows), toàn „ዒ các

thông¯‹ዉ’ ‰ዞ‹ –ዔ‹ ¯ዛዘ… šዞ lý qua hàm này

‡ Šዛዕ‰ khai báo Šዛ sau:

‡ Trong ¯× tham •ዎ ¯ኹ— tiên là ¯ዋŠ danh …ዚƒ …ዞƒ •ዐ,

tham•ዎ –Šዜ 2 là ¯ዋŠ danh thông ¯‹ዉ’, và …—ዎ‹ cùng

tin kèm theo thông ¯‹ዉ’

LRESULT CALLBACK WinProc (HWND, UINT, WPARAM, LPARAM);

29

ኼ’–”¿Š‹†‘™•

Trang 30

MSG msg; // Windows message structure

Trang 31

31

Message Loop

‡ Trong ¯× msg là ዒ– „‹ዅ …ኸ— trúc ‹዇— MSG ¯ዛዘ…

¯ዋŠ ‰ŠÂƒ trong winuser.h

typedef struct tagMSG {

‡ POINT là ‹዇— –ዌƒ ¯ዒ ¯‹዇, ¯ዋŠ ‰ŠÂƒ trong windef.h

typedef struct tagPOINT {

LONG x;

LONG y;

Trang 34

‡ Tìm Š‹዇— ዒ– hàm šዞ lý …ዞƒ •ዐ:

LRESULT CALLBACK WinProc (HWND hwnd, UINT msg, WPARAM

wParam, LPARAM lParam)

Trang 35

35

‡ Thông –Šዛዕ‰ …Šዊ …Š዁ ¯዇ šዞ lý các thông ¯‹ዉ’ …ኹ –Š‹ዅ–, còn

Ž኶‹ giao cho hàm šዞ lý ዁… ¯ዋŠDefWindowProc

DrawText(hdc, "Hello" , -1, &rect, DT_SINGLELINE| DT_CENTER| DT_VCENTER);

EndPaint(hwnd, &ps);

return 0;

case WM_SIZE:

/*9L͈W ÿR̪Q mã khi kích th˳ͤF cͶD V͞ thay ÿ͞L*/

Trang 36

׏–О–

36

ኼ’–”¿Š‹†‘™•

Trang 38

Win32 Application in Visual C++ Developer Studio

38

ኼ’–”¿Š‹†‘™•

Trang 39

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR

szCmdLine, int iCmdShow)

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

Trang 40

HelloWorld (2)

hwnd = CreateWindow(szAppName, // Tên OͤS FͶD V͞

TEXT ( " The Hello World Program" ), //

Trang 41

DrawText(hdc, TEXT( "Hello World" ), - 1 , &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Trang 42

HelloWorld (run)

42

ኼ’–”¿Š‹†‘™•

Trang 44

1.3 Microsoft Foundation Classes (MFC)

‡ MFC = Microsoft Foundation Classes

Trang 45

± Cho phép phát –”‹዇ ዜ‰ †ዙ‰ Win32 platforms.

± Program low-level, tiêu –ዎ –Šዕ‹ gian

Trang 48

48

ኼ’–”¿Š‹†‘™•

Trang 53

53

The Solution

‡ Solution Explorer: allows you to view and

navigate all the files that make up your

application.

‡ Class View allows you to navigate and

manipulate your source code on a C++ class

level.

‡ Resource View: allows you to find and edit

each of the various resources in your

application, including dialog window

designs, icons, and menus.

53

ኼ’–”¿Š‹†‘™•

Trang 54

Output Pane & Editor Area

‡ Output Pane:

± Cung …ኸ’ thông tin cho ‰ዛዕ‹ Žኼ’ trình

± Compiler progress statements

± Warnings, error messages

± Thông tin debugger:

Trang 55

55

Menu Bar + Rearranging IDE

‡ Menu bar + Tool bars

Trang 56

ž…–ŠŠ’ŠКн‰†к‰’Šž––”‹Ш˜е‹ΪΪ

56

Trang 60

± Code view, design view

± Compile, debug, run

60

ኼ’–”¿Š‹†‘™•

Trang 64

Add code to greeting (1)

‡ —––‘Dz ‡ŽŽ‘dzǣ‹‰Š–‘—•‡Ȁ††˜‡– ƒ†Ž‡”

Šዌ •ዠ ‹ዉ, tên hàm šዞ lý

64

ኼ’–”¿Š‹†‘™•

Trang 66

Run without Debug (Ctrl+F5)

Set Breakpoint (F9) and Run Debug

Trang 72

—ž–”¿ŠšпŽý–ŠØ‰¯‹Ъ’–”‘‰ 

72

ኼ’–”¿Š‹†‘™•

Trang 80

Џ‰†к‰ „ƒ•‡†‘…—‡–Ȁ‹‡™

‡ ‹዇—

80

Trang 82

Й— trúc Document/View †З‰ SDI

82

ኼ’–”¿Š‹†‘™•

Trang 86

е’‘…—‡–

ዒ–•ዎ’Šዛዓ‰–Šዜ…“—ƒ–”ዌ‰ǣ

‡ virtual BOOL OnNewDocument();

‡ virtual BOOL OnOpenDocument(LPCTSTR

lpszPathName);

‡ void SetModifiedFlag(BOOL bModified =

ȌǢȋ0žŠ†ኸ—ǣ…އƒȀ†‹”–›Ȍ

‡ BOOL IsModified();

‡ virtual void OnCloseDocument();

‡ virtual BOOL OnSaveDocument(LPCTSTR

lpszPathName);

‡ CDocument::DeleteContents

86

ኼ’–”¿Š‹†‘™•

Trang 92

± Select MFC standard as the project style and Windows

Native/Default as the Visual style and colors option

± Keep the Use Unicode libraries option.

± ’‡…‹ˆ›–ЇƤއ‡š–‡•‹‘ƒ••‡–‘‰‡–ƒƤŽ–‡”ˆ‘”ȗǤ•‡

†‘…—‡–•†‡Ƥ‡†Ǥ

± Change the Generated Classes set of options at their

default settings so that the base class for the

CSketcherView class is CView.

92

ኼ’–”¿Š‹†‘™•

Trang 95

95

‡ Menu bar: bao ‰ዏ Š‹዆— drop-down menu và

Trang 98

Add Handler for menu messages

98

ኼ’–”¿Š‹†‘™•

Trang 99

99

п lý ŽЪŠ …лƒ Menu item

‡ ዠƒ trên message WM_COMMAND

‡ 0ዋŠ ‰ŠÂƒ message map

Trang 100

‡ Thao tác trên Menu:

± DeleteMenu: ‘žዒ–¯ዎ‹–ዛዘ‰–”²‡—

± TrackPopupMenu: Š‹዇–Šዋ‡—’‘’—’

100

ኼ’–”¿Š‹†‘™•

Trang 104

З‘ ŽН’ menu cho dialog

‡ ኶‘ ዒ– tài nguyên menu cho ዜ‰ †ዙ‰

‡ Šዌ menu …ኹ ‰ኽ vào dialog trong Šዒ’

Trang 112

пŽýtrong hàm OnCreate Ȃ ‹ŠŠЭƒͳ

112

ኼ’–”¿Š‹†‘™•

Trang 114

Toolbar Style

114

ኼ’–”¿Š‹†‘™•

Trang 116

Toolbar docking style

116

ኼ’–”¿Š‹†‘™•

Trang 117

‡ ዅ— không có menu item –ዛዓ‰ ዜ‰, thêm ˜‹ዅ– hàm šዞ lý

thông ¯‹ዉ’ (vào MESSAGE_MAP) Ví †ዙ ID_BUTTON_BOLD

117

Trang 120

À†кšпlý „—––‘‹Ш—…Ї…„‘šȋͳȌ

120

ኼ’–”¿Š‹†‘™•

Trang 122

À†кšпlý „—––‘‹Ш—”ƒ†‹‘ȋͳȌ

122

ኼ’–”¿Š‹†‘™•

Trang 124

Enable/Disable button

124

ኼ’–”¿Š‹†‘™•

Trang 126

126

ኼ’–”¿Š‹†‘™•

Trang 127

127

127

ኼ’–”¿Š‹†‘™•

Trang 136

CPoint MoveTo(int x, int y);

// Move to position x,y

CPoint MoveTo(POINT aPoint);

// Move to position defined by aPoint

Trang 137

BOOL LineTo(int x, int y);

// Draw a line to position x,y

BOOL LineTo(POINT aPoint);

// Draw a line to position defined by aPoint

CDC *pDC;

pDC->MoveTo(50,50); // Set the current position

pDC->LineTo(50,200); // Draw a vertical line down 150 units

pDC->LineTo(150,200); // Draw a horizontal line right 100 units

pDC->LineTo(150,50); // Draw a vertical line up 150 units

pDC->LineTo(50,50); // Draw a horizontal line left 100 units

Trang 138

BOOL Ellipse(int x1, int y1, int x2, int y2);

BOOL Ellipse(LPCRECT lpRect);

BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

BOOL Arc(LPCRECT lpRect, POINT startPt, POINT endPt);

CDC *pDC;

pDC->Ellipse(50,50,150,150); // Draw the 1st (large) circle

ȀȀ‡Ƥ‡–Ї„‘—†‹‰”‡…–ƒ‰Ž‡ˆ‘”–Їʹ†ȋ•ƒŽŽ‡”Ȍ…‹”…އ

CRect rect(250,50,300,100);

CPoint start(275,100); // Arc start point

CPoint end(250,75); // Arc end point

pDC->Arc(&rect, start, end); // Draw the second circle

Trang 139

LPRECT lpRect, UINT nFormat );

int DrawText(

const CString& str, LPRECT lpRect, UINT nFormat );

Trang 142

int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0,

const DWORD* lpStyle = NULL );

Trang 144

// Declare a pen object and initialize it as

// a red solid pen drawing a line 2 pixels wide

CPen aPen;

aPen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));

CPen* pOldPen = pDC->SelectObject(&aPen); // Select aPen as the pen

pDC->Ellipse(50,50,150,150); // Draw the 1st (large) circle

// Define the bounding rectangle for the 2nd (smaller) circle

CRect rect(250,50,300,100);

CPoint start(275,100); // Arc start point

CPoint end(250,75); // Arc end point

pDC->Arc(&rect,start, end); // Draw the second circle

pDC->SelectObject(pOldPen); // Restore the old pen

Trang 145

int nIndex, COLORREF crColor );

explicit CBrush(

CBitmap* pBitmap );

Trang 160

afx_msg void OnMsgName(UINT nChar, UINT nRepCnt, UINT nFlags)

void CSketcherView::OnKeyDown(UINT nChar, UINT

nRepCnt, UINT nFlags)

Trang 162

162

ኼ’–”¿Š‹†‘™•

Trang 171

CPenDialog aDlg; // Create a local dialog object

aDlg.DoModal(); // Display the dialog as modal

}

Trang 177

LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );

Trang 184

± virtual int DoModal()

± COLORREF GetColor() const

± static COLORREF* PASCAL GetSavedCustomColors

± protected virtual BOOL OnColorOK()

± void SetCurrentColor( COLORREF clr )

184

ኼ’–”¿Š‹†‘™•

Trang 186

CFontDialog

‡ –኶‘Ȁ‘•–”—…–‘”ǣ

± CFontDialog( const CHARFORMAT& charformat,

DWORD dwFlags = CF_SCREENFONTS, CDC* pdcPrinter = NULL,

CWnd* pParentWnd = NULL );

186

ኼ’–”¿Š‹†‘™•

Trang 187

187

CFontDialog

‡ Parameters:

± lplfInitial: A pointer to a LOGFONTdata structure that allows you to

set some of the font's characteristics.

± charFormat: A pointer to a CHARFORMATdata structure that

allows you to set some of the font's characteristics in a rich edit

control.

± dwFlagsSpecifies one or more choose-font flags One or more

preset values can be combined using the bitwise OR operator If you

modify the m_cf.Flags structure member, be sure to use a bitwise

OR operator in your changes to keep the default behavior intact

For details on each of these flags, see the description of the

CHOOSEFONTstructure in the Platform SDK.

± pdcPrinter: A pointer to a printer-device context If supplied, this

parameter points to a printer-device context for the printer on

which the fonts are to be selected.

± pParentWnd: A pointer to the font dialog box's parent or owner

window.

187

ኼ’–”¿Š‹†‘™•

Trang 203

  ȀȀ0ዋŠ†ƒŠŠዒ’Šኼ’

);

Trang 204

± void SetModify(BOOL bModified = TRUE);

± BOOL SetReadOnly( BOOL bReadOnly = TRUE );

± void SetPasswordChar (TCHAR ch);

Trang 207

// dynamically create an edit control

CEdit* pEdit = new CEdit;

pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE

| WS_TABSTOP | WS_BORDER, CRect(10, 10, 100, 100),

Trang 209

± HBITMAP SetBitmap(HBITMAP hBitmap)

± HICON SetIcon(HICON hIcon);

± virtual void DrawItem( LPDRAWITEMSTRUCT

lpDrawItemStruct );

± int GetCheck() const;

± void SetCheck(int nCheck);

209

ኼ’–”¿Š‹†‘™•

Trang 211

// Create an auto 3-state button

›—––‘͵Ǥ”‡ƒ–‡ȋ̴ȋDz͵-state button"), WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,

Trang 215

WS_CHILD | WS_VISIBLE | WS_BORDER |

LBS_NOTIFY | WS_VSCROLL, CRect( 200, 10, 280, 80 ), this,

̴ ȌǢȀȀ ¯ዋŠ‰ŠÂƒ–”‘‰”‡•‘—”…‡ǤŠ

m_listbox- >AddString( "Ong A" );

m_listbox- >AddString( "Ba B" );

m_listbox- >AddString( "Co C" );

Trang 220

int iSel = m_Combobox.GetCurSel( );

if (iSel == LB_ERR) // no selection

iSel = 0;

m_pComboBox- >GetLBText( iSel, info );

m_edit->SetWindowText( info );

}

Trang 221

CWnd* pParentWnd,

UINT nID );

Trang 223

m_editAge.Create ( WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,

CRect( 135, 45, 190, 65 ), this, IDC_EDIT);

static CSpinButtonCtrl m_spinAge;

m_spinAge.Create ( WS_CHILD | WS_VISIBLE |

UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT,

CRect(0,0,1,1), this, IDC_SPIN);

Trang 226

virtual BOOL Create( DWORD dwStyle,

const RECT& rect, CWnd* pParentWnd,

UINT nID );

Trang 228

228

ኼ’–”¿Š‹†‘™•

static CProgressCtrl myCtrl;

// Create a smooth child progress control.

// Offset the position by one-fourth of the total range

int nLower, nUpper;

myCtrl.GetRange(nLower, nUpper);

myCtrl.OffsetPos((nUpper-nLower)/4);

// Advance the position to the next step

myCtrl.StepIt();

Trang 229

± void SetScrollRange ( int nLower, int nUpper);

± void GetScrollRange ( int &nLower, int &nUpper);

± int SetScrollPos( int nPos );

± int GetScrollPos( int &nPos);

± ˜‘‹†Š‘™…”‘ŽŽƒ”ȋ„Š‘™αȌǢȀȀኼ–Ȁ–ኽ–

–ŠƒŠ…—ዒ

229

ኼ’–”¿Š‹†‘™•

virtual BOOL Create( DWORD dwStyle,

const RECT& rect, CWnd* pParentWnd,

UINT nID );

Trang 252

‹ŠŠЭƒ˜‹Ц–‡‰—Žƒ”

252

ኼ’–”¿Š‹†‘™•

Trang 255

//TODO: If this DLL is dynamically linked against the MFC DLLs,

// any functions exported from this DLL which call into

Trang 264

264

ኼ’–”¿Š‹†‘™•

Trang 271

271

е’‹Š”‡ƒ†

‡ Data members

± m_hThread: The current thread handle

± m_nThreadID: The current thread ID

CWinThread

CWinApp

Trang 272

CWinThread* AfxBeginThread( AFX_THREADPROC ThreadProc,

LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL,

UINT nStackSize = 0, DWORD dwCreateFlags = 0,

LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

Trang 273

ThreadProc controlling function, cannot be NULL This function must be declared

as follows: UINT MyControllingFunction( LPVOID pParam );

pParam Parameter to be passed to the controlling function as shown in the

parameter to the function declaration in pfnThreadProc

nPriority Thread priority

nStackSize Specifies the size in bytes of the stack for the new thread If 0, the

stack size defaults to the same size stack as the creating thread.

dwCreateFlags

additional flag and can be any of these two CREATE_SUSPENDED or

0 CREATE_SUSPENDED starts the thread with a suspend count of one The thread will not execute until ResumeThread is called 0 Start the thread immediately after creation.

lpSecurityAttrs Points to a SECURITY_ATTRIBUTES structure See

SECURITY_ATTRIBUTES for more details.

Trang 275

AfxBeginThread( ThreadFunction, &data);

UINT ThreadFunction(LPVOID param) {

UINT nIterations = (UINT) pParam;

for (int i=0; i<nIterations; i++);

ȀȀ†‘•‘‡–Š‹‰ǥ

return 0;

}

Trang 277

THREAD_PRIORITY_TIME_CRITICAL Normal for HIGH, NORMAL, or

IDLE Double for REALTIME.

THREAD_PRIORITY_HIGHEST = Process Priority + 2.

THREAD_PRIORITY_ABOVE_NORMAL = Process Priority +1.

THREAD_PRIORITY_NORMAL = Process Priority.

THREAD_PRIORITY_BELOW_NORMAL = Process Priority -1.

THREAD_PRIORITY_LOWEST = Process Priority -2.

THREAD_PRIORITY_IDLE Normal for REALTIME, 1 for

HIGH, NORMAL,

Trang 279

Function name Purpose

InitInstance Perform thread instance initialization Must be overridden.

Run Controlling function for the thread Contains the message pump

Rarely overridden.

OnIdle Perform thread-specific idle-time processing Not usually overridden.

PreTranslateMessage Filter messages before they are dispatched to TranslateMessage and

DispatchMessage Not usually overridden.

... class="page_container" data-page="92">

± Select MFC standard as the project style and Windows

Native/Default as the Visual style and colors option

±

Ngày đăng: 23/10/2014, 13:49

TỪ KHÓA LIÊN QUAN

w