3.1.2 Win32_Code
// 窗口搭建**
// wincreate.cpp : Defines the entry point for the application.
\#include "stdafx.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","Windows");
Display( hWnd);
Message();
return 0;
}
**//窗口附加数据、子窗口**
// wincreate.cpp : Defines the entry point for the application.
//
\#include "stdafx.h"
\#include "stdio.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数(处理消息)
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_SYSCOMMAND:
MessageBox( hWnd, "WM_SYSCOMMAND", "Infor",MB_OK );
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );//默认处理函数
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 200;//窗口类缓冲区
wce.cbWndExtra = 200;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );// 向系统写入,注册
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//创建子窗口
HWND CreateChild( LPSTR lpClassName,LPSTR lpWndName,HWND hParent )
{
HWND hChild = CreateWindowEx( 0,lpClassName, lpWndName,
WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW,100,100,200,200,hParent,
NULL,g_hInstance,NULL);
return hChild;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
//写入附加数据
void SetExtra( HWND hWnd )
{
char *pszText = "hello data";
SetClassLong( hWnd, 196, (LONG)pszText);
SetWindowLong( hWnd, 0, 1000);
}
//读入附件数据
void GetExtra( HWND hWnd )
{
LONG nClassExtra = GetClassLong(hWnd, 196);
char* pszText = (char*)nClassExtra;
LONG nWndExtra = GetWindowLong( hWnd, 0);
CHAR seText[256] = { 0 };
sprintf( seText, "窗口类:%s,窗口:%d\n",pszText,nWndExtra);
MessageBox( NULL, seText,"Infor", MB_OK ); //提示框(显示)
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Register( "CHILD",DefWindowProc);
HWND hChildl = CreateChild("CHILD", "C1", hWnd );
HWND hChild2 = CreateChild("CHILD", "C2", hWnd );
//窗口重绘
MoveWindow(hChildl, 300,100,200,200,TRUE);
MoveWindow(hChild2, 500,100,200,200,TRUE);
SetExtra( hChildl );
GetExtra( hChild2 );
Display( hWnd);
Message();
return 0;
}
**//** **窗口消息**
\#include "stdafx.h"
\#include "stdio.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
HANDLE g_hOutput = 0;//接收标准输出句柄
HWND g_hEdit = 0;//用于接收窗口句柄(MoveMessage())
\#define WM_MYMESSAGE WM_USER + 1001 //自定义消息(宏)
//WM_CREATE 消息(创建子窗口)
void OnCreate( HWND hWnd, LPARAM lParam)
{
CREATESTRUCT *pcs = (CREATESTRUCT*)lParam;
char* pszText = (char*)pcs->lpCreateParams;
MessageBox( hWnd,pszText, "Infor",MB_OK );
g_hEdit = CreateWindowEx( 0, "EDIT","HELLO",WS_CHILD|WS_VISIBLE|WS_BORDER,
0,0,200,200,hWnd,NULL,g_hInstance,NULL );
//向自定义消息发送
PostMessage( hWnd, WM_MYMESSAGE, 1,2 );
}
//WM_SIZE 消息
void OnSize(HWND hWnd, LPARAM lParam )
{
char szText[256] = { 0 };
sprintf( szText, "WM_SIZE:宽=%d,高=%d\n",LOWORD(lParam),HIWORD(lParam));
WriteConsole( g_hOutput,szText, strlen(szText),NULL,NULL );
MoveWindow( g_hEdit,0,0,LOWORD(lParam)-100,HIWORD(lParam)-100, TRUE );//重新绘制子窗口
//char *pszText = "WM_SIZE\n";
//WriteConsole( g_hOutput,pszText, strlen(pszText),NULL,NULL );
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_MYMESSAGE: //处理自定义消息
{
char szText[256] = { 0 };
sprintf( szText,"wParam=%d,lParam=%d",wParam,lParam );
MessageBox( hWnd, szText, "Infor", MB_OK );
}
case WM_SIZE:
OnSize( hWnd, lParam);
break;
case WM_CREATE:
OnCreate( hWnd, lParam );
break;
case WM_DESTROY:
// PostQuitMessage( 0 );//能够使getMessage返回0 //参数随意
// SendMessage( hWnd, WM_QUIT, 0, 0 );
PostMessage( hWnd, WM_QUIT, 0, 0 );
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
char *pszText = "hello data";
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,g_hInstance,pszText );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG nMsg = { 0 };
/*
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
*/
while(1)
{
if(PeekMessage(&nMsg,0,NULL,NULL,PM_NOREMOVE))//侦查作用
{
//有消息
if(GetMessage( &nMsg,0,NULL,NULL))
{
TranslateMessage( &nMsg );
DispatchMessage( &nMsg );
}
else
{
//WM_QUIT
return;
}
}
else
{
//没消息
//空闲处理
WriteConsole( g_hOutput, "OnIdle",6,NULL,NULL);
}
}
}
//主函数
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();//dos窗口
g_hOutput = GetStdHandle( STD_OUTPUT_HANDLE );//获得dos窗口的句柄
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****键盘消息**
\#include "stdafx.h"
\#include "stdio.h"
HANDLE g_hOutput = 0;//用于(dos)标准输出句柄
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
int g_xPos = 100; //记录坐标
int g_yPos = 100;
// VM_PAINT 绘制消息
void OnPaint( HWND hWnd)
{
char *pszText = "WM_PAINT\n";
//WriteConsole( g_hOutput, pszText, strlen(pszText),NULL,NULL );
//绘图
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint( hWnd, &ps);
TextOut( hdc, g_xPos, g_yPos,"hello",strlen("hello"));//画字符串
EndPaint( hWnd, &ps );
}
//键盘消息(按下/松开)
void OnKeyDown( HWND hWnd, WPARAM wParam )
{
char szText[256]={0};
sprintf( szText, "WM_KEYDOWN:%08X\n",wParam);
WriteConsole( g_hOutput,szText,strlen(szText),NULL,NULL );
switch( wParam )
{
case VK_UP://虚拟键码
g_yPos--;
break;
case VK_DOWN://虚拟键码
g_yPos++;
break;
case VK_LEFT://虚拟键码
g_xPos--;
break;
case VK_RIGHT://虚拟键码
g_xPos++;
break;
}
InvalidateRect( hWnd,NULL, TRUE );//重画
}
void OnKeyUp( HWND hWnd, WPARAM wParam )
{
char szText[256]={0};
sprintf( szText, "WM_KEYUP:%08X\n",wParam);
WriteConsole( g_hOutput,szText,strlen(szText),NULL,NULL );
}
// WM_CHAR消息
void OnChar( HWND hWnd, WPARAM wParam )
{
char szText[256]={ 0 };
sprintf( szText, "WM_CHAR:%08X\n",wParam);
WriteConsole( g_hOutput,szText,strlen(szText),NULL,NULL );
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_CHAR:
OnChar( hWnd,wParam );
break;
case WM_KEYDOWN:
OnKeyDown( hWnd, wParam );
break;
case WM_KEYUP:
OnKeyUp( hWnd, wParam );
break;
case WM_LBUTTONDOWN://申明重绘消息
InvalidateRect( hWnd,NULL,TRUE );
case WM_PAINT: //重绘消息
OnPaint( hWnd );
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0从而可以退出
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
// wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
wce.style = 0;//0非强制重绘
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
g_hOutput = GetStdHandle( STD_OUTPUT_HANDLE );//调用dos窗口
g_hInstance = hInstance;//接收窗口句柄
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****鼠标消息**
\#include "stdafx.h"
\#include "stdio.h"
HANDLE g_hOutput = 0;
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
int g_yPos = 100;
int g_xPos = 100;
//鼠标按键事件
void OnLButtonDown( HWND hWnd, WPARAM wParam,LPARAM lParam)
{
char szText[256] = { 0 };
sprintf( szText,"WM_LBUTTOONDOWN:按键状态=%08X, x=%d,y=%d\n",
wParam, LOWORD(lParam), HIWORD(lParam) );
WriteConsole( g_hOutput, szText, strlen(szText),NULL,NULL);
}
void OnLButtonUp( HWND hWnd, WPARAM wParam,LPARAM lParam)
{
char szText[256] = { 0 };
sprintf( szText,"WM_LBUTTOONUP:按键状态=%08X, x=%d,y=%d\n",
wParam, LOWORD(lParam), HIWORD(lParam) );
WriteConsole( g_hOutput, szText, strlen(szText),NULL,NULL);
}
//鼠标移动事件
void OnMouseMove( HWND hWnd, LPARAM lParam)
{
char szText[256] = { 0 };
sprintf( szText,"WM_MOUSEMoVE:x=%d,y=%d\n",LOWORD(lParam), HIWORD(lParam) );
// WriteConsole( g_hOutput, szText, strlen(szText),NULL,NULL);
g_xPos = LOWORD(lParam);
g_yPos = HIWORD(lParam);
InvalidateRect( hWnd, NULL, TRUE );
}
//绘制函数
void OnPaint( HWND hWnd)
{
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint( hWnd, &ps);
TextOut( hdc,g_xPos,g_yPos,"hello",strlen("hello"));//画字符串
EndPaint( hWnd, &ps );
}
//鼠标双击事件
void OnLButtonDblClk( HWND hWnd )
{
char *pszText = "WM_LBUTTONDBLCLK\n";
WriteConsole( g_hOutput,pszText,strlen(pszText),NULL,NULL );
}
void OnMouseWheel( HWND hWnd, WPARAM wParam )
{
short nDelta = HIWORD( wParam );
char szText[256] = { 0 };
sprintf( szText, "偏移量:%d\n",nDelta );
WriteConsole( g_hOutput, szText,strlen(szText),NULL,NULL );
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_MOUSEWHEEL:
OnMouseWheel( hWnd, wParam );
break;
case WM_LBUTTONDBLCLK:
OnLButtonDblClk( hWnd );
break;
case WM_PAINT:
OnPaint( hWnd );
break;
case WM_MOUSEMOVE:
OnMouseMove( hWnd,lParam);
break;
case WM_LBUTTONDOWN:
OnLButtonDown( hWnd, wParam,lParam );
break;
case WM_LBUTTONUP:
OnLButtonUp( hWnd, wParam, lParam );
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW | CS_DBLCLKS;//窗口风格
//wce.style = 0;
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
g_hOutput = GetStdHandle( STD_OUTPUT_HANDLE );
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****定时器消息**
\#include "stdafx.h"
\#include "stdio.h"
int g_xPos = 0;
int g_yPos = 0;
BOOL g_Right = TRUE; //g_left = FALSE;
BOOL g_Bottom = TRUE;//g_Top = FALSE;
//int nRightRect = 110;
//int nBottomRect = 110;
//nRightRect = nLeftRect+60;
//nBottomRect = nTopRect+60;
HANDLE g_hOutput = 0;
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//定时器处理函数
void OnTimer( HWND hWnd, WPARAM wParam )
{
// char szText[256]={0};
// sprintf( szText, "定时器:%d\n",wParam );
// WriteConsole( g_hOutput, szText, strlen(szText),NULL,NULL );
//获得边框大小
RECT rc ={0};
GetClientRect( hWnd, &rc);
if(g_Right)
{
if( g_xPos+50 >= rc.right )
{
g_Right = FALSE;
}
else
{
g_xPos++;
}
}
else
{
if ( g_xPos <= rc.left )
{
g_Right = TRUE;
}
else
{
g_xPos--;
}
}
if ( g_Bottom)
{
if ( g_yPos+50 <= rc.bottom)
{
g_yPos++;
}
else
{
g_Bottom = FALSE;
}
}
else
{
if ( g_yPos >= rc.top)
{
g_yPos--;
}
else
{
g_Bottom = TRUE;
}
}
// InvalidateRect( hWnd, NULL,TRUE);
InvalidateRect( hWnd, NULL,FALSE);
}
//自定义定时器处理函数
void CALLBACK TimerProc ( HWND hWnd, UINT nMsg,UINT idTimer,DWORD dwCur )
{
char szText[256] = { 0 };
sprintf( szText, "定时器处理函数处理:%d\n",idTimer);
WriteConsole( g_hOutput, szText,strlen(szText),NULL,NULL );
}
//绘图函数
void OnPaint( HWND hWnd)
{
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint( hWnd,&ps);
Ellipse ( hdc, g_xPos,g_yPos,g_xPos+50,g_yPos+50 );
EndPaint ( hWnd, &ps);
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_LBUTTONDOWN:
KillTimer( hWnd ,1);//左键停止
break;
case WM_PAINT:
OnPaint( hWnd );
break;
case WM_TIMER://触发定时器
OnTimer( hWnd, wParam );
break;
case WM_CREATE:
{
//放定时器
SetTimer( hWnd, 1, 10, NULL );
// SetTimer( hWnd, 2, 2000, TimerProc );
break;
}
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
g_hOutput = GetStdHandle( STD_OUTPUT_HANDLE );
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****创建菜单项**
\#include "stdafx.h"
\#include "stdio.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
HMENU hFile = 0;
HANDLE g_hOutput = 0;
//构建菜单
void OnCreate ( HWND hWnd )
{
HMENU hMain = CreateMenu();
hFile = CreatePopupMenu();
AppendMenu ( hFile, MF_STRING|MF_CHECKED, 1003, "新建");
AppendMenu ( hFile, MF_SEPARATOR, 0, "");// 分割线
AppendMenu ( hFile, MF_STRING|MF_MENUBARBREAK, 1004, "退出");//并排
HMENU hHelp = CreatePopupMenu();
AppendMenu( hHelp,MF_STRING|MF_GRAYED,1005, "关于");
AppendMenu ( hMain, MF_POPUP, (UINT)hFile, "文件");
AppendMenu ( hMain, MF_POPUP, (UINT)hHelp, "帮助");
SetMenu( hWnd, hMain ); //设置
}
//功能实现
int g_state = 0;//全局变量(标志量)
void OnCommand( HWND hWnd,WPARAM wParam )
{
switch( LOWORD(wParam) )
{
case 1003:
if( g_state == 0 )
{
CheckMenuItem( hFile,0,MF_BYPOSITION|MF_UNCHECKED );
}
else
{
CheckMenuItem( hFile, 0,MF_BYPOSITION|MF_CHECKED );//菜单项位置
}
g_state = !g_state;//反向
break;
case 1004:
MessageBox( hWnd, "退出被点击", "Infor",MB_OK );
break;
case 1005:
MessageBox( hWnd, "关于被点击", "Infor",MB_OK );
break;
}
}
//附带信息
void OnInitMenuPopup( HWND hWnd, WPARAM wParam, LPARAM lParam )
{
char szText[256] = { 0 };
sprintf( szText,"即将显示菜单:%d,被点击的顶层菜单项索引:%d,\
即将显示的菜单是否为窗口菜单:%d\n",wParam,LOWORD(lParam),HIWORD(lParam) );
WriteConsole( g_hOutput,szText, strlen(szText),NULL,NULL );
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_INITMENUPOPUP:
OnInitMenuPopup( hWnd, wParam, lParam );
break;
case WM_COMMAND:
OnCommand( hWnd, wParam );
break;
case WM_CREATE:
OnCreate( hWnd );
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
AllocConsole();
g_hOutput = GetStdHandle ( STD_OUTPUT_HANDLE );
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****绘图**
\#include "stdafx.h"
\#include "resource.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
int g_kind = 0; // 标志量
void OnCommand(HWND hWnd,WPARAM wParam)
{
g_kind = LOWORD(wParam);
switch(LOWORD(wParam))
{
case ID_PIT:
case ID_LINE:
case ID_REC:
case ID_ELL:
case ID_ARC:
//MessageBox(hWnd,"CTRL+Y被点击","Infor",MB_OK);
InvalidateRect( hWnd,NULL,TRUE );//重绘
break;
}
}
//绘制点
void DrawPit(HDC hdc)
{
//SetPixel(hdc,100,100,RGB(255,0,0));//点
for(int i=0; i<256; i++ )//面
{
for(int j=0; j<256;j++ )
{
SetPixel(hdc,i,j,RGB(256,0,0));
}
}
}
//绘制线
void DrawLine(HDC hdc)
{
MoveToEx(hdc,100,100,NULL);//设置当前点
LineTo(hdc,300,300);//绘线
LineTo(hdc,200,500);//接着画
}
//绘制矩形
void DrawRec( HDC hdc)
{
Rectangle(hdc,100,100,300,300);//矩形
//RoundRect(hdc,300,100,500,300,50,50);//圆角矩形
RoundRect(hdc,300,100,500,300,200,200);//变成圆了
}
//绘制圆形
void DrawEll(HDC hdc)
{
Ellipse(hdc,100,100,300,300);//圆
Ellipse(hdc,300,100,600,300);//椭圆
}
//绘制弧线
void DrawArc(HDC hdc)
{
SetArcDirection(hdc,AD_CLOCKWISE);//顺时针//设置取弧规则
Arc(hdc,100,100,300,300,100,100,300,300);//画圆(默认逆时针取弧)
}
//绘图
void OnPaint(HWND hWnd)
{
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint(hWnd,&ps);
//画笔
//HPEN hPen = CreatePen(PS_SOLID,100,RGB(255,0,0));//做笔//实线
HPEN hPen = CreatePen(PS_DASH,1,RGB(255,0,0));//做笔//虚线(必须一个像素宽)
HGDIOBJ nOldPen = SelectObject(hdc,hPen);//送笔
//画刷
//HBRUSH hBrush = CreateSolidBrush(RGB(0,255,0));//实心画刷(填充单一色)
//HBRUSH hBrush = CreateHatchBrush(HS_CROSS,RGB(0,255,0));//填充阴影线
//HGDIOBJ hBrush = GetStockObject(NULL_BRUSH);//透明画刷(从系统获取)
//位图
HBITMAP hBmp = LoadBitmap( g_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
HBRUSH hBrush = CreatePatternBrush( hBmp );
HGDIOBJ nOldBrush = SelectObject(hdc,hBrush);//送刷
switch(g_kind)
{
case ID_ARC:
DrawArc(hdc);//绘制弧线
break;
case ID_ELL:
DrawEll(hdc);//绘制圆形
break;
case ID_REC:
DrawRec(hdc);//绘制矩形
break;
case ID_PIT:
DrawPit(hdc);//绘制点
break;
case ID_LINE:
DrawLine(hdc);//绘制线
break;
}
SelectObject(hdc,nOldPen);//换回画笔
DeleteObject( hPen);//释放画笔
SelectObject(hdc,nOldBrush);//换回画刷
DeleteObject( hBrush );//释放画刷
EndPaint(hWnd,&ps);
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_COMMAND:
OnCommand(hWnd,wParam);
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground =
CreateSolidBrush(RGB(0,0,255));//(HBRUSH)(COLOR_WINDOW+1);//背景色
wce.hCursor = NULL;//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****对话框**
\#include "stdafx.h"
\#include "resource.h"
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//模式对话框过程函数
BOOL CALLBACK ModalDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
SetWindowText(hDlg,"模式对话框");
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,1);
return TRUE;
case IDCANCEL:
EndDialog(hDlg,2);
//DestroyWindow(hDlg);
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hDlg,3);
return TRUE;
case WM_DESTROY:
MessageBox(hDlg,"WM_DESTORY来了!","对话框",MB_OK);
return TRUE;
}
return FALSE;
}
//无模式对话框过程函数
BOOL CALLBACK ModelessProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
SetWindowText(hDlg,"无模式对话框");
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
DestroyWindow(hDlg);
return TRUE;
case IDCANCEL:
DestroyWindow(hDlg);
//DestroyWindow(hDlg);
return TRUE;
}
break;
case WM_CLOSE:
return TRUE;
case WM_DESTROY:
SetActiveWindow(GetParent(hDlg));//激活父窗口
return TRUE;
}
return FALSE;
}
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_DLG_MODAL://模式
{
int nResult = DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_DIALOG),
hWnd,ModalDlgProc);
switch (nResult)
{
case 1:
MessageBox(hWnd,"用户按了确定按钮!","对话框",MB_OK);
break;
case 2:
MessageBox(hWnd,"用户按了取消按钮!","对话框",MB_OK);
break;
case 3:
MessageBox(hWnd,"用户按了关闭按钮!","对话框",MB_OK);
break;
}
return 0;
}
case IDM_DLG_MODELESS://无模式
HWND hDlg = CreateDialog(g_hInstance,MAKEINTRESOURCE(IDD_DIALOG),
hWnd,ModelessProc);
ShowWindow(hDlg,SW_NORMAL);
return 0;
}
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_MAIN);//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","WINDOWS");
Display( hWnd);
Message();
return 0;
}
**//****按钮**
\#include "stdafx.h"
\#define IDC_BTN_PUSH 4001
\#define IDC_BTN_DEFPUSH 4002
\#define IDC_BTN_GROUP 4003
\#define IDC_BTN_CHECK 4004
\#define IDC_BTN_AUTOCHECK 4005
\#define IDC_BTN_3STATE 4006
\#define IDC_BTN_AUTO3STATE 4007
\#define IDC_BTN_RADIO1 4008
\#define IDC_BTN_RADIO2 4009
\#define IDC_BTN_AUTORADIO1 4010
\#define IDC_BTN_AUTORADIO2 4011
\#define IDC_BTN_AUTORADIO3 4012
\#define IDC_BTN_AUTORADIO4 4013
\#define IDC_BTN_PUSHLIKE 4014
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_CREATE:
//创建按钮
{
//下压式按钮
int x = 4, y = 4;
CreateWindowEx(
0,
"BUTTON",
"Push Button",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
x,
y,
150,
32,
hWnd,
(HMENU)IDC_BTN_PUSH,
g_hInstance,
NULL);
//缺省下压按钮
CreateWindowEx(
0,
"BUTTON",
"Default Push Button",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
x,
y += 36,
150,
32,
hWnd,
(HMENU)IDC_BTN_PUSH,
g_hInstance,
NULL);
//分组框
CreateWindowEx(
0,
"BUTTON",
"Group Box",
WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
x,
y += 36,
150,
96,
hWnd,
(HMENU)IDC_BTN_GROUP,
g_hInstance,
NULL);
//复选框(手动)
CreateWindowEx(
0,
"BUTTON",
"Check Box",
WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
x,
y += 100,
150,
24,
hWnd,
(HMENU)IDC_BTN_CHECK,
g_hInstance,
NULL);
//复选框(自动)
CreateWindowEx(
0,
"BUTTON",
"Auto Check Box",
WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTOCHECK,
g_hInstance,
NULL);
//三态复选框(手动)
CreateWindowEx(
0,
"BUTTON",
"3 State",
WS_CHILD | WS_VISIBLE | BS_3STATE,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_3STATE,
g_hInstance,
NULL);
//三态复选框(自动)
CreateWindowEx(
0,
"BUTTON",
"Auto 3 State",
WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTO3STATE,
g_hInstance,
NULL);
//复选框1
SendMessage( CreateWindowEx(/* 创建并初始化*/
0,
"BUTTON",
"Radio Button 1",
WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON | WS_GROUP,/* 设为组长*/
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_RADIO1,
g_hInstance,
NULL),BM_SETCHECK,BST_CHECKED,0);
//复选框2
CreateWindowEx(
0,
"BUTTON",
"Radio Button 2",
WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_RADIO2,
g_hInstance,
NULL);
//复选框1(自动)
SendMessage( CreateWindowEx(/* 创建并初始化*/
0,
"BUTTON",
"Auto Radio Button 1",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON| WS_GROUP,/* 设为组长*/
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTORADIO1,
g_hInstance,
NULL),BM_SETCHECK,BST_CHECKED,0);
//复选框2(自动)
CreateWindowEx(
0,
"BUTTON",
"Auto Radio Button 2",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTORADIO2,
g_hInstance,
NULL);
//复选框3(自动)
SendMessage( CreateWindowEx(/* 创建并初始化*/
0,
"BUTTON",
"Auto Radio Button 3",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON| WS_GROUP,/* 设为组长*/
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTORADIO3,
g_hInstance,
NULL),BM_SETCHECK,BST_CHECKED,0);
//复选框4(自动)
CreateWindowEx(
0,
"BUTTON",
"Auto Radio Button 4",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
x,
y += 28,
150,
24,
hWnd,
(HMENU)IDC_BTN_AUTORADIO4,
g_hInstance,
NULL);
//复选框(自动)(类似于下压按钮)
CreateWindowEx(
0,
"BUTTON",
"Push Like",
WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE,
x,
y += 28,
150,
32,
hWnd,
(HMENU)IDC_BTN_PUSHLIKE,
g_hInstance,
NULL);
return 0;
}
//消息处理
case WM_COMMAND:
//按钮消息
switch (LOWORD(wParam))
{
case IDC_BTN_PUSH:
case IDC_BTN_DEFPUSH:
switch (HIWORD(wParam))
{
case BN_CLICKED:
{
CHAR szText[256];
GetWindowText((HWND)lParam,szText,
sizeof(szText)/sizeof(szText[0])); //取按钮文字
MessageBox(hWnd,szText,"按钮",MB_OK);
return 0;
}
}
break;
case IDC_BTN_CHECK:
switch(HIWORD(wParam))
{
//复选框(勾)
case BN_CLICKED:
switch(SendMessage((HWND)lParam,BM_GETCHECK,0,0))
{//打勾勾
case BST_CHECKED:
SendMessage((HWND)lParam,BM_SETCHECK,BST_UNCHECKED,0);
break;
case BST_UNCHECKED:
SendMessage((HWND)lParam,BM_SETCHECK,BST_CHECKED,0);
break;
}
return 0;
}
break;
//3态复选框(勾)
case IDC_BTN_3STATE:
switch(HIWORD(wParam))
{
case BN_CLICKED:
switch(SendMessage((HWND)lParam,BM_GETCHECK,0,0))
{//打勾勾
case BST_CHECKED:
SendMessage((HWND)lParam,
BM_SETCHECK,BST_INDETERMINATE,0);//灰态
break;
case BST_INDETERMINATE:
SendMessage((HWND)lParam,
BM_SETCHECK,BST_UNCHECKED,0);//无勾
break;
case BST_UNCHECKED:
SendMessage((HWND)lParam,
BM_SETCHECK,BST_CHECKED,0);//有勾
break;
}
return 0;
}
break;
case IDC_BTN_RADIO1://单选框1
switch (HIWORD(wParam))
{
case BN_CLICKED:
if(SendMessage((HWND)lParam,BM_GETCHECK,0,
0) == BST_UNCHECKED)//当前没选
{
SendMessage((HWND)lParam,BM_SETCHECK,BST_CHECKED,0);
SendMessage(GetDlgItem(hWnd,IDC_BTN_RADIO2),
BM_SETCHECK,BST_UNCHECKED,0);
}
return 0;
}
break;
case IDC_BTN_RADIO2://单选框2
switch (HIWORD(wParam))
{
case BN_CLICKED:
if(SendMessage((HWND)lParam,BM_GETCHECK,0,
0) == BST_UNCHECKED)//当前没选
{
SendMessage((HWND)lParam,BM_SETCHECK,BST_CHECKED,0);
SendMessage(GetDlgItem(hWnd,IDC_BTN_RADIO1),
BM_SETCHECK,BST_UNCHECKED,0);
}
return 0;
}
break;
}
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","Windows");
Display( hWnd);
Message();
return 0;
}
**//****编辑框**
\#include "stdafx.h"
\#include <stdlib.h>
\#define IDC_EDIT_SINGLEINE 4001
\#define IDC_EDIT_PASSWORD 4002
\#define IDC_EDIT_NUMBER 4003
\#define IDC_EDIT_UPPERCASE 4004
\#define IDC_EDIT_MULTILINE 4005
\#define IDC_EDIT_READONLY 4006
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_CREATE:
{
int x = 4, y = 4;
//单行编辑框
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
"Hello, world !",
WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL,
x,
y,
238,
24,
hWnd,
(HMENU)IDC_EDIT_SINGLEINE,
g_hInstance,
NULL);
//单行编辑框(口令式(密码))
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_PASSWORD | ES_CENTER,
x,
y += 28,
238,
24,
hWnd,
(HMENU)IDC_EDIT_PASSWORD,
g_hInstance,
NULL);
//单行编辑框(只能输入数字)
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_NUMBER | ES_RIGHT,
x,
y += 28,
238,
24,
hWnd,
(HMENU)IDC_EDIT_NUMBER,
g_hInstance,
NULL);
//单行编辑框(只能输入大写)
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_UPPERCASE,
x,
y += 28,
238,
24,
hWnd,
(HMENU)IDC_EDIT_UPPERCASE,
g_hInstance,
NULL);
//多行编辑框
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL,
x,
y += 28,
238,
183,
hWnd,
(HMENU)IDC_EDIT_MULTILINE,
g_hInstance,
NULL);
//多行编辑框(只读)
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
"你好啊\r\n我爱学习",
WS_CHILD | WS_VISIBLE | ES_MULTILINE |
WS_HSCROLL | WS_VSCROLL | ES_READONLY,
x,
y += 187,
238,
183,
hWnd,
(HMENU)IDC_EDIT_READONLY,
g_hInstance,
NULL);
return 0;
}
//鼠标左键消息
case WM_LBUTTONDOWN:
{
int nLen = GetWindowTextLength(GetDlgItem (hWnd,IDC_EDIT_MULTILINE));
if(nLen)
{
++nLen;
LPSTR pszText = (LPSTR)malloc(nLen * sizeof(pszText[0]));
GetWindowText(GetDlgItem(hWnd,IDC_EDIT_MULTILINE),pszText,nLen);
MessageBox(hWnd,pszText,"密码",MB_OK);
free(pszText);
}
return 0;
}
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","Windows");
Display( hWnd);
Message();
return 0;
}
**//****滚动条**
\#include "stdafx.h"
\#define IDC_SB_R 4001
\#define IDC_SB_G 4002
\#define IDC_SB_B 4003
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch ( nMsg )
{
case WM_CREATE:
{
int x = 4, y = 4;
//滚动条(垂直)
HWND hwndSB = CreateWindowEx (
0,
"SCROLLBAR",
NULL,
WS_CHILD | WS_VISIBLE | SBS_VERT,
x,
y,
50,
300,
hWnd,
(HMENU)IDC_SB_R,
g_hInstance,
NULL);
SendMessage(hwndSB,SBM_SETRANGE,0,255);//设置范围
SendMessage(hwndSB,SBM_SETPOS,0,FALSE);//设置位置
//滚动条(水平)
hwndSB = CreateWindowEx (
0,
"SCROLLBAR",
NULL,
WS_CHILD | WS_VISIBLE | SBS_HORZ,
x += 54,
y += 125,
150,
50,
hWnd,
(HMENU)IDC_SB_G,
g_hInstance,
NULL);
SendMessage(hwndSB,SBM_SETRANGE,0,255);//设置范围
SendMessage(hwndSB,SBM_SETPOS,0,FALSE);//设置位置
//滚动条(垂直)
hwndSB = CreateWindowEx (
0,
"SCROLLBAR",
NULL,
WS_CHILD | WS_VISIBLE | SBS_VERT,
x += 154,
y -= 125,
50,
300,
hWnd,
(HMENU)IDC_SB_B,
g_hInstance,
NULL);
SendMessage(hwndSB,SBM_SETRANGE,0,255);//设置范围
SendMessage(hwndSB,SBM_SETPOS,0,FALSE);//设置位置
return 0;
}
//消息处理
//处理水平滚动条
case WM_HSCROLL:
{
int nPos = SendMessage((HWND)lParam,SBM_GETPOS,0,0);
switch(LOWORD(wParam))
{
case SB_LINELEFT:
--nPos;
break;
case SB_LINERIGHT:
++nPos;
break;
case SB_PAGELEFT:
nPos -= 32;
break;
case SB_PAGERIGHT:
nPos += 32;
break;
// case SB_THUMBPOSITION: //松手时拿到消息
case SB_THUMBTRACK: // 滚动过程中拿到消息
nPos = HIWORD(wParam);
break;
}
SendMessage((HWND)lParam,SBM_SETPOS,nPos,TRUE);
InvalidateRect(hWnd,NULL,TRUE);//重绘
return 0;
}
//处理垂直滚动条
case WM_VSCROLL:
{
int nPos = SendMessage((HWND)lParam,SBM_GETPOS,0,0);
switch(LOWORD(wParam))
{
case SB_LINEUP:
--nPos;
break;
case SB_LINEDOWN:
++nPos;
break;
case SB_PAGEUP:
nPos -= 32;
break;
case SB_PAGEDOWN:
nPos += 32;
break;
// case SB_THUMBPOSITION: //松手时拿到消息
case SB_THUMBTRACK: // 滚动过程中拿到消息
nPos = HIWORD(wParam);
break;
}
SendMessage((HWND)lParam,SBM_SETPOS,nPos,TRUE);
InvalidateRect(hWnd,NULL,TRUE);//重绘
return 0;
}
//刷背景消息
case WM_ERASEBKGND:
{
HBRUSH hbru = CreateSolidBrush(RGB(
SendMessage(GetDlgItem(hWnd,IDC_SB_R),SBM_GETPOS,0,0),
SendMessage(GetDlgItem(hWnd,IDC_SB_G),SBM_GETPOS,0,0),
SendMessage(GetDlgItem(hWnd,IDC_SB_B),SBM_GETPOS,0,0) ));
RECT rcClient;
GetClientRect(hWnd,&rcClient);
FillRect((HDC)wParam,&rcClient,hbru);
DeleteObject(hbru);
return 0;
}
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = NULL;//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW |
WS_CLIPCHILDREN |WS_HSCROLL | WS_VSCROLL,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","Windows");
Display( hWnd);
Message();
return 0;
}
**//****组合框**
\#include "stdafx.h"
\#include "resource.h"
\#include <stdio.h>
\#include <stdlib.h>
\#define IDC_CMB_SIM 4001
\#define IDC_CMB_DD 4002
\#define IDC_CMB_DDL 4003
HINSTANCE g_hInstance = 0; //接收当前程序实例句柄
//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
static HWND hwndSim = NULL,hwndDd = NULL,hwndDdl = NULL;
switch ( nMsg )
{
case WM_CREATE:
{
int x = 4,y = 4;
//组合框(简单的)
hwndSim = CreateWindowEx(
0,
"COMBOBOX",
NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
CBS_AUTOHSCROLL | CBS_SIMPLE,
x,
y,
200,
250,
hWnd,
(HMENU)IDC_CMB_SIM,
g_hInstance,
NULL);
//组合框(下拉式)
hwndDd = CreateWindowEx(
0,
"COMBOBOX",
NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
CBS_AUTOHSCROLL | CBS_DROPDOWN,
x += 204,
y,
200,
250,
hWnd,
(HMENU)IDC_CMB_DD,
g_hInstance,
NULL);
//组合框(下拉列表式)
hwndDdl = CreateWindowEx(
0,
"COMBOBOX",
NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
x += 204,
y,
200,
250,
hWnd,
(HMENU)IDC_CMB_DDL,
g_hInstance,
NULL);
break;
}
//组合框消息
case WM_COMMAND:
switch (LOWORD(wParam))
{
//添加选项
case IDM_CMB_ADD:
{
for (int i = 0; i< 100; ++i)
{
CHAR szItem[256];
sprintf(szItem,"Item %d",i);
SendMessage(hwndSim,CB_ADDSTRING,0,(LPARAM)szItem);
SendMessage(hwndSim,CB_SETITEMDATA,i,i+1000);//附加数据
SendMessage(hwndDd,CB_ADDSTRING,0,(LPARAM)szItem);
SendMessage(hwndDdl,CB_ADDSTRING,0,(LPARAM)szItem);
}
SendMessage(hwndSim,CB_INSERTSTRING,10,(LPARAM)"Item 9.5");
SendMessage(hwndDd,CB_INSERTSTRING,10,(LPARAM)"Item 9.5");
SendMessage(hwndDdl,CB_INSERTSTRING,10,(LPARAM)"Item 9.5");
return 0;
}
//删除选项
case IDM_CMB_DEL:
SendMessage(hwndSim,CB_DELETESTRING,10,0);
SendMessage(hwndDd,CB_DELETESTRING,10,0);
SendMessage(hwndDdl,CB_DELETESTRING,10,0);
return 0;
//全删除
case IDM_CMB_RESET:
SendMessage(hwndSim,CB_RESETCONTENT,0,0);
SendMessage(hwndDd,CB_RESETCONTENT,0,0);
SendMessage(hwndDdl,CB_RESETCONTENT,0,0);
return 0;
//获取选项
case IDM_CMB_GET:
{
int nSel = SendMessage(hwndSim,CB_GETCURSEL,0,0);
CHAR szMsg[256];
if(nSel == CB_ERR)
sprintf(szMsg,"没有选项!");
else
sprintf(szMsg,"当前选项:%d",nSel);
MessageBox(hWnd,szMsg,"WinCombo",MB_OK);
return 0;
}
//设置当前被选项
case IDM_CMB_SET:
{
SendMessage(hwndDd,CB_SETCURSEL,5,0);
return 0;
}
//模糊查找
case IDM_CMB_FIND:
{
int nFind = SendMessage(hwndDdl,CB_FINDSTRING,-1,(LPARAM)"Item 55");
CHAR szMsg[256];
if(nFind == CB_ERR)
sprintf(szMsg,"没找到!");
else
sprintf(szMsg,"找到了:%d",nFind);
MessageBox(hWnd,szMsg,"WinCombo",MB_OK);
return 0;
}
//精确查找
case IDM_CMB_EXACT:
{
int nFind = SendMessage(hwndDdl,CB_FINDSTRINGEXACT,-1,(LPARAM)"Item");
CHAR szMsg[256];
if(nFind == CB_ERR)
sprintf(szMsg,"没找到!");
else
sprintf(szMsg,"找到了:%d",nFind);
MessageBox(hWnd,szMsg,"WinCombo",MB_OK);
return 0;
}
//选择设置
case IDM_CMB_SELSTR:
{
SendMessage(hwndDdl,CB_SELECTSTRING,-1,(LPARAM)"itEm 55");
return 0;
}
//获取内容
case IDM_CMB_TEXT:
{
int nSel = SendMessage(hwndSim,CB_GETCURSEL,0,0);
if(nSel != CB_ERR)
{
int nLen = SendMessage(hwndSim,CB_GETLBTEXTLEN,
nSel,0);
++nLen;
LPSTR pszText = (LPSTR)malloc(nLen * sizeof(pszText[0]));
SendMessage(hwndSim,CB_GETLBTEXT,nSel,
(LPARAM)pszText);
MessageBox(hWnd,pszText,"WinCombo",MB_OK);
free(pszText);
}
return 0;
}
//显示文件/目录
case IDM_CMB_DIR:
{
SendMessage(hwndSim,CB_DIR,DDL_ARCHIVE,(LPARAM)"C:/Windows/*.*");//文件
SendMessage(hwndDd,CB_DIR,DDL_DIRECTORY | DDL_EXCLUSIVE/*排除它*/,
(LPARAM)"C:/Windows/*.*");//目录
SendMessage(hwndDdl,CB_DIR,DDL_HIDDEN | DDL_ARCHIVE | DDL_SYSTEM |
DDL_EXCLUSIVE/*排除它*/,(LPARAM)"C:/*.*");//隐藏文件
return 0;
}
//附加数据
case IDM_CMB_DATA:
{
int nSel = SendMessage(hwndSim,CB_GETCURSEL,0,0);//获得所选项
if(nSel != CB_ERR)
{
int data = SendMessage(hwndSim,CB_GETITEMDATA,nSel,0);//拿选项
char szMsg[256];
sprintf(szMsg,"附加数据:%d",data);
MessageBox(hWnd,szMsg,"WinCombo",MB_OK);
}
return 0;
}
//通知消息
case IDC_CMB_SIM:
switch (HIWORD(wParam))
{
case CBN_SELCHANGE:
int nSel = SendMessage(hwndSim,CB_GETCURSEL,0,0);
if(nSel != CB_ERR)
{
SendMessage(hwndDd,CB_SETCURSEL,nSel,0);
SendMessage(hwndDdl,CB_SETCURSEL,nSel,0);
}
return 0;
}
}
break;
case WM_DESTROY:
PostQuitMessage( 0 );//能够使getMessage返回0
break;
}
return DefWindowProc( hWnd, nMsg, wParam,lParam );
}
//注册窗口类
void Register(LPSTR lpClassName,WNDPROC wndproc )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce ); //结构体的大小
wce.cbClsExtra = 0;//窗口类缓冲区
wce.cbWndExtra = 0;//窗口缓冲区
wce.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);//背景色
wce.hCursor = LoadCursor(NULL,IDC_ARROW);//光标
wce.hIcon = NULL;//窗口大图标句柄
wce.hIconSm = NULL;//窗口小图标句柄
wce.hInstance = g_hInstance;//当前模块句柄
wce.lpfnWndProc = wndproc;//窗口处理函数
wce.lpszClassName = lpClassName;//窗口类名称
wce.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_MAIN);//菜单名
wce.style = CS_VREDRAW | CS_VREDRAW;//窗口风格
RegisterClassEx( &wce );//注册,向系统写入
}
//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
HWND hWnd = CreateWindowEx( 0, lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,
NULL );
return hWnd;
}
//显示(绘制)窗口
void Display(HWND hWnd )
{
ShowWindow( hWnd,SW_SHOW );
UpdateWindow( hWnd);
}
//消息循环
void Message()
{
MSG uMsg = { 0 };
while( GetMessage(&uMsg,NULL,0,0)) //获取消息
{
TranslateMessage( &uMsg ); // 翻译,分析
DispatchMessage( &uMsg ); // 调度,派发
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
Register("Main",WndProc);
HWND hWnd = CreateMain( "Main","Windows");
Display( hWnd);
Message();
return 0;
}
打赏
License
本作品由Simon(http://www.uusystem.com)创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 欢迎转载,但任何转载必须保留完整文章,在显要地方显示此声明以及原文链接。如您有任何疑问或者授权方面的协商,请邮件:postmaster@uusystem.com。