上一篇 介绍准备工作 下面讲 对wtl的修改 应用金山界面库
1:修改stdafx.h
修改为如下:
// 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 <atlbase.h>
#include <wtl/atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
#include <wtl/atlframe.h>
#include <wtl/atlctrls.h>
#include <wtl/atldlgs.h>
#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
修改为如下:
// MainDlg.h : interface of the CMainDlg class
//
/
#pragma once
class CMainDlg : public CBkDialogImpl<CMainDlg>
{
public:
CMainDlg() : CBkDialogImpl<CMainDlg>(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<CMainDlg>)
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
修改为如下:
// 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代码如下:
#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代码如下:
//
// 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")
到此手术完毕 运行看看
运行看看
我的饿是这个效果
你的了
下一步 我将介绍修改界面内容和控件的应用 还有半个小时下班了 写下工作日子 88