明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1631|回复: 2

objectarx 2013 WM_ACAD_KEEPFOCUS无效

[复制链接]
发表于 2014-9-12 16:04:20 | 显示全部楼层 |阅读模式
vs2010,其它的消息映射可以正确映射,调试的时候也能正确中断在函数开头。

这里Myedit.cpp文件


// MyCEdit

IMPLEMENT_DYNAMIC(MyCEdit, CEdit)
MyCEdit::MyCEdit()
{
}

MyCEdit::~MyCEdit()
{
}

BEGIN_MESSAGE_MAP(MyCEdit, CEdit)
        ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
        ON_CONTROL_REFLECT(EN_CHANGE, OnEnChange)
END_MESSAGE_MAP()

void MyCEdit::OnEnChange()
{
        CString str;
        int len;
        GetWindowText(str);
        //len=str.GetLength();
        //len=GetStringLength(str);
        //this->SetWindowPos(NULL,0,0,13*len,20,SWP_NOMOVE);//这句

        CDC* pDC = this->GetDC();
    CSize size = pDC->GetTextExtent(str);
    this->ReleaseDC(pDC);
    CRect rc;
    this->GetWindowRect(&rc);
    ScreenToClient(&rc);
    //rc.right = rc.left + size.cx;
    this->SetWindowPos(NULL,0,0,size.cx+50,20,SWP_NOMOVE);//这句
}


这里MyEdit.h文件


#include "StdAfx.h"
// MyCEdit

class MyCEdit : public CEdit
{
        DECLARE_DYNAMIC(MyCEdit)

public:
        MyCEdit();
        virtual ~MyCEdit();

        LRESULT onAcadKeepFocus(WPARAM wPara,LPARAM lPara)        //(UINT, LONG)
        {
                return TRUE;//在这里按F9设置断点,不能正确中断
        }
       
        int GetStringLength(CString& strTest)
        {
                int iLength = 0;
                for( int i = 0; i < strTest.GetLength(); i ++)
                {
                        int n = (int) strTest.GetAt(i);
                        if( n > 255 )
                        {// 汉字
                                iLength += 2;
                        }
                        else
                        {// 非汉字
                                iLength += 1;
                        }
                }
                return iLength;
        }

protected:
        DECLARE_MESSAGE_MAP()

public:
        afx_msg void OnEnChange();
};


有人说WM_ACAD_KEEPFOCUS应该定义为0x1001,但系统是这样定义的:
#define WM_ACAD_KEEPFOCUS (0x0400+0x6D01)
即0x7101才对
 楼主| 发表于 2014-9-12 16:08:19 | 显示全部楼层
同样的代码在cad2008里可以正常用
发表于 2020-3-2 13:56:16 | 显示全部楼层
xinxirong 发表于 2014-9-12 16:08
同样的代码在cad2008里可以正常用

请问最后是怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 05:24 , Processed in 0.164001 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表