有时候一个小例子就可以理解MFC。
来源:互联网 发布:国外php免费空间永久 编辑:程序博客网 时间:2024/06/05 15:47
//#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;
}
//#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;
}
0 0
- 有时候一个小例子就可以理解MFC。
- android中引用方法的时候,有时候要new一个对象才能引用,有时候直接.方法就可以了,为什么
- android中引用方法的时候,有时候要new一个对象才能引用,有时候直接.方法就可以了,为什么
- 有时候一个不起眼的问题,就可以绊住你迈向成功铿锵的步伐.
- 接口理解的一个小例子
- 一个小例子理解事件委托
- 有时候我们以为只要努力就可以和爱人度过一生-给我的一个朋友
- 一个小例子理解多态 - 修改 0 次
- 通过一个小例子理解java回调机制
- 从一个小例子理解stdio 和 sysio
- 从一个小例子再次理解闭包
- 有限状态机理解小例子
- 缘分,有时候就这样
- 掌握以下几点,就可以做一个Flex的小项目了~~~~~
- 如何解决tableview上面有一个小空白的区域,关掉自动布局就可以了
- 有时候不要让自己太累 找个途径就可以解决
- 一个Comparable小例子
- 一个Assert小例子
- Know more about RAC statistics and wait event
- UVA 540 Team Queue
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- Ubuntu14.04开机亮度始终为最大问题的解决办法
- java将捕获的异常写入日志
- 有时候一个小例子就可以理解MFC。
- 《构建之法》第六章 敏捷流程
- 日志打印
- Fang Fang hdoj 5455 (字符串)
- UITableViewDataSource的代理方法
- 汉字转拼音类
- libevent
- oracle 基本技能
- Python 经典类和新式类 super用法 (四)