您的位置:首页 > 其它

有时候一个小例子就可以理解MFC。

2015-09-22 22:19 337 查看
//#ifdef _WIN32_WINNT

//#undef _WIN32_WINNT

#define _WIN32_WINNT 0x0500

//#endif

#include <windows.h>

#include <stdio.h>

//#if (_WIN32_WINNT >= 0x0500)

#define TIMER_ONE_SECOND 500

#define RED_LAMP_TIMER 1

/*窗体过程处理函数的声明*/

LRESULT CALLBACK WinProc(

HWND hwand, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);

int WINAPI WinMain

(

HINSTANCE hInstance, // handle to current instance

HINSTANCE hPrevInstance, // handle to previous instance

LPSTR lpCmdLine, // command line

int nCmdShow // show state

)

{

static TCHAR szAppName[] = "WinClassName";

//第一步骤:窗体类设计

//design a window class

WNDCLASS wndclass;

HWND hwnd;

MSG msg;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

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

wndclass.hCursor = LoadCursor(NULL,IDC_CROSS);

wndclass.hIcon = LoadIcon(NULL,IDI_ERROR);

wndclass.hInstance = hInstance;

wndclass.lpfnWndProc = WinProc;

wndclass.lpszClassName = szAppName;

wndclass.lpszMenuName = NULL;

wndclass.style = CS_HREDRAW | CS_VREDRAW;

//窗体类注册

RegisterClass(&wndclass);

//第二步骤:窗体显示

hwnd = CreateWindow(szAppName,"Windows Example",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);

ShowWindow( hwnd,SW_SHOWNORMAL );

UpdateWindow( hwnd );

SetTimer(hwnd,RED_LAMP_TIMER,500,NULL);

//第三步骤:消息循环

//define message

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

{

TranslateMessage( &msg );

DispatchMessage( &msg );

}

return msg.wParam;

}

LRESULT CALLBACK WinProc(

HWND hWnd, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first mesage parameter

LPARAM lParam // second message parameter

)

{

HDC hDC;

PAINTSTRUCT ps;

// int n = 5;

char szChar[20];

static BOOL bLight = TRUE;

int nPosX = 20;

int nPosY = 50;

int nRad = 20;

HBRUSH obj;

HBRUSH OldObj;

RECT rect;

switch( uMsg )

{

case WM_TIMER:

bLight = !bLight;

// GetClientRect(hWnd,&rect);

GetWindowRect(hWnd,&rect);

InvalidateRect(hWnd, NULL, TRUE);

break;

case WM_PAINT:

hDC = BeginPaint( hWnd, &ps );

TextOut( hDC, 0, 0, "Windows Example", strlen("Windows Example"));

if(bLight)

{

//obj = (HBRUSH)GetStockObject(GRAY_BRUSH);

SelectObject(hDC,GetStockObject(DC_BRUSH));

SetDCBrushColor(hDC,RGB(0x00,0xff,0x00));

//OldObj = SelectObject(hDC, obj);

Ellipse(hDC,nPosX-nRad,nPosY-nRad,nPosX+nRad,nPosY+nRad);

}

else

{

obj = (HBRUSH)GetStockObject(BLACK_BRUSH);

OldObj = SelectObject(hDC, obj);

Ellipse(hDC,nPosX-nRad,nPosY-nRad,nPosX+nRad,nPosY+nRad);

}

SelectObject(hDC, OldObj);

EndPaint(hWnd,&ps);

break;

case WM_CHAR:

{

sprintf( szChar, "char code is %d", wParam);

MessageBox( hWnd, szChar, "char", 0 );

break;

}

case WM_LBUTTONDOWN:

MessageBox( hWnd, "mouse clicked", "message", 0);

break;

case WM_CLOSE:

if( IDYES == MessageBox(hWnd, "Do you really want to exit this program [y/n]?","message", MB_YESNO) )

{

DestroyWindow( hWnd );

}

break;

case WM_DESTROY:

PostQuitMessage( 0 );

default:

return DefWindowProc( hWnd, uMsg, wParam, lParam );

;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: