免注册COM的使用方法
admin | com | 2014-04-22
COM对象的传统创建方法,会依赖于注册表,所有应用程序都会依赖到同一个版本的COM。如果不同程序依赖的COM版本不同,而这个COM的版本兼容又没有做得很好的时候,就会出现DLL Hell问题。
微软在多年前就提供了一个Reg-free COM的方案,现在的VS也很好的集成了这个功能。
免注册COM的实现原理是把依赖到的COM类型与接口信息存储在本地的清单文件(... [阅读全文]
__stdcall
admin | C++ | 2014-04-18
被这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传), 函数调用在返回前要由被调用者清理堆栈。
[阅读全文]
Activex、OLE、COM、OCX、DLL之间有什么区别?
admin | win32 | 2014-04-18
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象... [阅读全文]
C++ 播放远程音乐
admin | win32 | 2014-04-02
C++
#include <Windows.h>
#include <Mmsystem.h>
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "Winmm.lib")
MCI_OPEN_PARMS mciOpen = {0, 0, L"mpegvideo", 0, 0};
bool PlayAudio(const CString& strUrl)
{
/*for playing MP3*/
mciSendCommand( mciOpen.wDeviceID, MCI_... [阅读全文]
wstring2string
admin | 类型转换 | 2014-04-01
C++
std::string ws2s(const std::wstring& ws)
{
std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";
setlocale(LC_ALL, "chs");
const wchar_t* _Source = ws.c_str();
size_t _Dsize = 2 * ws.size() + 1;
char *_Dest = new char[_Dsize];
memset(_Dest,0,... [阅读全文]
string2wstring
admin | 类型转换 | 2014-04-01
C++
std::wstring s2ws(const std::string& s)
{
setlocale(LC_ALL, "chs");
const char* _Source = s.c_str();
size_t _Dsize = s.size() + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, 0, _Dsize);
mbstowcs(_Dest,_Source,_Dsize);
std::wstring result = _Dest;
... [阅读全文]
string.c_str()
admin | 类型转换 | 2014-04-01
C++
Call c_str() to get a const char * (LPCSTR) from a std::string.
It's all in the name:
LPSTR - (long) pointer to string - char *
LPCSTR - (long) pointer to constant string - const char *
LPWSTR - (long) pointer to Unicode (wide) string - wchar_t *
LPCWSTR - (long) pointer to constant Unicode (w... [阅读全文]
引入 excel.tlh 错误
admin | 二次开发 | 2014-04-01
编译出错的解决了 其实只要注释掉每个头文件的
#import “C:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE” no_namespace
然后在CRange.h中的 VARIANT DialogBox() 改成 VARIANT _DialogBox() 就可以
[阅读全文]
MFC timer
admin | C++ | 2014-04-01
C++
ON_WM_TIMER()
virtual void OnTimer(UINT nIDEvent);
KillTimer(nIDEvent)
123
ON_WM_TIMER()virtual void OnTimer(UINT nIDEvent);KillTimer(nIDEvent)
[阅读全文]
C++使用OLE高速读写EXCEL的源码
admin | 取词 | 2014-04-01
http://www.cnblogs.com/fullsail/archive/2012/12/28/2837952.html
[阅读全文]