1 / 33

Windows Programming: Win32 / MFC

Windows Programming: Win32 / MFC. James Adkison 04/17/2008. Presentation Goals. How to create a basic Windows App Hungarian Notation How to use the Win32 / MFC APIs Windows Programming Model Messages Examples. Windows Programming. Where do I start? Use the Windows API (Win32 API)

philander
Download Presentation

Windows Programming: Win32 / MFC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Programming:Win32 / MFC James Adkison 04/17/2008

  2. Presentation Goals • How to create a basic Windows App • Hungarian Notation • How to use the Win32 / MFC APIs • Windows Programming Model • Messages • Examples

  3. Windows Programming • Where do I start? • Use the Windows API (Win32 API) • How do I use it? • #include <windows.h> • What about documentation? • Google: msdn win32 api

  4. http://msdn2.microsoft.com/en-us/library/aa383749(VS.85).aspxhttp://msdn2.microsoft.com/en-us/library/aa383749(VS.85).aspx

  5. What is MFC? • Microsoft Foundation Class • “MFC is the C++ class library Microsoft provides to place an object-oriented wrapper around the Windows API.” • How do I use it? • #include <afxwin.h> • Do NOT #include <windows.h> afxwin.h already includes it

  6. http://msdn2.microsoft.com/en-us/library/d06h2x6e(VS.80).aspxhttp://msdn2.microsoft.com/en-us/library/d06h2x6e(VS.80).aspx

  7. I Don’t Speak Hungarian! • Hungarian Notation / Windows Data Types • What is it? • A variable naming convention • Examples • h: handle • n: integer • b: boolean • p: pointer

  8. Hungarian Notation Continued... • It’s important because Windows uses this notation thus most Windows/MFC programmers use it • “It’s also common to prefix member variables with m_ so that it’s obvious whether a variable is a member of a class.”

  9. Hungarian Notation Pop Quiz • What is: nCount? • What is: pnCount • What is: bQuit • What’s the difference? m_bQuit vs bQuit

  10. Hungarian Notation Pop Quiz • What is: nCount? • Integer: int Count • What is: pnCount • Integer pointer: int* Count • What is: bQuit • Boolean: BOOL Quit • What’s the difference? m_bQuit vs bQuit • bQuit is local, m_bQuit is a member of a Class

  11. Out With The Old…

  12. In With The New! • New “Hello World!” – Win32 API int MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);

  13. In With The New! • New “Hello World!” – MFC API (Global) intAfxMessageBoxA( LPCTSTR lpszText, UINTnType = MB_OK, UINT nIDHelp = 0);

  14. In With The New! • New “Hello World!” – MFC API int MessageBoxA( LPCTSTR lpszText, LPCTSTR lpszCaption = 0, UINT nType = 0); MessageBoxA(“Hello World!”);

  15. A New Way (Win32 API)

  16. In With The New (MFC API)

  17. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  18. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  19. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  20. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  21. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  22. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  23. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  24. The WindowsProgrammingModel • Not Procedural • Event-Driven • Processes messages sent by the operating system

  25. Messages, Messages, Messages…

  26. Console vs. Windows Application • Console application’s entry point int main(void) • Windows application’s entry point int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) • int main(int argc, char **argv)

  27. No More Faking • To this point we’ve used int main() • We’ve used the Win32/MFC APIs to display a message box but we have not created a “Window” nor a Windows application • Win32 App / Win32 Source • MFC App / MFC Source

  28. Windows API or MFC API? • Essentially equivalent in functionality • Generally, MFC will allow the programmer to do the same tasks more easily • MFC is an OO wrapper of Win32 API • Maybe neither… Win32 and MFC are being replaced by newer frameworks (e.g. .NET) • Still lots of Win32/MFC application around, use MFC if possible.

  29. Now What Can I Do? • Make a Windows program • Take simple programs, like your early CS assignments and make it into a Windows app • This looks hard/complicated, why bother? • Can’t I just use Visual Basic or use GUI tools to build my application (e.g. Windows Forms, VC++) • Yes, but tools limit what you can do by hiding the details, limiting your understanding

  30. The Road Less Traveled… • Knowing the more tedious details can have its advantages and produce some more interesting results • Want to control a program that you didn’t write? • Want to automate a process with program you didn’t write?

  31. A more interesting example… • Final Example

  32. Homework Questions • What do global MFC function calls begin with (i.e. what 3 letters)? • Where can you find Win32/MFC API documentation? • True or False, MFC applications should include <windows.h>

  33. Works Cited • Prosise, Jeff. Programming Windows with MFC Second Edition. Redmond, Washington: Microsoft Press, 1999 • Microsoft Developer Network: http://msdn2.microsoft.com/en-us/library/default.aspx

More Related