用C写最简单的Windows窗口程序——WINAPI HelloWorld

代码非常简单:

 1  #include  < windows.h >
 2  #include  < tchar.h >
 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  }

要使用WinAPI的话,肯定是要引入windows.h的。

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

转载于:https://www.cnblogs.com/HCOONa/archive/2009/12/23/1630791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值