(连载)一步一步教你做黑白棋游戏(四)

原创 2012年03月26日 20:29:12

本篇要讲的是windows编程里面的灵魂,消息响应处理。windows中各种事物或者外部输入等等这些东西的数据传输都是通过消息响应的机制实现的,那么现在我们将会为我们的黑白棋游戏添加鼠标响应处理,从鼠标点击窗口的消息中获取我们需要的坐标信息。


下面看看我们需要看的代码:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;
	int x=0;
	int y=0;
	switch (message)
	{
	case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
	case WM_LBUTTONDOWN:   
            x=LOWORD(lParam);   
            y=HIWORD(lParam);
		g_OthelloMain.OnClick(x,y);//调用主类的鼠标单击响应函数
		break;

可以对比自己的源码看到添加了一个case WM_LBUTTONDOWN这一列。

了解过windows消息响应机制的基础的应该清楚,每一个case对应的是Message的一个消息。这个消息是用宏定义的,方便大家使用,这里的WM_LBUTTONDOWN就是响应鼠标左键按下的宏,响应的有响应右键,响应键盘等等,这些宏大家可以去查一下手册或者百度都很容易找到自己想要的。上诉代码会在鼠标左键按下的时候运行那一列case所对于的语句,所以我们在下面写下需要进行的各种功能。

那么我们如何知道鼠标按下的坐标呢?孙鑫老师第一课视频讲过

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

这个函数,其中wParam和lParam都是参数,用于传递消息自己所具有的各种数据,在这里我们需要获取的是鼠标按下的坐标,那么这个数据存在lParam中。取低位位lParam是鼠标按下对应的横坐标,高位对应的是纵坐标,注意原点是窗口客户区左上角的顶点。

那么我们给主类创建一个响应鼠标按下操作的函数:

void OnClick(int x, int y);
我们需要把这个响应传递给逻辑类进行处理,那么对于逻辑类也添加一个函数:

int COthelloLogic::PlayChess(int x, int y)
在主类中调用逻辑类的这个函数进行坐标传递,所以这个函数就要处理坐标变换而且要处理上一篇遗留的问题:

int COthelloLogic::PlayChess(int x, int y)
{
	Pos_X = x/60;         //根据鼠标的坐标得出点击的是那个棋子的位置
	Pos_Y = y/60;
        if((Color[Pos_X][Pos_Y] == 1) || (Color[Pos_X][Pos_Y] == 2))
	{
		return 3;//返回一个错误3,即这个位置有棋子
	}
	if(Color[Pos_X][Pos_Y] == 0)
	{
		int message = Judgement( Pos_X, Pos_Y);
		return message; //返回一个执行了Judgement函数的返回值1为落子正确,2为落子无解
	}
	return 0;
}

这样我们的程序的逻辑处理也就几乎完备了。

这一篇内容较少,专注讲这个消息响应,那么下一篇我们将把逻辑和视图联系起来。

敬请期待~



一步一步教你做LIS接口教程(四)

前面说了那么多的ASTM的协议规范的东西,有人会讲,你说那么多有个毛用,即便是我了解了那些框架,我也不知道怎么转化为代码啊,但是如果你不了解这些框架,那么你连转化为框架的机会都没有。 以前总是纠...
  • lazarus_net
  • lazarus_net
  • 2015年08月02日 18:54
  • 1541

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • sbvfhp
  • sbvfhp
  • 2013年09月03日 17:46
  • 999

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • smking
  • smking
  • 2014年05月21日 12:12
  • 635

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • love_monkey
  • love_monkey
  • 2014年01月17日 14:40
  • 827

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • sky837
  • sky837
  • 2014年04月16日 10:57
  • 958

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • u012980997
  • u012980997
  • 2014年01月11日 16:59
  • 1043

一步一步教你做ios推送

http://blog.csdn.net/showhilllee/article/details/8631734#comments  最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放...
  • u011303663
  • u011303663
  • 2015年12月29日 15:22
  • 321

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • aabbcc456aa
  • aabbcc456aa
  • 2015年07月03日 16:13
  • 342

一步一步教你做ios推送

【原文地址:http://blog.csdn.net/showhilllee/article/details/8631734#0-tsina-1-74431-397232819ff9a47a7b7e8...
  • hi_hexiaolu
  • hi_hexiaolu
  • 2015年05月11日 12:21
  • 248

一步一步教你做ios推送

最近在研究ios的推送问题,遇到了一些问题,最终整理了一下。放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释。如下图   ...
  • zixiweimi
  • zixiweimi
  • 2014年09月01日 15:32
  • 285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(连载)一步一步教你做黑白棋游戏(四)
举报原因:
原因补充:

(最多只允许输入30个字)