ARX鼠标命令的处理

//函数的声明部分

static BOOL CapsDone = FALSE;   //判断是否注册了该命令
BOOL toCaps(MSG *pMsg);    //获得消息的函数,就是消息处理函数
void regCaps();   //注册命令
void unregCaps();  //注销命令

 

///程序实现

void initApp()
{
 acedRegCmds->addCommand(_T("MKEvents"),_T("caps"),_T("caps"),ACRX_CMD_MODAL,&regCaps);
 return;
}

 

void unloadApp()
{
 acedRegCmds->removeGroup(_T("MKEvents"));
 if(CapsDone==TRUE)
 {
  acedRemoveFilterWinMsg(toCaps);
 }

 //  acedRemoveWatchWinMsg(toCaps); 

 return;
}

//此处获得鼠标在Dwg图纸中的坐标,相当有用,值得珍藏的一段代码

BOOL toCaps(MSG* pMsg)
{
 CString sTemp;
 long ptx=0,pty=0;

 if(pMsg->message == WM_CHAR)
 {
    ptx=LOWORD(pMsg->lParam);
    pty=HIWORD(pMsg->lParam);
    CPoint pt(ptx,pty);
    acedDwgPoint getPts;
    acedCoordFromPixelToWorld(pt,getPts);
    sTemp.Format(_T("/nx=%0.3f,y=%0.3f/n"),getPts[0],getPts[1]);
    acutPrintf(sTemp);
 }

 

 return FALSE;
}

 

void regCaps()
{
 if(CapsDone == TRUE)
  return;
 acedPrompt(_T("/ncapsing.../n"));
 if(acedRegisterFilterWinMsg(toCaps) == FALSE)
// if(acedRegisterWatchWinMsg(toCaps) == FALSE)
 {
  acedPrompt(_T("/ncant/n"));
 }
 else
 {
  CapsDone=TRUE;
 }
 return;

}

 

 

void unregCaps()
{
 if(CapsDone == TRUE)
 {
  acedRemoveFilterWinMsg(toCaps);
//  acedRemoveWatchWinMsg(toCaps);
  CapsDone = FALSE;
 }
 return;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值