窗口程序你的第一个Windows程序窗口程序

时间紧张,先记一笔,后续优化与完善。

    MSDN线在原文(英文)

    

你的第一个Windows程序

    在这个模块,我们编写一个最小的Windows程序。它的作用是创立并示显一个空白窗口。这第一个程序含包大约50行代码,不盘算空白行和注释。这将是我们的出发点;当前还会添加图形,文本,用户输入和其它功能。

 

    示例程序屏幕截图

    上面是完全的程序代码:

#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam);

int wWinMain(HINSTANCE hInstance,HINSTANCE,PWSTR pCmdLine,int nCmdShow)
{
	//册注窗口类
	const wchar_t CLASS_NAME[]=L"Sample Window Class";

	WNDCLASS wc = {};
	
	wc.lpfnWndProc		=WindowProc;
	wc.hInstance		=hInstance;
	wc.lpszClassName	=CLASS_NAME;

	RegisterClass(&wc);

	//创立窗口
	HWND hwnd = CreateWindowEx(
		0,								//可选窗口式样
		CLASS_NAME,						//窗口类
		L"Learn to Program Windows",	//窗口文本
		WS_OVERLAPPEDWINDOW,			//窗口式样
		//窗口大小和定位
		CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
		NULL,							//父窗口
		NULL,							//菜单
		hInstance,						//例实柄句
		NULL							//其它应用程序的据数
		);
	
	if(hwnd == NULL)
	{
		return 0;
	}
	ShowWindow(hwnd,nCmdShow);

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

}

LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
		
	case WM_PAINT:
		PAINTSTRUCT ps;
		HDC hdc = BeginPaint(hwnd,&ps);
		FillRect(hdc,&ps.rcPaint,(HBRUSH)(COLOR_WINDOW+1));
		EndPaint(hwnd,&ps);
		return 0;
	}
	return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
    每日一道理
冰心说道:“爱在左,同情在右,走在生命的两旁,随时撒种,随时开花,将这一径长途,点缀得香花弥漫,使穿枝拂叶的行人,踏着荆棘,不觉得痛苦,有泪可落,却不是悲凉。”

    
你可以从Windows Hello World Sample下载完全的Visual Studio项目。

    它会给出一个有助帮的要简概述,说明这段代码是做什么的。随后的题主将细详的析分代码。

    

  1. wWinMain是程序的口入点,当程序动启,他册注应用程序窗口某些行为的信息。其中最主要的信息是一个数函的址地,在这个例子中是WindowProc,这个数函定义窗口的行为——它的表面,如何与用户交互等等。
  2.  下一步,程序创立窗口和接收这个窗口一唯标识的柄句。
  3. 如果这个窗口顺遂地创立,程序进入while循环,程序持保循环,直到程序关闭窗口并出退应用程序。

    请注意程序没有式显地调用WindowProc数函,尽管我们说这是大多数应用程序逻辑的定义。Windows通过一系列的息消与程序信通,While循环内的代码驱动进程。每次程序调用 DispatchMessage 数函,个每息消接间的使Windows调用WindowProc数函。

    细详的代码析分后续......

文章结束给大家分享下程序员的一些笑话语录: IBM和波音777
  波音777是有史以来第一架完全在电脑虚拟现实中设计制造的飞机,所用的设备完全由IBM公司所提供。试飞前,波音公司的总裁非常热情的邀请IBM的技术主管去参加试飞,可那位主管却说道:“啊,非常荣幸,可惜那天是我妻子的生日,So..”..
  波音公司的总载一听就生气了:“胆小鬼,我还没告诉你试飞的日期呢!”

posted @ 2013-04-21 01:00  坚固66  阅读(208)  评论(0编辑  收藏  举报