本文目录一览:
- 1、VB美化窗体问题。
- 2、P2P终结者 不能使用问题!请高手帮忙!
- 3、在弄VB界面皮肤时出现的实时错误424
- 4、vb怎么加载皮肤
- 5、如何学习codejock toolkitpro
- 6、VB如何去掉每行的两边空格部分?
VB美化窗体问题。
Dlg.FileName ?
Dlg是什么东西。既然你定义了Filename。为何还要加个dlg。
删掉“Dlg.”即可。
P2P终结者 不能使用问题!请高手帮忙!
你换个版本试试,你可以找找一个版本叫做p2p终结者官方免费版,如果找不到可以到google上搜,关于这个它上面提供的内容比较多些。如果还装不上请重装系统后装,因为p2p可能会与相关的系统注册表相关联。
还有记得叫局域网内那台没装杀软的把杀软装上,因为局域网的病毒是可以互相传播的。
在弄VB界面皮肤时出现的实时错误424
你把Office2007.cjstyles这个文件放到根目录下。
我怀疑
1是中文名称问题
2是目录里有空格
vb怎么加载皮肤
转载此出处
说到换肤,我们脑子当中可能就会浮现很多商业软件那些漂亮的皮肤,自从XP流行以来,程序的外观变得比以往更加引人注意,像Office 系列的界面,一直是很多程序员模仿的范例,今天我就利用Xtreme Suite Pro ActiveX 轻松的给自己程序加上皮肤应用功能,为我们自己的程序增色。
目标:制作一个具有换肤功能的程序,程序界面模仿Office 2007样式
一、准备工作
1、开发工具VB6,当然也可以用.Net,这里以VB6做示例
2、Xtreme Suite Pro ActiveX 12英文正式版
下载地址为:
Part1:
Part2:
二、工具安装
1、VB6的安装不多说
2、将上述下载地址的两个文件下载后放在同一个目录下,然后解压Part1,解压完成后,可以看到一个setup.exe文件,按提示安装,其中Sn在对应的文本中,注意我们选用的Sn为Xtreme Suite Pro ActiveX v12.0.1 英文正式版的,Xtreme Toolkit Pro v12.0.1是针对MFC的,不要输入错误。
现在假设Xtreme Suite Pro ActiveX 按照默认方式已安装成功,那边我们可以进入到下一步了。
三、正式开始
1、新建一个VB6的EXE工程
2、在工具栏上点击右键找到部件,因为Xtreme Suite Pro ActiveX 已安装成功,所以我们可以看到部件引用中有如下内容
(图1)
勾中xtreme SkinFramework ActiveX Control 12.0.1,此时我们的界面当中应该可以看到类似下面的图片
(图2)
到这里,我们的准备工作已完全准备妥当,下面是关键的代码,我们将其放在Form_Load事件中
Private Sub Form_Load()
Dim FileName as string
Dim IniFile as string
FileName ="C:/Program Files/Codejock Software/ActiveX/Xtreme SuitePro ActiveX v12.0.1/Samples/SkinFramework/Styles/Office2007.cjstyles"
IniFile="NormalBlue.ini"
SkinFramework1.LoadSkin Dlg.FileName, IniFile
SkinFramework1.ApplyWindow Me.hWnd
SkinFramework1.ApplyOptions = SkinFramework1.ApplyOptions Or xtpSkinApplyMetrics
End Sub
这里我们利用SkinFramework的LoadSkin方法找到指定的皮肤文件,然后再调用ApplyWindow方法,并且设置了ApplyOptions 属性,注意这里的设置其实就是SkinFramework的默认值。
按F5运行工程,出现在我们眼前的界面将是下面这个样子了
(图3)
简单的引用,简单的代码,出现在我们面前的却已经是如此漂亮的界面,到这里我们已大告功成了。
四、扩展
Xtreme Suite Pro ActiveX 的SkinFramework 不但支持以cjstyles为扩展的皮肤文件,同时也支持XP的themes文件,即以msstyles为扩展名的文件,知道了这点我们的皮肤来源就非常广了。
下面为大家推荐一个地方,里面有很多免费的皮肤
安装完Xtreme Suite Pro ActiveX ,官方即包含Office2007.cjstyles,Vista.cjstyles,WinXP.Luna.cjstyles,WinXP.Royale.cjstyles四个皮肤文件,同一个皮肤文件中可能包含几个配置文件,比如Office2007.cjstyles就包含NormalBlue.ini 、NormalAqua.ini 、NormalSilver.ini 、NormalBlack.ini 四个配置文件,可以放在LoadSkin方法的第二个参数中,就可以显示不同配置文件所达到的不同皮肤的效果。
为了读取皮肤文件所包含的配置文件,我们可以用下面的方法
Dim Discription As SkinDescription
Dim i As Integer
Dim FileName as string
FileName ="C:/Program Files/Codejock Software/ActiveX/Xtreme SuitePro ActiveX v12.0.1/Samples/SkinFramework/Styles/Office2007.cjstyles"
Set Discription = SkinFramework1.EnumerateSkinFile(FileName )
For i = 0 To Discription.Count - 1
debug.print "IniFile:" Discription.IniFile(i).IniFileName "/ColorScheme:" Discription.IniFile(i).ColorScheme _
"/FontSize:" Discription.IniFile(i).FontSize
Next
写到这里,我们才真正搞定了皮肤的开发,为了大家的使用方便,我特意写了一个示例程序
下载地址为:
另外这里包含了几个皮肤文件:
有兴趣的可以参考一下
如何学习codejock toolkitpro
1,确定你已经装好了XTP。
2,修改目录:工具/选项/目录
1
include files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Source
2
librarys files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Libvc60
3,工程/设置/C++ 在工程选项里面添加:/Zm200 注意大小写。
4,在stdAfx.h里面添加:#include XTToolkitPro.h
5,在Dialog.h文件中,Dialog定义的地方改为:
1
#define CDialogSampleDlgBase CXTPDialogBaseCXTResizeDialog
2
class CCardManageDlg : public CDialogSampleDlgBase{
3
public:
4
。。。
5
}
6,在Dialog构造函数实现的地方改为:
1
CCardManageDlg::CCardManageDlg(CWnd* pParent /*=NULL*/)
2
: CDialogSampleDlgBase(CCardManageDlg::IDD, pParent)
3
{。。。
4
}
7,dialog构造函数实现内,预先配置:
1
XTPSkinManager()-SetApplyOptions(XTPSkinManager()-GetApplyOptions() | xtpSkinApplyMetrics);//这句必须有,
2
XTPSkinManager()-LoadSkin(_T("Office2007.cjstyles"));//这句是设置一种风格,Office2007.cjstyles是风格文件名,要拷贝过来。
8,增加变量:
1
BOOL m_bInRepositionControls, m_bInitDone;
2
CRect m_rcBorders;
用于第9,10步中,重新设置组件位置和大小。
9,在initdialog里面添加:
1
VERIFY(InitCommandBars());//XTP带,预处理,不可少。
CXTPCommandBars* pCommandBars = GetCommandBars();//CXTPCommandBars管理TOOLBAR,Menu和status.
/***开始添加菜单***/
01
pCommandBars-SetMenu(_T("Menu Bar"), IDR_MENU1);
02
CXTPToolBar* pToolBar = pCommandBars-Add(_T("Standard"), xtpBarTop);
03
pToolBar-LoadToolBar(IDR_MAINFRAME);
04
05
06
XTPImageManager()-SetIcons(IDR_MAINFRAME);//图标
07
08
09
pCommandBars-GetCommandBarsOptions()-ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);//额外的。
10
pCommandBars-GetToolTipContext()-SetStyle(xtpToolTipOffice);//额外的。
11
// pCommandBars-GetShortcutManager()-SetAccelerators(IDR_ACCELERATOR);//快捷键
12
13
14
LoadCommandBars(_T("CommandBars"));//XTP必须
/****下面是为解决MENU和TOOLBAR引起的错位,通过迭代对所有子组件重拍******/
01
CWnd* pwndChild = GetWindow(GW_CHILD);
02
while (pwndChild)
03
{
04
SetResize(pwndChild-GetDlgCtrlID(), SZ_TOP_LEFT, CXTResizePoint( 0, 0) );
05
//0,0表示水平和竖直方向都不缩放。
06
pwndChild = pwndChild-GetNextWindow();
07
}
08
09
10
m_bInitDone = TRUE;
11
RepositionControls();//重设组件位置和大小,实现见10.
12
13
14
m_szMin = m_szWindow;
15
AutoLoadPlacement(_T("Placement"));
10,实现RepositionControls();//重设组件位置和大小,无需看,直接复制。
01
void CCardManageDlg::RepositionControls()
02
{
03
if (m_bInRepositionControls || !m_bInitDone)
04
return;
05
06
07
CRect rcClientStart;
08
CRect rcClientNow;
09
GetClientRect(rcClientStart);
10
11
12
if ((GetStyle() WS_MINIMIZE) || (rcClientStart.IsRectEmpty()))
13
return;
14
15
16
m_bInRepositionControls = TRUE;
17
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);
18
CRect rcBorders(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top, rcClientStart.right - rcClientNow.right, rcClientStart.bottom - rcClientNow.bottom);
19
20
21
if (rcBorders != m_rcBorders)
22
{
23
CPoint ptOffset(rcBorders.left - m_rcBorders.left, rcBorders.top - m_rcBorders.top);
24
CSize szOffset(rcBorders.left + rcBorders.right - m_rcBorders.left - m_rcBorders.right,
25
rcBorders.top + rcBorders.bottom - m_rcBorders.top - m_rcBorders.bottom);
26
27
CRect rcWindow;
28
GetWindowRect(rcWindow);
29
rcWindow.BottomRight() += szOffset;
30
31
Offset(ptOffset);
32
m_szWindow += szOffset;
33
m_szMin += szOffset;
34
35
MoveWindow(rcWindow, TRUE);
36
}
37
38
39
m_rcBorders = rcBorders;
40
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
41
m_bInRepositionControls = FALSE;
42
}
11,添加状态栏的方法:
状态栏变量:CXTPStatusBar m_wndStatusBar;
在ONinitdialog里面加:
1
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
2
{
3
TRACE0("Failed to create status barn");
4
return -1; // fail to create
5
}
6
7
8
m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100);
在合适的地方调用m_wndStatusBar.SetWindowText(lpsz);即可设置显示文本
/***下面这句有时间看看**/
1
LRESULT CDialogSampleDlg::OnKickIdle(WPARAM, LPARAM)
2
{
3
if (GetCommandBars())
4
GetCommandBars()-UpdateCommandBars();
5
if (m_wndStatusBar.GetSafeHwnd())
6
m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);
7
return 0;
8
}
最小使用方法:
1. 在stdafx.h文件中加入:
1
#include XTToolkitPro.h
2. 在对话框构造函数中加入:
1
XTPSkinManager()-LoadSkin(_T("Office2007.cjstyles"));
3. 动态创建的控件或者是没有自动使用皮肤的控件使用下面语句强制使用皮肤
1
XTPSkinManager()-ApplyWindow(myCtrl-m_hWnd);
VB如何去掉每行的两边空格部分?
Trim函数会返回出去空格后的结果,你的代码只是调用了这个函数,sStr并没有改变,应该是sstr=trim(sstr),另外sStr好像trim之后没用吧? zl_Click改后结果如下:
Private Sub zl_Click()
Dim lLine%
If Trim(xx.Text) = "" Then
Cls
Print "无内容"
Else
lLine = SendMessage(xx.hWnd, EM_GETLINECOUNT, 0, 0)
Dim sStr As String
Dim a As Integer
a = "0"
For a = 0 To (lLine - 1)
GetOneTextBoxLine xx.hWnd, a, sStr
sStr = Trim(sStr)
Next
Cls
Print "共" lLine "个行"
End If
End Sub
想让vb界面更漂亮些,可以用外部美化控件:SkinFramework.ocx,网上很多种它的主题可以下载(cjstyles文件),使用也很简单,如下面代码放到启动窗体的Form_Initialize中,则在启动窗体之后的窗体都会以这种主题显示:
FileName = App.Path "\Vista.cjstyles"
With SkinFramework1
.LoadSkin FileName, ""
.AutoApplyNewWindows = True
.AutoApplyNewThreads = True
.ApplyWindow Me.hwnd
.ApplyOptions = .ApplyOptions Or xtpSkinApplyMetrics Or _
xtpSkinApplyFrame Or _
xtpSkinApplyColors
End With