Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466414
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:08:33

vista:好文,期待您的继续!
(发表于2005-10-8 13:31:00)

fab_lyd:需要你这样的人。
(发表于2005-10-8 17:08:00)

tong_zhi:问个问题,
在实现继承的接口函数的时候函数的框架必须手工输入吗?
(发表于2005-10-11 22:05:00)

kimjin:大家风范,引领先锋!谢谢杨老师的无私奉献!
(发表于2005-12-14 11:34:00)

AmosShi:杨老师要戒骄戒躁,更上一层楼。
(发表于2005-12-28 15:55:00)

lljwq:你这回复我怎么每次看了都想笑
感谢杨老师
这一系列文章让我学了不少东西
(发表于2006-3-26 10:10:00)

nofate:tong_zhi:问个问题,
在实现继承的接口函数的时候函数的框架必须手工输入吗?

=======================

不需要,你可以直接就在你的接口里实现它.框架也不用手动搭,只需要添加相应的函数就够了.
(发表于2006-3-26 11:19:00)

zhangtoney:写得真好,谢谢杨老师!现在是06年8月了,还有17章以后的吗,或者是我没找到呢,如有,请给个链接
(发表于2006-8-24 17:45:00)

epubcn:使用IPersistFile处理的关键代码如下:
//////////////////
接口部分
/////////////////
STDMETHODIMP CPrimeFile::Load(/*[in]*/LPCOLESTR pszFileName, /*[in]*/DWORD dwMode)
{
_tcscpy_s(m_lptFilename, _MAX_PATH, pszFileName);

HANDLE hFile = ::CreateFile(m_lptFilename,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile)
{
long lValue;
DWORD dwReadBytes;
::ReadFile(hFile, &lValue, sizeof(long), &dwReadBytes, NULL);
m_nNow = lValue;
CloseHandle(hFile);
}

return S_OK;
}
(发表于2007-4-3 22:51:00)

epubcn:STDMETHODIMP CPrimeFile::Save(/*[in]*/LPCOLESTR pszFileName, /*[in]*/BOOL fRemember)
{
if( fRemember ) m_bDirty = false;

_tcscpy_s(m_lptFilename, _MAX_PATH, pszFileName);

//MessageBox(NULL,m_lptFilename,_T("Will save"),MB_OK|MB_ICONINFORMATION);

HANDLE hFile = ::CreateFile(m_lptFilename,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile)
{
DWORD dwBytes;
::WriteFile(hFile, &m_nNow, sizeof(long), &dwBytes, NULL);
CloseHandle(hFile);
}

return S_OK;
}
STDMETHODIMP CPrimeFile::InitValue(void)
{
m_nNow = 0;

return S_OK;
}
(发表于2007-4-3 22:51:00)

epubcn://////////////////
调用部分
/////////////////
1、Load
if(m_spPrimeFile)
{
CComQIPtr spPF;
spPF = m_spPrimeFile;
if(spPF)
spPF->Load(lpwFileName, STGM_READ | STGM_SHARE_EXCLUSIVE);

spPF.Release();
}
2、Save
if(m_spPrimeFile)
{
CComQIPtr spPF;
spPF = m_spPrimeFile;
if(spPF)
spPF->Save(lpwFileName, TRUE);
spPF.Release();
}
3、Reset
m_spPrimeFile->InitValue(); //Set m_nNow = 0;
(发表于2007-4-3 22:51:00)

shuishi32:杨老师,这节的示例中我觉得有个小BUG。

void CUseDlg::OnNew() 
{
   .................             
if( !spPSI )
AfxMessageBox( _T("组件没有提供持续性接口") );
else
{
spPSI->InitNew();
GetDlgItem( IDC_NEXT )->EnableWindow( TRUE );
spPSI->Save(spStream, TRUE);
} // 上一行的Save我觉得有必要,不然的话,点过重新开始后,再点从上次开始没有任何效果了。
(发表于2007-6-19 14:51:00)

..........................................................................
--------------------next---------------------

阅读(170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~