SimpleCG创建多个窗口

一、前言

        在之前对SimpleCG的介绍中,我们所有程序都在单个窗口内完成,通常这也是大多数程序的做法。尽管如此,多窗口在某些情形下也是非常需要的,这篇文章我们就来看看如何创建多个窗口并进行相关操作。

二、多窗口创建函数

//创建显示窗口
HWND CreateNewWindow(int nWidth, int nHeight);

        指定需要创建的窗口宽度及高度,即可创建新的窗口,同时返回一个窗口的内部ID,称为窗口句柄。句柄的意思类似把手,通过它即可以控制窗口。

        创建完的窗口是隐藏状态,我们需要显示窗口函数把它显示出来

BOOL ShowWindow( HWND hWnd, int nCmdShow);

例如以下代码创建一个窗口并显示出来。

HWND window=CreateNewWindow(600, 700);
ShowWindow(window, SW_SHOW);

 三、显示内容到指定窗口

//设置当前绘画窗口
HWND setdrawingHWND(HWND hWnd);

通过该函数将指定绘制的目标窗口,所有的绘制函数(例如line、circle等函数)将绘制对象到该窗口。可以在多个窗口间用该函数切换绘制窗口,达到多窗口协作效果。

四、多窗口程序演示

#include "../import/include/SimpleCG.h"
#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif
HWND g_hWnd1 = NULL;
HWND g_hWnd2 = NULL;
LRESULT OnLButtonDown( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	POINT pt;
	pt.x = nX;
	pt.y = nY;
	setdrawingHWND(g_hWnd1);
	setlinecolor(RGB(0,0,255));
	line(nX,nY,nX,nY);

	setdrawingHWND(g_hWnd2);
	setlinecolor(RGB(255,0,0));
	line(nX,nY,nX,nY);
	ReflushWindow();
	return TRUE;
}
LRESULT OnMouseMove( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	POINT pt;
	pt.x = nX;
	pt.y = nY;
	if( wParam & MK_LBUTTON )
	{
		setdrawingHWND(g_hWnd1);
		lineto(nX,nY);
		ReflushWindow();

		setdrawingHWND(g_hWnd2);
		lineto(nX,nY);
		ReflushWindow();
	}
	return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
	SetMouseProcess( enumINMSG_LBUTTONDOWN, OnLButtonDown);
	SetMouseProcess( enumINMSG_MOUSEMOVE,	OnMouseMove);
	
	if( !InitApp(400, 400))
		return 1;

	g_hWnd1 = getdrawingHWND();
	g_hWnd2 = CreateNewWindow(400, 400);

	RunningApp();

	ReleaseApp();
	return 0;
}

程序开个窗口,在一个窗口鼠标绘制同时往两个窗口绘制不同颜色轨迹,

运行效果如图

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b2b160

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值