win32 编程 第一步:编译器 & HelloWorld

win32 编程 即:windows 编程

 

 

 

 

1. 编译器搭建

 

因为第一次进入win32 编程 无论代码还是环境搭建 肯定会有一些问题 考虑到通用性 所以决定最好使用open source 这样即使出现问题 也可以向google求助 最后决定使用MinGW 即:

Minimalist GNU for Windows

 

但是 在尝试几天后 放弃  继续寻找别的编译工具 最后发现这个:lcc-win32  也是免费的哦 而且无论安装/使用 都比较傻瓜

 

lcc-win32 compile 下载链接:http://www.cs.virginia.edu/~lcc-win32/

 

 

2. 首个测试代码:HelloWorld, win32

 

 

 * source code: hello.c

 

#include <windows.h>
#include <stdio.h>

//声明回调函数
LRESULT CALLBACK WinSunProc(HWND hwnd,
							UINT uMsg,
							WPARAM wParam,
							LPARAM lParam
);

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   WNDCLASS wndcls;

   //设计窗口类
   wndcls.cbClsExtra = 0;
   wndcls.cbWndExtra = 0;
   wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
   wndcls.hCursor = LoadCursor(NULL,IDC_CROSS);
   wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);
   wndcls.hInstance = hInstance;
   wndcls.lpfnWndProc = WinSunProc;
   wndcls.lpszClassName = "2009";
   wndcls.lpszMenuName = NULL;
   wndcls.style = CS_HREDRAW | CS_VREDRAW;

   //注册窗口类
   RegisterClass(&wndcls);

   //创建窗口
   HWND hwnd;
   hwnd = CreateWindow("2009","HelloWorld,win32",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);

   //显示窗口
   ShowWindow(hwnd, SW_SHOWNORMAL);
   UpdateWindow(hwnd);

   //消息循环
   MSG msg;
   while(GetMessage(&msg,NULL,0,0))
   {
       TranslateMessage(&msg);
	   DispatchMessage(&msg);
   }
   return 0;
}

LRESULT CALLBACK WinSunProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch(uMsg)
   {
   case WM_CHAR:
	    char szChar[20];
	    sprintf(szChar,"Char is %d", wParam);
        MessageBox(hwnd,szChar,"中国北京",MB_OK);
	    break;
   case WM_LBUTTONDOWN:
	    MessageBox(hwnd,"Mouse Click","to click w/ Mouse",MB_OK);
		HDC hdc;
		hdc = GetDC(hwnd);
		TextOut(hdc,0,50,"Win32 application",strlen("Win32 application"));
		ReleaseDC(hwnd,hdc);
	    break;
   case WM_PAINT:
	    HDC hDc;
		PAINTSTRUCT ps;
		hDc = BeginPaint(hwnd,&ps);
		TextOut(hDc,0,0,"china",strlen("china"));
		EndPaint(hwnd,&ps);
	    break;
   case WM_CLOSE:
	    if (IDYES == MessageBox(hwnd,"to close this app","app instance",MB_YESNO))
	    {
			DestroyWindow(hwnd);
	    }
	    break;
   case WM_DESTROY:
	    PostQuitMessage(0);
	    break;
   default:
	    return DefWindowProc(hwnd,uMsg,wParam,lParam);
   }

   return 0;
}

 

 

* 用llc-win32 运行效果:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值