📄 0516005.htm
字号:
菜 单 的Settings, 修 改 输 出 文 件
的 扩 展 名 为CPL。 <br>
</li>
<li>从CControlPanel 中 派 生 出 新 的 子
类, 并 重 载 部 分 消 息 代 码。 多
数 情 况 下 只 需 要 重 载 处 理CPL_NEWINQUIRE
和CPL_DBLCLK 消 息 的 函 数 就 行 了,
如 下 所 示: </li>
</ol>
<pre>
#include "ctrlpan.h"
class CNewCPL : public CControlPanel
{
public:
virtual LONG OnInquire(UINT uAppNum, NEWCPLINFO* pInfo);
virtual LONG OnDblClk(HWND hwndCPl, UINT uAppNum, LONG lData);
};
</pre>
<p><font color="#FFFFFF">----</font> 如 果 要 在 一
个CPL 库 中 支 持 多 个 组 件, 那 么 至 少
还 要 重 载OnGetCount() 函 数。 </p>
<ol start="4">
<li>编 写 消 息 处 理 代 码,OnInquire() 函
数 负 责 返 回 组 件 的 各 种 信
息, 可 参 考 基 类 中 该 函 数 的
实 现 代 码,OnDblClk() 函 数 负 责 读
取 和 保 存 各 个 参 数, 并 调 用
对 话 框 让 用 户 选 择。 <br>
</li>
<li>设 计 对 话 框, 用ClassWizard 生 成 对
话 框 的 处 理 代 码, 并 修 改 这
些 代 码 使 之 符 合 要 求。 <br>
</li>
<li>源 代 码 编 写 完 毕 后, 编 译 连
接, 把 生 成 的CPL 文 件 拷 则 到SYSTEM
目 录 下, 运 行 控 制 面 板 进 行
调 试。 <br>
</li>
<li>调 试 正 确 后, 重 新 建 立CPL 库 的Release
版。 </li>
</ol>
<pre>
// CtrlPan.h: 类CControlPanel 的 声 明
#ifndef _CTRLPAN_H_
#define _CTRLPAN_H_
#include <cpl.h> //VC 提 供 的 头 文 件
class CControlPanel
{
public:
CControlPanel();
virtual ~CControlPanel();
// 可 重 载 的 消 息 处 理 函 数
virtual LONG OnDblClk(HWND hwndCPl, UINT uAppNum, LONG lData);
virtual LONG OnExit();
virtual LONG OnGetCount();
virtual LONG OnInit();
virtual LONG OnInquire(UINT uAppNum, NEWCPLINFO* pInfo);
virtual LONG OnSelect(UINT uAppNum, LONG lData);
virtual LONG OnStop(UINT uAppNum, LONG lData);
virtual LONG OnExit();
// CPL 库 的 输 出 函 数
static LONG APIENTRY CPlApplet(HWND hwndCPl, UINT uMsg,
LONG lParam1, LONG lParam2);
static CControlPanel* m_pThis;
};
#endif // _CTRLPAN_H_
// CtrlPan.cpp, 定 义 了 类CControlPanel 的 缺 省 处 理 函 数
#include "stdafx.h"
#include "ctrlpan.h"
CControlPanel* CControlPanel::m_pThis = NULL;
CControlPanel::CControlPanel()
{ m_pThis = this; }
CControlPanel::~CControlPanel()
{ }
// CPL 库 的 输 出 函 数
LONG APIENTRY CControlPanel::CPlApplet(HWND hwndCPl, UINT uMsg,
LONG lParam1, LONG lParam2)
{
CControlPanel* pCtrl = m_pThis;
ASSERT(pCtrl); // 检 查pCtrl 的 有 效 性
switch (uMsg) {
case CPL_DBLCLK:
return pCtrl->OnDblClk(hwndCPl, lParam1, lParam2);
case CPL_EXIT:
return pCtrl->OnExit();
case CPL_GETCOUNT:
return pCtrl->OnGetCount();
case CPL_INIT:
return pCtrl->OnInit();
case CPL_NEWINQUIRE:
return pCtrl->OnInquire(lParam1, (NEWCPLINFO*)lParam2);
case CPL_INQUIRE:
return 0; // 基 于WIN32 的CPL 库 不 处 理 这 条 消 息
case CPL_SELECT:
return pCtrl->OnSelect(lParam1, lParam2);
case CPL_STOP:
return pCtrl->OnStop(lParam1, lParam2);
case CPL_EXIT:
retrun pCtrl->OnExit();
default: break;
}
return 1;
}
// 缺 省 的 消 息 处 理 函 数
LONG CControlPanel::OnDblClk(HWND hwndCPl, UINT uAppNum, LONG lData)
{ return 0; }
LONG CControlPanel::OnExit()
{ return 0; }
LONG CControlPanel::OnGetCount()
{ return 1; } // 缺 省 为 一 个 组 件
LONG CControlPanel::OnInit()
{ return 1; }
LONG CControlPanel::OnInquire(UINT uAppNum, NEWCPLINFO* pInfo)
{
// 填 充NEWCPLINFO 结 构, 结 构 的 定 义 请 参 考VC 的 联 机 帮 助
pInfo->dwSize = sizeof(NEWCPLINFO);
pInfo->dwFlags = 0;
pInfo->dwHelpContext = 0;
pInfo->lData = 0;
pInfo->hIcon = ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(1));
strcpy(pInfo->szName, "Applet");
strcpy(pInfo->szInfo, "Default Control Panel Applet");
strcpy(pInfo->szHelpFile, "");
return 0;
}
LONG CControlPanel::OnSelect(UINT uAppNum, LONG lData)
{ return 1; }
LONG CControlPanel::OnStop(UINT uAppNum, LONG lData)
{ return 1; }
LONG CControlPanel::OnExit()
{ return 1; }</pre>
</td>
</tr>
<tr>
<td width="100%" height="12" class="font" colspan="2">
</td>
</tr>
<tr>
<td width="100%" height="6" class="font" colspan="2">
</td>
</tr>
<tr>
<td width="100%" height="8" class="font" colspan="2">
</td>
</tr>
<tr>
<td width="100%" height="17" class="font" colspan="2"></td>
</tr>
</table>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -