本文目錄一覽:
- 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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/276661.html