龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC6.0实现逆向操作并防止界面闪烁(5)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
三、简单开发实例 下面以我们开发服装CAD过程中加入的回退重做功能(文档逆向化)说明之。 1.定义回退类型 #define REUNDO_MOV 0x0001 file://衣片移动回退重做

  三、简单开发实例

  下面以我们开发服装CAD过程中加入的回退重做功能(文档逆向化)说明之。

  1.定义回退类型

#define REUNDO_MOV 0x0001  file://衣片移动回退重做

#define REUNDO_SEL 0x0002  file://衣片选择回退重做

……….
 

  2.保存某个操作之前和之后的数据(以衣片移动回退重做为例)

//----------申请内存----------------------//

int nByte = 4*sizeof(DWORD);

HGLOBAL hMem = GlobalAlloc(GMEM_FIXED,nByte);

LPVOID pData = (LPVOID) GlobalLock(hMem);

file://-----保存衣片移动前后的位置读入内存------//用移动前后衣片的某个坐标点表示

memcpy((DWORD*)pData, &m_oldPoint, 2*sizeof(DWORD));

memcpy((DWORD*)pData+2,&point, 2*sizeof(DWORD));

file://--------数据入栈---------------------------------------//

m_pReUndoEngine->PushData(pData,//衣片m_pReUndoEngine文档逆向化引擎对象指针

nByte,//保存数据衣片字节数

REUNDO_MOV,//回退类型

NULL,NULL);
 

  3.当回退操作事件触发时.

//弹出回退值

int nByte = m_pReUndoEngine->GetPopDataSize();

HGLOBAL hMem = GlobalAlloc(GMEM_FIXED,nByte);//申请内存

LPVOID pData = (LPVOID) GlobalLock(hMem);

精彩图集

赞助商链接