chapter 1 hello mfc windows programming model
Download
Skip this Video
Download Presentation
Chapter 1: Hello, MFC Windows Programming Model

Loading in 2 Seconds...

play fullscreen
1 / 30

Chapter 1: Hello, MFC Windows Programming Model - PowerPoint PPT Presentation


  • 146 Views
  • Uploaded on

Chapter 1: Hello, MFC Windows Programming Model. Department of Digital Contents Sang Il Park. Programming Models. Procedural Programming model Event-Driven Programming model (windows programming model). Procedural Programming Model. int main() { funcA(); funcB(); return 0; }.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Chapter 1: Hello, MFC Windows Programming Model' - stamos


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
chapter 1 hello mfc windows programming model

Chapter 1: Hello, MFCWindows Programming Model

Department of Digital Contents

Sang Il Park

programming models
Programming Models
  • Procedural Programming model
  • Event-Driven Programming model(windows programming model)
procedural programming model
Procedural Programming Model

int main()

{

funcA();

funcB();

return 0;

}

{

……

return;

}

{

…..

return;

}

{

funcC();

return;

}

procedural programming model1
Procedural Programming Model
  • Starts with “Main()” function
  • Ends when main returns
  • Calls functions sequentially
  • Basically main function calls other functions (it determines what is called and when)
event driven programming model
Event-driven Programming Model

EVENT!!!

Help me!

Event Handling

Message

event driven programming model1
Event-driven Programming Model

int WinMain()

{

return 0;

}

Message Loop

Window Procedure

Message 2

Message 1

Message 3

event driven programming model2
Event-driven Programming Model
  • Begins with “WinMain()” function
  • Starts a massage loop in the WinMain for waiting messages
  • Gets messages from operating system, a user or the program.
  • Messages are processed by windows procedure
  • Ends when Quit message is given
event driven example
Event-driven example
  • Using C++, Take an integer number as an input from the user and do as follows:
    • If the input is ‘1’, then print “Sejong University”,
    • If the input is ‘2’, then print“Digital Contents”,
    • If the input is ‘3’, then print “Bye~”and quit,
    • Take a new input and repeat.
slide12
Code:

#include <iostream>

using namespace std;

int main()

{

int i;

while(true)

{

cout<<"Input: ";

cin>>i;

switch(i)

{

case 1:

cout<<"Sejong University"<<endl;

break;

case 2:

cout<<"Digital Contents"<<endl;

break;

case 3:

cout<<"Bye!"<<endl;

return 0;

break;

default:

break;

}

}

return 0;

}

event driven example1
Event-driven example
  • Using C++, Takes an integer number as an input from the user
    • If the input is ‘1’, then print “Sejong University”,
    • If the input is ‘2’, then print“Digital Contents”,
    • If the input is ‘3’, then print “Bye~”and quit,
    • Take a new input and repeat.

Message (Event)

Message (Event) Handler

Windows Procedure

Message Loop

slide14
Code:

#include <iostream>

using namespace std;

int main()

{

int i;

while(true)

{

cout<<"Input: ";

cin>>i;

switch(i)

{

case 1:

cout<<"Sejong University"<<endl;

break;

case 2:

cout<<"Digital Contents"<<endl;

break;

case 3:

cout<<"Bye!"<<endl;

return 0;

break;

default:

break;

}

}

return 0;

}

Message

MessageLoop

Message Handler

a fancier code
A fancier code:

int main()

{

inti;

while(true)

{

cout<<"Input: ";

cin>>i;

procedure(i);

}

return 0;

}

void procedure(intmsg)

{

switch(msg)

{

case 1:

cout<<"Sejong University"<<endl;

break;

case 2:

cout<<"Digital Contents"<<endl;

break;

case 3:

cout<<"Bye!"<<endl;

exit(0);

break;

default:

break;

}

}

win32 windows api
Win32 ? (= Windows API)
  • Programming is not making everything from nothing
  • Programming is rather assembling existing functions and data types
  • Extended Functions and data types are distributed as a form of library
    • Ex.) 2D drawing functions (OpenCV library), 3D drawing functions (OpenGL library), Playing music functions (DirectShow library) and so on
win32 windows api1
Win32 ? ( = Windows API)
  • API (Application Programming Interface)
    • A library contains functions for controlling and using operating system.
    • Mostly C functions.
  • Win32
    • Name of the Windows API
    • Collection of C functions for making windows programming (library)
    • Ex.) Functions for “creating new windows”, “adding a button”, “adding a new menu” and so on.
begin win32 project
Begin Win32 Project
  • FileNewProjectWin32 Project
begin win32 project1
Begin Win32 Project
  • Application Setting
begin win32 project2
Begin Win32 Project
  • Set “Character Set ” as “Not Set ”
adding main cpp
Adding “Main.cpp”

#include <windows.h>

LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpszCmdLine, int nCmdShow)

{

WNDCLASS wc;

HWND hwnd;

MSG msg;

wc.style = 0;

wc.lpfnWndProc = (WNDPROC) WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);

wc.lpszMenuName = NULL;

wc.lpszClassName = "MyWndClass";

RegisterClass (&wc);

hwnd = CreateWindow (

"MyWndClass", // WNDCLASS name

"SDK Application", // Window title

WS_OVERLAPPEDWINDOW, // Window style

CW_USEDEFAULT, // Horizontal position

CW_USEDEFAULT, // Vertical position

CW_USEDEFAULT, // Initial width

CW_USEDEFAULT, // Initial height

HWND_DESKTOP, // Handle of parent window

NULL, // Menu handle

hInstance, // Application\'s instance handle

NULL // Window-creation data

);

ShowWindow (hwnd, nCmdShow);

UpdateWindow (hwnd);

while (GetMessage (&msg, NULL, 0, 0)) {

TranslateMessage (&msg);

DispatchMessage (&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,

LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

switch (message) {

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps);

Ellipse (hdc, 0, 0, 200, 100);

EndPaint (hwnd, &ps);

return 0;

case WM_DESTROY:

PostQuitMessage (0);

return 0;

}

return DefWindowProc (hwnd, message, wParam, lParam);

}

code looks complex but
Code looks complex, but…

#include <windows.h>

LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpszCmdLine, int nCmdShow)

{

WNDCLASS wc;

HWND hwnd;

MSG msg;

wc.style = 0;

wc.lpfnWndProc = (WNDPROC) WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);

wc.lpszMenuName = NULL;

wc.lpszClassName = "MyWndClass";

RegisterClass (&wc);

hwnd = CreateWindow (

"MyWndClass", // WNDCLASS name

"SDK Application", // Window title

WS_OVERLAPPEDWINDOW, // Window style

CW_USEDEFAULT, // Horizontal position

CW_USEDEFAULT, // Vertical position

CW_USEDEFAULT, // Initial width

CW_USEDEFAULT, // Initial height

HWND_DESKTOP, // Handle of parent window

NULL, // Menu handle

hInstance, // Application\'s instance handle

NULL // Window-creation data

);

ShowWindow (hwnd, nCmdShow);

UpdateWindow (hwnd);

while (GetMessage (&msg, NULL, 0, 0)) {

TranslateMessage (&msg);

DispatchMessage (&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,

LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

switch (message) {

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps);

Ellipse (hdc, 0, 0, 200, 100);

EndPaint (hwnd, &ps);

return 0;

case WM_DESTROY:

PostQuitMessage (0);

return 0;

}

return DefWindowProc (hwnd, message, wParam, lParam);

}

SAME STRUCTURE!

little change in winproc
Little change in WinProc
  • In the switch statements of WinProc:

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

Ellipse (hdc, 0, 0, 200, 100);

RECT rect;

GetClientRect(hwnd, &rect);

DrawText(hdc, "hello, Windows", -1, &rect,

DT_SINGLELINE|DT_CENTER|DT_VCENTER);

EndPaint(hWnd, &ps);

return 0;

Add this!

a little more change in winproc
A Little more change in WinProc
  • In the switch statement, add more event handler:

Add this

case WM_LBUTTONDOWN:

MessageBox(hwnd, "haha", "Test!"), MB_OK);

break;

summary
Summary:

Win32 Program Structure

WinMain(…)  main function

{

WNDCLASS …  Define a new program CreateWindows (…)  Create a window

while( GetMessage (…))  Message Loop

{

DispatchMessage(…)  Message Handler } (Windows Procedure)

}

then what is mfc

Then, What is MFC ?

To be continued…

back in your home
Back in your home…
  • Read and try: Chapter1 – The Windows Programming modelChapter1 – Introducing MFC Chapter1 – Your First MFC Application
ad