天天加油 - 助您成才
Win32编程基础知识
您正在看的经验技巧是:Win32编程基础知识。

wc.lpszMenuName = NULL;

wc.lpszClassName = "EasyWin";

//注册窗口类

RegisterClass( &wc );

//创建主窗口

hwnd = CreateWindow(

"EasyWin", //窗口类名称

"一个基本的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,"ESC键按下了!","Keyboard",MB_OK);

break;

}

break;

case WM_RBUTTONDOWN://鼠标消息

{

MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);

break;

}

case WM_PAINT://窗口重画消息

{

char hello[]="你好,我是EasyWin !";

HDC hdc;

PAINTSTRUCT ps;

hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄

SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色

TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字

EndPaint( hWnd, &ps ); //释放资源

break;

}

case WM_DESTROY://退出消息

PostQuitMessage( 0 );//调用退出函数

break;

}

//调用缺省消息处理过程

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

}

程序输入完毕,即可编译执行。在窗口中击鼠标键或按ESC键时,会弹出一个对话框以表示你的操作。

其实,这个程序可以看成是所有Win32应用程序的框架,在以后所有的程序中,你会发现它们都是在这个程序的基础之上再添加代码。

WinMain()函数

WinMain()函数是应用程序开始执行时的入口点,通常也是应用程序结束任务退出时的出口点。它与DOS程序的main()函数起同样的作用,有一点不同的是,WinMain()函数必须带有四个参数,它们是系统传递给它的。WinMain()函数的原型如下:

int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄

HINSTANCE hPrevInstance, //前一个实例句柄

LPSTR lpCmdLine, //命令行字符

int nCmdShow) //窗口显示方式

第一个参数hInstance,是标识该应用程序当前的实例的句柄。它是HINSTANCE类型,HINSTANCE是Handle of Instance的缩写,表示实例的句柄。hInstance是一个很关键的数据,它唯一的代表该应用程序,在后面初始化程序主窗口的过程中需要用到这个参数。

这里有两个概念,一个是实例,一个是句柄。实例代表的是应用程序执行的整个过程和方法,一个应用程序如果没有被执行,只是存在于磁盘上,那么就说它是没有被实例化的;只要一执行,则说该程序的一个实例在运行。句柄,顾名思义,指的是一个对象的把柄。在Windows中,有各种各样的句柄,它们都是32位的指针变量,用来指向该对象所占据的内存区。句柄的使用,可以极大的方便Windows管理其内存中的各种对象。

第二个参数是hPrevInstance,它是用来标识该应用程序的前一个实例句柄。对于基于Win32的应用程序来说,这个参数总是NULL。这是因为在Win95操作系统中,应用程序的每个实例都有各自独立的地址空间,即使同一个应用程序被执行了两次,在内存中也会为它们的每一个实例分配新的内存空间,所以一个应用程序被执行后,不会有前一个实例存在的可能。也就是说,hPrevInstance这个参数是完全没有必要的,只是为了提供与16位Windows的应用程序形式上的兼容性,才保留了这个参数。在以前的16位Windows环境下(如Windows3.2),hPrevInstance用来标识与hInstance相关的应用程序的前一个句柄。

第三个参数是lpCmdLine,是指向应用程序命令行参数字符

上一页  1 2 3 4 5 6 下一页

排行

  1. Windows Vista SP1截图曝光
  2. Windows Vista:透视未来桌面远景
  3. 不同:Windows Vista的关机组合快
  4. 如何恢复Windows Vista/XP双启动
  5. Vista系列技巧:Vista侧边栏安装
  6. Vista解惑之防火墙10个注意事项
  7. 官方谈Vista OEM盗版激活 承认破
  8. 仅需三分钟 便可轻松破解Vista登
  9. 浅述单核CPU跑Vista 占用率高的原
  10. Vista Areo界面全攻略
  11. 从1.01到Vista Windows启动画面图
  12. 新手不用慌:Vista官方驱动程序大
  13. 切勿病急乱投医Vista疑难杂症诊解
  14. 再谈WindowVista如何调整硬盘分区
  15. 找回WindowsVista系统自带的游戏
  16. 低配置电脑安装WindowsVista后优
  1. Winodws下Apache+PHP+MySQL的安装
  2. 快照 RegSnap
  3. HKEY_USER 根键(一)
  4. 20:8!超宽屏Vista截图抢鲜
  5. Vista服务优化攻略
  6. Windows Vista:透视未来桌面远景
  7. 不同:Windows Vista的关机组合快
  8. 如何恢复Windows Vista/XP双启动
  9. 用Vista工具箱手动优化WindowsVi
  10. Vista系列技巧:Vista下输入法的
  11. Vista系列技巧:Vista侧边栏安装
  12. 在Vista的多重启动中设置默认系统
  13. 高效管理时间 用好Vista系统日历
  14. Vista解惑之防火墙10个注意事项
  15. 官方谈Vista OEM盗版激活 承认破
  16. 轻松玩Vista!常用FTP工具兼容测
  1. Winodws下Apache+PHP+MySQL的安装
  2. 20:8!超宽屏Vista截图抢鲜
  3. Vista服务优化攻略
  4. 妙用Windows9x的Desktop.ini文件
  5. Windows Vista:透视未来桌面远景
  6. 不同:Windows Vista的关机组合快
  7. 如何恢复Windows Vista/XP双启动
  8. Vista系列技巧:常遇系统故障解决
  9. Vista系列技巧:Vista侧边栏安装
  10. Vista解惑之防火墙10个注意事项
  11. 官方谈Vista OEM盗版激活 承认破
  12. 仅需三分钟 便可轻松破解Vista登
  13. 浅述单核CPU跑Vista 占用率高的原
  14. Vista Areo界面全攻略
  15. 从1.01到Vista Windows启动画面图
  16. 新手不用慌:Vista官方驱动程序大

最近更新

  • 推荐阅读
  • 经验技巧《Win32编程基础知识》Win32编程基础知识
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM