设为首页 加入收藏

TOP

用C写最简单的Windows窗口程序:WINAPIHelloWorld
2014-11-23 21:26:52 】 浏览:8509
Tags:简单 Windows 窗口 程序 :WINAPIHelloWorld

  代码非常简单:


  1 #include


  2 #include


  3


  4


  5


  6 int WINAPI _tWinMain(HINSTANCE hInstance,


  7 HINSTANCE hPrevInstance,


  8 LPTSTR lpCmdLine,


  9 int nCmdShow)


  10


  11 {


  12


  13 MessageBox(NULL, _T("Goodbye, cruel world!"), _T("Note"), MB_OK);


  14


  15 return 0;


  16


  17 }


  tchar.h涉及了一个windows下的编码的问题,使用tchar而不是char或者wchar可以在编译时通过是否定义_UNICODE标记控制程序的编码是采用MBCS编码、ANSI编码还是采用Unicode编码。


  再看WinMain函数,该函数相当于普通C程序中的main函数,也是所有Windows程序的入口点。


  WINAPI是一个宏定义,替换后就是__stdcall。该声明指定了函数的调用方式为pascal程序的缺省调用方式。C/C++默认是采用__cdecl的。


  WinMain在MSDN文档中有详细的说明。


  HINSTANCE是句柄的意思,表示该变量是由操作系统管理(分配、销毁)的,用户只能持有该变量的句柄,通过系统调用操作该变量。


  hInstance是该窗口程序的句柄。


  hPrevInstance永远都是NULL。


  LPTSTR是tchar *的宏定义。


  lpCmdLine是一个字符串数组,里面的内容是启动程序的完整命令行(不包括程序名,有点像原来main函数中的argv不包括argv[0])。


  nCmdShow指示这个程序的显示方式。


  MessageBox函数启动一个弹出式窗口,标题是Note,内容是Goodbye, cruel world!,只有一个OK按钮。


  下面说一下这个程序的编译。


  如果是用的Visual Studio的话,建立一个Win32项目,选中空项目,然后添加一个源代码,把上面的代码粘贴进去就行了。


  如果使用cl手动编译的话,可以使用以下命令:cl.exe hello.c /lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib


  如果在linux下使用mingw交叉编译的话,可以使用以下命令:i586-mingw32msvc-gcc hello.c -mwindows


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇慎用CMFCToolBar::CreateEx 下一篇高质量程序设计指南:strcpy的实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目