我需要将两个对话框停放在一个单文档窗口上(一左一右,形与VC6.0界面),但界面放大后就会出现一个空白区(图右部)。
我停靠部分的代码是: /////////////创建控制条///////////////
if (!m_wndMyBar1.Create(_T("我的控制条"), this, CSize(200,260),TRUE,123))
{
TRACE0("Failed to create mybar\n");
return -1;
}
if (!m_wndMyBar2.Create(_T("我的控制条2"), this,CSize(399,100),TRUE,123))
{
TRACE0("Failed to create mybar\n");
return -1;
}
///////////////停靠控制///////////////////
m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC );
m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);
m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_LEFT);我曾先后将红色代码修改为AFX_IDW_DOCKBAR_RIGHT、AFX_IDW_DOCKBAR_LEFT || AFX_IDW_DOCKBAR_RIGHT等都不能改变现状,顶多也只能把空白区移到中间去。希望哪位高手能指点一二,殷切期待。
解决方案 »
- 如何知道字母或字体在哪个号的位图像素?
- 关于\n
- 看看下面个东西是做什么的
- 怎样使对话框窗口坐标系和客户坐标系统一?
- 关于excel读取数据类型的
- 要在网格中显示数据库中某表的部分字段值用哪个控件较好DBGrid、MSFlexGrid?如何使用?
- 如何检测系统被装了键盘钩子?
- 怎么添加多列到datagrid控件中?好象只能使用默认的两列……
- 敬请杭州的朋友回答:杭州哪个地方详细培训Visual C++编程???最好能够相信地分专题来讲??高分送!!!
- 如何找到iis服务中的所有session变量
- 怎样调用dll中的函数
- 如何得到本机所安装的软件列表? 就像控制面版|添加/删除程序中的当前安装的程序一样?
if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar1.SetWindowText("Main tool") ;//略其他创建过程 CRect rc ;
//main toolbar
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar1 ,AFX_IDW_DOCKBAR_TOP); m_wndToolBar1.GetWindowRect( & rc ) ;
rc.OffsetRect( rc.Width()-2 , 0 ) ; //select object toolbar
m_wndToolBar3.EnableDocking(CBRS_ALIGN_ANY); // CBRS_ALIGN_TOP
DockControlBarLeftOf(&m_wndToolBar3,&m_wndToolBar1);
//move window toolbar
m_wndToolBar6.EnableDocking(CBRS_ALIGN_ANY);
DockControlBarLeftOf(&m_wndToolBar6,&m_wndToolBar3);
ShowControlBar(&m_wndToolBar6,TRUE , FALSE ) ;
m_wndToolBarFont.EnableDocking(CBRS_ALIGN_ANY);
DockControlBarLeftOf(&m_wndToolBarFont,&m_wndToolBar6);
ShowControlBar(&m_wndToolBarFont,TRUE,FALSE);
m_wndToolBar4.EnableDocking(CBRS_ALIGN_RIGHT);
DockControlBar(&m_wndToolBar4 ,AFX_IDW_DOCKBAR_RIGHT);
m_wndToolBar7.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_BOTTOM);
DockControlBar(&m_wndToolBar7 ,AFX_IDW_DOCKBAR_BOTTOM);E , FALSE ) ; m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_LEFT);
DockControlBar(&m_wndToolBar2 ,AFX_IDW_DOCKBAR_LEFT);
DockControlBarLeftOf(&m_wndToolBar3,&m_wndToolBar1);
是自定义的吧?
能不能提供改函数代码?
void CCJFrameWnd::DockControlBarLeftOf(CControlBar* Bar, CControlBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;
// get MFC to adjust the dimensions of all docked ToolBars
// so that GetWindowRect will be accurate
RecalcLayout(TRUE);
LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
// When we take the default parameters on rect, DockControlBar will dock
// each Toolbar on a seperate line. By calculating a rectangle, we in effect
// are simulating a Toolbar being dragged to that location and docked.
DockControlBar(Bar,n,&rect);
}
我也安装了这个库(CJ60Lib.lib),但是编译时说"conn't open the 'CJ60Lib.lib'"
使用此库时是否还需要做其它工作
请指教
先将头文件加到工程
#include "..\CJ60 Extension Library\include\CJLib.h"
然后引入Lib文件
提供两种方式:
1 临时调试可用VC的菜单加入。
Project->Add to Project->Files,选择CJ60Lib.lib文件
2 在一CPP文件中如Import.cpp中加入
#pragma comment(lib,"\\CJ60 Extension Library\\lib\\CJ60Libd.lib")
我的操作步骤是:
1 安装库CJ60Lib.lib
2 将Include Lib 拷贝到工程目录下。
3 在 中添加#include "CJ60Lib.h"
4 在在一CPP文件中添加#pragma comment(lib,"CJ60Libd.lib")我也采用你提供的方法(#pragma comment(lib,"\\CJ60 Extension Library\\lib\\CJ60Libd.lib"))
但是编译时说:connot open file "\\CJ60 Extension Library\\lib\\CJ60Libd.lib"我也试过以下三种方式,但还是行不通
一、
在工程设置中( project settings),选择 General 标签页.选"Use MFC in a shared DLL".
在工程设置中( project settings),选择 Link 标签页.将条目选为 Input,加入 ../Lib 到额外的库目录中. 再将条目选为 General, 在输出(Output Name)的所有配置,编译到 ../Lib 路径,这将使可执行文件和动态链接库在同一目录下
选择 c/c++ 标签页. 选择条目Preprocessor,加入 ../Include 到额外的头文件目录中.
在你的StdAfx.h 头文件中,加入:
#include <CJ60Lib.h>
二、
在菜单中选tools-->options,在弹出的对话框中选择directioies标签,将解压缩得到的"lib","include" 的路径分别添加到"library files"和"include files",(以确保工程编译时能找到中的"include "中的头文件和"lib"中的静态链接库。)三、
1.下载扩展库,并编译得到"cj60lib.lib","cj60lib.dll"
2.启动vc6,建立一个新的工程项目, 在菜单栏中选择project-settings
3.在弹出的对话框中选择"general"标签,在"microsoft foundation class"下拉框选择"use mfc in a shared dll"。
4.在弹出的对话框中选择"link"标签,在category下拉框选择"input",在"additional library path"一栏中填入"扩展界面库"(*.lib,*.dll)所在的路径。
在category下拉框选择"output",使你要输出的*.exe和动态链接库(第一步中得到)在同一目录下(该可执行文件执行时需要*.dll).
5.在弹出的对话框中选择"c/c++"标签,在category下拉框选择"preprocessor在"additional include directories"一栏中填入扩展界面库"的头文件(*.h)所在的路径.
6.在新项目的"stdafx.h"文件的近尾部中加入以下两行
#define mfcx_proj
#include"cj60lib.h" 说明:1、第一种方法通敌三种方法一样
2、是不是问题出在这儿:在category下拉框选择"output",使你要输出的*.exe和动态库 (第一 步中得到)在同一目录下(该可执行文件执行时需要*.dll). 请各位帮我看看,再指导指导!
需要先编译一下即将.dll 拷到system32下
谢谢各位参与