幻灵镇魂曲22集百度云:vs2010 玩转金山界面库 (1)贮备篇

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 05:52:55
[置顶] vs2010 玩转金山界面库 (1)贮备篇
2011-11-21 16:07 248人阅读 (0)
1:下载金山卫士的源码 :https://bitbucket.org/knoss/pcmanager    (本次所有的源码这里下载:http://download.csdn.net/detail/qq283868910/3824713)
剥离出 如下 结构:

bkres目录结构

bkwin目录结构

tingxml 结构

wtl是wtl的头文件 需要安装 如果没有请到微软下载安装  地址:wtl下载 http://wtl.sourceforge.net/
安装方法:
下载后,在(trunk\)WTL\Wizards\AppWiz子目录中, 可以找到安装脚本。使用wscript.exe(默认路径C:\WINDOWS\system32\wscript.exe)运行setup100.js(Express版运行setup100x.js)。这样就安装好了!  (这个只针对vs2010)
贮备工作基本完成
(ps:那些包含库可以这里下载:点击打开链接)
开始项目:
新建解决方案(如图)

选择如图:


这个时候创建项目会失败是运行不了的,这个应该算bug,不管他,点确定就可以了,看后面 ;
1: 选择项目=====属性=====配置属性=====C/C++===常规=====附加包含目录======找到wtl的包含头文件(我们前面建立了wtl目录 里面就放的wtl头文件,你这里选这里)
见图:

这个时候运行会显示错误,找不到头文件由此见下:
错误 3 error C1083: 无法打开包括文件:“atlapp.h”: No such file or directory e:\visual studio\mvc\ks\ks\stdafx.h 15 1 ks
2:修改stdafx.h中包含头的路径  #include "atlres.h"  改为 wtl的include目录加atlres.h  我的是#include "inc/wtl/atlres.h" 然后运行 (如图)

好了这里所有贮备工作全做完了  后面就对 wtl  进行手术  金山界面库的应用
[置顶] vs2010 玩转金山界面库 (2) 应用基础
2011-11-21 16:16 174人阅读 评论(0) 收藏 举报
上一篇 介绍准备工作 下面讲 对wtl的修改 应用金山界面库
1:修改stdafx.h
修改为如下:
[cpp] view plaincopy',1)">
// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//  are changed infrequently
//
#pragma once
// Change these values to use different versions
#define WINVER      0x0500
#define _WIN32_WINNT    0x0501
#define _WIN32_IE   0x0501
#define _RICHEDIT_VER   0x0200
#include 
#include 
extern CAppModule _Module;
#include 
#include 
#include 
#include 
#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
2:修改MainDlg.h
修改为如下:
[cpp] view plaincopy',2)">
// MainDlg.h : interface of the CMainDlg class
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
class CMainDlg : public CBkDialogImpl
{
public:
CMainDlg() : CBkDialogImpl(IDR_BK_MAIN_DIALOG)
{
}
//////////////////////////////////////////////////////////////////////////
public:
///资源初始化  id 加方法
BK_NOTIFY_MAP(IDC_RICHVIEW_WIN)
BK_NOTIFY_ID_COMMAND(IDC_BTN_SYS_CLOSE, OnBkBtnClose)
BK_NOTIFY_ID_COMMAND(IDC_CHK_CHK1, OnCheck1)
BK_NOTIFY_ID_COMMAND(IDC_CHK_MYCHK, OnMyCheck)
BK_NOTIFY_ID_COMMAND(IDC_BTN_MENU, OnMainMenu)
BK_NOTIFY_ID_COMMAND(IDC_BTN_MAX, OnMaxWindow)
BK_NOTIFY_ID_COMMAND(IDC_BTN_MIN, OnMinWindow)
//BK_NOTIFY_ID_COMMAND(IDS_BTN_BTN1,OnAdd)
BK_NOTIFY_MAP_END()
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_BK_NOTIFY(IDC_RICHVIEW_WIN)
MSG_WM_SYSCOMMAND(OnSysCommand)
CHAIN_MSG_MAP(CBkDialogImpl)
MSG_WM_INITDIALOG(OnInitDialog)
MSG_WM_TIMER(OnTimer)
REFLECT_NOTIFICATIONS_EX()
END_MSG_MAP()
//////////////////////////////////////////////////////////////////////////
//定义方法
public:
void btclick(){
OnMainMenu();
}
void OnBkBtnClose()
{
EndDialog(IDCANCEL);
}
void OnMainMenu()
{
::MessageBox(this->m_hWnd, _T("Main Menu!"), _T("Menu!"), MB_OK);
}
void OnCheck1()
{
//EndDialog(IDCANCEL);
/*::MessageBox(this->m_hWnd, _T("Hello!"), NULL, MB_OK);*/
return;
}
void OnMyCheck()
{
::MessageBox(this->m_hWnd, _T("My CheckBox!"), NULL, MB_OK);
}
LRESULT OnMaxWindow();
LRESULT OnMinWindow();
void    OnSysCommand(UINT nID, CPoint point);
LRESULT OnInitDialog(HWND, LPARAM);
protected:
int                 m_nCurProgress;
};
3:修改MainDlg.cpp
修改为如下:
[cpp] view plaincopy',3)">
// MyApp.cpp : main source file for MyApp.exe
//
#include "stdafx.h"
#include "resource.h"
#include "MainDlg.h"
CAppModule _Module;
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
{
HRESULT hRes = ::CoInitialize(NULL);
// If you are running on NT 4.0 or higher you can use the following call instead to
// make the EXE free threaded. This means that calls come in on a random RPC thread.
//  HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
ATLASSERT(SUCCEEDED(hRes));
// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
::DefWindowProc(NULL, 0, 0, 0L);
AtlInitCommonControls(ICC_BAR_CLASSES); // add flags to support other controls
hRes = _Module.Init(NULL, hInstance);
ATLASSERT(SUCCEEDED(hRes));
BkString::Load(IDR_BK_STRING_DEF);
BkFontPool::SetDefaultFont(BkString::Get(IDS_APP_FONT), -12);
BkSkin::LoadSkins(IDR_BK_SKIN_DEF);
BkStyle::LoadStyles(IDR_BK_STYLE_DEF);
int nRet = 0;
// BLOCK: Run application
{
CMainDlg dlgMain;
nRet = dlgMain.DoModal();
}
_Module.Term();
::CoUninitialize();
return nRet;
}
4:新建两个文件 分别为 bkwinres.h 和bkwinres.rc2
5:在项目中添加一个新建筛选器 命名为import  在里面再新建两个 分别命名为 bkwin和xml
然后选中bkwin 鼠标右击属性 添加现有项导入 bkwin目录的头文件 和tingxml目录的头文件
6:修改xml的4个cpp文件 为不使用预编译头文件 如图:

7:添加附加连接器  (这个文件我将和所有的一起上传或者到微软下载wddk 7.0  有600多m的iso)我将其单独剪切出来;如果是wddk 其目录为 D:\WinDDK\7600.16385.1\lib\ATL\i386  我是D盘;
具体设置 项目属性----连接器-----附加库目录---编辑  如图

8:附加资源的包含目录 这个不说了 照着上面弄
9:拷贝资源文件到 Resource Files(这个没办法 只能到我的源码包里去拷贝)
10:项目属性添加现有项bkwinres.h ;bkwinres.rc2;为新建的两个bkwinres.h ;bkwinres.rc2添加代码
bkwinres.h代码如下:
[cpp] view plaincopy',4)">
#pragma once
///资源定义
#define IDC_BTN_SYS_CLOSE           100
#define IDC_BTN_MAX                 101
#define IDC_BTN_MIN                 102
#define IDC_BTN_MENU                110
#define IDC_CHK_CHK1                4
#define IDC_CHK_MYCHK               18
#define IDS_APP_FONT                1
//#define IDS_BTN_BTN1              133
//#define IDS_JDT_JDT1              811
//#define IDS_JDT_JDT11             812
//#define IDS_TXT_TXT1              301
bkwinres.rc2代码如下:
[cpp] view plaincopy',5)">
//////////////////////////////////////////////////////////////////////////////////////
// XML
DEFINE_XML(IDR_BK_SKIN_DEF,         100, "res\\def_skin.xml")
DEFINE_XML(IDR_BK_STYLE_DEF,        101, "res\\def_style.xml")
DEFINE_XML(IDR_BK_STRING_DEF,       102, "res\\def_string.xml")
DEFINE_XML(IDR_BK_MAIN_DIALOG,      103, "res\\dlg_main.xml")
//////////////////////////////////////////////////////////////////////////
// PNG
DEFINE_PNG(IDP_LITTLE_LOGO,                 201,   "res\\little_logo.png")
DEFINE_PNG(IDP_BIG_LOGO,                    202,   "res\\big_logo.png")
DEFINE_PNG(IDC_BTN_CLOSE,                   100,    "res\\dlg_btn_close.png")
DEFINE_PNG(IDC_BTN_MAX,                     101,    "res\\dlg_btn_max.png")
DEFINE_PNG(IDC_BTN_MIN,                     102,    "res\\dlg_btn_min.png")
DEFINE_PNG(IDC_BTN_NORMAL,                  103,    "res\\dlg_btn_normal.png")
DEFINE_PNG(IDC_BTN_MENU,                    110,    "res\\dlg_btn_menu.png")
//////////////////////////////////////////////////////////////////////////
// BITMAP
DEFINE_BMP(IDB_DLG_HEADER,                  501,    "res\\dlg_header.bmp")
DEFINE_BMP(IDB_DLG_BODY,                    502,    "res\\dlg_body.bmp")
DEFINE_BMP(IDS_JDT_JDT1,                    811,    "res\\progress_bar_bg.bmp")
DEFINE_BMP(IDS_JDT_JDT2,                    812,    "res\\progress_bar_bg.bmp")
到此手术完毕 运行看看
运行看看
我的饿是这个效果

你的了
下一步 我将介绍修改界面内容和控件的应用