明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3016|回复: 11

创建可停靠窗体问题

[复制链接]
发表于 2018-7-18 10:42:49 | 显示全部楼层 |阅读模式
3明经币
Win7 64位系统,64位 CAD 2012,程序编译通过,运行时SetWindowText报错,如下图:

附件: 您需要 登录 才可以下载或查看,没有账号?注册
 楼主| 发表于 2018-7-18 10:47:31 | 显示全部楼层
docBar是创建成功的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2018-7-18 18:05:58 来自手机 | 显示全部楼层
应该要show一下,等对话框调用了oninitialdlg才能setwindowtext
回复

使用道具 举报

发表于 2018-7-18 18:49:52 | 显示全部楼层
给你参考一下。。
  1. CAcModuleResourceOverride resOverride;
  2. if (g_pDlgBar == NULL)  {
  3. g_pDlgBar = new CMyDockControlBar();
  4. g_pDlgBar->Create(acedGetAcadFrame(), _T("DockBar"));
  5. g_pDlgBar->SetWindowText(_T("MyControlBar"));
  6. g_pDlgBar->EnableDocking(CBRS_ALIGN_ANY);  
  7. }
  8. acedGetAcadFrame()->FloatControlBar(g_pDlgBar, CPoint(100, 100),  CBRS_ALIGN_TOP);  // 初始位置
  9. acedGetAcadFrame()->ShowControlBar(g_pDlgBar, TRUE, TRUE);
回复

使用道具 举报

 楼主| 发表于 2018-7-19 18:23:21 | 显示全部楼层
我改用VS2008写的代码运行不报错,但是VS2010还是报这个错,VS2008、VS2010应该都可以啊,不知道怎么回事。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2018-7-19 18:24:56 | 显示全部楼层
VS2010我也重装了,还是不行,难道我vs2010安装包有问题?
回复

使用道具 举报

发表于 2018-7-19 18:52:46 | 显示全部楼层
CSofAndy 发表于 2018-7-19 18:24
VS2010我也重装了,还是不行,难道我vs2010安装包有问题?

应该不是,最好将你的MyDockControlBar代码让大家看看。
回复

使用道具 举报

 楼主| 发表于 2018-7-20 09:16:42 | 显示全部楼层
在VS2010工程里,编译的时候选择2008的编译器(V90)可以,选择2010的编译器(V100)就不行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2018-7-20 09:20:36 | 显示全部楼层
//-----------------------------------------------------------------------------
//----- dockBar.h : Declaration of the dockBar
//-----------------------------------------------------------------------------
#pragma once

//-----------------------------------------------------------------------------
#include "acui.h"

//-----------------------------------------------------------------------------
class dockBar : public CAcUiDockControlBar {
        DECLARE_DYNAMIC (dockBar)

public:

public:
        dockBar ();
        virtual ~dockBar ();

        virtual BOOL Create (CWnd *pParent, LPCSTR lpszTitle) ;
        protected:
        virtual void SizeChanged (CRect *lpRect, BOOL bFloating, int flags) ;

        afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct) ;

        DECLARE_MESSAGE_MAP()
} ;


//-----------------------------------------------------------------------------
//----- dockBar.cpp : Implementation of dockBar
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include "dockBar.h"

//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC (dockBar, CAcUiDockControlBar)

BEGIN_MESSAGE_MAP(dockBar, CAcUiDockControlBar)
        ON_WM_CREATE()
END_MESSAGE_MAP()

//-----------------------------------------------------------------------------
//----- dockBar *pInstance = new dockBar;
//----- pInstance->Create (acedGetAcadFrame (), "My title bar") ;
//----- pInstance->EnableDocking (CBRS_ALIGN_ANY) ;
//----- pInstance->RestoreControlBar () ;

//-----------------------------------------------------------------------------
static CLSID clsdockBar = {0xeab78c04, 0x2194, 0x47ad, {0xa4, 0xf2, 0xad, 0xca, 0x3e, 0x3b, 0xb6, 0x3c}} ;


//-----------------------------------------------------------------------------
dockBar::dockBar () : CAcUiDockControlBar() {
}

//-----------------------------------------------------------------------------
dockBar::~dockBar () {
}

//-----------------------------------------------------------------------------
#ifdef _DEBUG
//- Please uncomment the 2 following lines to avoid linker error when compiling
//- in release mode. But make sure to uncomment these lines only once per project
//- if you derive multiple times from CAdUiDockControlBar/CAcUiDockControlBar
//- classes.

//void CAdUiDockControlBar::AssertValid () const {
//}
#endif

//-----------------------------------------------------------------------------
BOOL dockBar::Create(CWnd *pParent, LPCSTR lpszTitle) {
        CString strWndClass ;
        strWndClass =AfxRegisterWndClass (CS_DBLCLKS, LoadCursor (NULL, IDC_ARROW)) ;
        CRect rect (0, 0, 250, 200) ;
        if (!CAcUiDockControlBar::Create(
                        strWndClass,(LPCTSTR)lpszTitle, WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN,
                        rect, pParent, 0
                )
        )
       
                return (FALSE) ;

        SetToolID (&clsdockBar) ;

        // TODO: Add your code here
       
        return (TRUE) ;
}

//-----------------------------------------------------------------------------
//----- This member function is called when an application requests the window be
//----- created by calling the Create or CreateEx member function
int dockBar::OnCreate (LPCREATESTRUCT lpCreateStruct) {
        if ( CAcUiDockControlBar::OnCreate (lpCreateStruct) == -1 )
                return (-1) ;

        return (0) ;
}

//-----------------------------------------------------------------------------
void dockBar::SizeChanged (CRect *lpRect, BOOL bFloating, int flags) {
}


//-----------------------------------------------------------------------------
//----- acrxEntryPoint.cpp
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"

//-----------------------------------------------------------------------------
#define szRDS _RXST("Andy")
dockBar* dockBar1 = NULL;   
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CArxProject11App : public AcRxArxApp {

public:
        CArxProject11App () : AcRxArxApp () {}

        virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
                // TODO: Load dependencies here

                // You *must* call On_kInitAppMsg here
                AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
               
                // TODO: Add your initialization code here

                // Redirect the resource override   
                CAcModuleResourceOverride res;   

                // Check to see if the dock bar is not already up   
                if (dockBar1 == NULL)   
                {   
                        // Create the dock ctrl bar   
                        dockBar1 = new dockBar;   
                        // Now display it   
                        dockBar1->Create(acedGetAcadFrame(),"DockControlBar");   
                        dockBar1->EnableDocking(CBRS_ALIGN_ANY);   
                        dockBar1->SetWindowText(LPCTSTR("Dock Tool"));   
                }   
                if (dockBar1)   
                {   
                        acedGetAcadFrame()->FloatControlBar(dockBar1, CPoint(750, 150), CBRS_ALIGN_RIGHT);    // FloatControBar(...)   
                        //acedGetAcadFrame()->DockControlBar(dockBar, AFX_IDW_DOCKBAR_RIGHT, NULL);          // DockControlBar(...)   
                        acedGetAcadFrame()->ShowControlBar(dockBar1, TRUE, FALSE);   
                }

                return (retCode) ;
        }

        virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
                // TODO: Add your code here

                // You *must* call On_kUnloadAppMsg here
                AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

                // TODO: Unload dependencies here

                return (retCode) ;
        }

        virtual void RegisterServerComponents () {
        }

} ;

//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CArxProject11App)
回复

使用道具 举报

 楼主| 发表于 2018-7-20 09:22:27 | 显示全部楼层
dockBar是通过向导建的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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