|
学习了两个月时间C++Win32编程发布一些对Win32图形窗口程序学习心得
第一次发帖可能有一些地方表达没有很清楚,请大家谅解,别喷我
原贴:https://www.cnblogs.com/hnfxs/p/3834908.html
大家可以把原贴的代码复制粘贴在自己的工程中试试能否编译通过再复制下面的代码,希望对大家学习c++编程有一定帮助
其中的一些代码稍做了一下修改,解决了一些编译错误。不知道怎么创建项目的可以参考下面的
打开vs2010(本人用的是VS2010)->选择VC++项目新建一个Win32Application->选Windows应用程序,勾选空项目->完成
//*******************************************************************
// 工程:easywin
// 文件:easywin.cpp
// 内容:一个基本的Win32程序
//回顾一些知识,syc老师教的_T()函数只能在MFC程序中使用,_TEXT()就是Win32程序的_T()
//还有关于
//*******************************************************************
#include <windows.h>
#include <windowsx.h>
//函数声明
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam );
//*******************************************************************
//函数:WinMain()
//功能:Win32应用程序入口函数。创建主窗口,处理消息循环
//*******************************************************************
int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄
HINSTANCE hPrevInstance, //前一个实例句柄
LPSTR lpCmdLine, //命令行字符
int nCmdShow) //窗口显示方式
{
MSG msg;
//创建主窗口
if ( !InitWindow( hInstance, nCmdShow ) )
return FALSE;
//进入消息循环:
//从该应用程序的消息队列中检取消息,送到消息处理过程,
//当检取到WM_QUIT消息时,退出消息循环。
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//程序结束
return msg.wParam;
}
//******************************************************************
//函数:InitWindow()
//功能:创建窗口。
//******************************************************************
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
HWND hwnd; //窗口句柄
WNDCLASS wc; //窗口类结构
//填充窗口类结构
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("EasyWin");
RegisterClass( &wc ); //注册窗口类
hwnd = CreateWindow( //创建主窗口
TEXT("EasyWin"), //窗口类名称
TEXT("一个基本的Win32程序"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型
100, //窗口位置的x坐标
100, //窗口位置的y坐标
400, //窗口的宽度
300, //窗口的高度
NULL, //父窗口句柄
NULL, //菜单句柄
hInstance, //应用程序实例句柄
NULL ); //窗口创建数据指针
if( !hwnd ) return FALSE;
//显示并更新窗口
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
return TRUE;
}
//******************************************************************
//函数:WinProc()
//功能:处理主窗口消息
//******************************************************************
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam )
{
switch( message )
{
case WM_KEYDOWN://击键消息
switch( wParam )
{
case VK_ESCAPE:
MessageBox(hWnd,TEXT("ESC键按下了!"),TEXT("Keyboard"),MB_OK);
break;
}
break;
case WM_RBUTTONDOWN://鼠标消息
{
MessageBox(hWnd,TEXT("鼠标右键按下了!"),TEXT("Mouse"),MB_OK);
break;
}
case WM_PAINT://窗口重画消息
{
wchar_t hellow[] = TEXT("hellow world!"); //此处修改了,原贴是定义一个char数组这里改为 wchar_t实际就是定义了一个宽字节的char数组
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄
SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色
TextOut( hdc, 20, 10, hellow, wcslen(hellow));//输出文字
//这里也修改了一下因为TextOut()这个函数第四个参数需要的是一个宽字节char *数组所以就在上面修改了一下过编译,另外wcslen()相当于是strlen()只是宽字节版本的
EndPaint( hWnd, &ps ); //释放资源
break;
}
case WM_DESTROY://退出消息
PostQuitMessage( 0 );//调用退出函数
break;
}
//调用缺省消息处理过程
return DefWindowProc(hWnd, message, wParam, lParam);
}
剩下的内容大家可以查看原贴,帮助大家对Win32图形窗口程序如何创建加深理解,觉得不错的请不要吝啬你的免费评论Thanks 贴一份源码:
|
上一篇: 学习构造函数显示没声明的标示符memset下一篇: USC2转ANSI怎么转
|