摘要:
VariantClear(Value); 阅读全文
摘要:
BOOL (WINAPI *pfnGetProcessDEPPolicy)(HANDLE hProcess, LPDWORD lpFlags, PBOOL lpPermanent);BOOL (WINAPI *pfnSetProcessDEPPolicy)(DWORD dwFlags);(FARPROC&)pfnGetProcessDEPPolicy = GetProcAddress(GetModuleHandle(_T("kernel32")), "GetProcessDEPPolicy");(FARPROC&)pfnSetProces 阅读全文
摘要:
可以在控件的IDL文件中编写代码,见彩色部分代码。import "oaidl.idl";import "ocidl.idl";[object,uuid(A0A2E087-0A96-4861-BED2-549F9A0AC2C2),dual,nonextensible,helpstring("IHLMe... 阅读全文
摘要:
STDMETHODIMP CFun::Cat(BSTR s1, BSTR s2, BSTR *pVal){CComBSTR sResult( s1 );sResult.AppendBSTR( s2 );*pVal = sResult.Copy();// *pVal = sResult.Detach();return S_OK;} 阅读全文
摘要:
VARIANT C++、BASIC、Java、Pascal、Script......计算机语言多种多样,而它们各自又都有自己的数据类型,COM 产生目的,其中之一就是要跨语言(注3)。而 VARIANT 数据类型就具有跨语言的特性,同时它可以表示(存储)任意类型的数据。从C语言的角度来讲,VARIANT 其实是一个结构,结构中用一个域(vt)表示------该变量到底表示的是什么类型数据,同时真正的数据则存贮在 union 空间中。结构的定义太长了(虽然长,但其实很简单)大家去看 MSDN 的描述吧,这里给出如何使用的简单示例:学生:我想用 VARIANT 表示一个4字节长的整数,如何做?老师 阅读全文
摘要:
1、函数 WideCharToMultiByte(),转换 UNICODE 到 MBCS。使用范例: LPCOLESTR lpw = L"Hello,你好"; size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符 int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度 CP_ACP, 0, lpw, // 宽字符串指针 wLen, // 字符长度 NULL, 0, // 参数0表示计算转换后的字符空间 NULL, NULL); LPSTR lpa = new 阅读全文
摘要:
一个类如果想被com容器使用,则必须继承于CComObjectRootEx和CComCoClass,示例class ATL_NO_VTABLE CCMXLayers :public CComObjectRootEx<CComSingleThreadModel>,public CComCoClass<CCMXLayers, &CLSID_CMXLayers>,public IDispatchImpl<ICMXLayers, &IID_ICMXLayers, &LIBID_MapObjectLib, 1, 0>{普通的类是无法被容器使用的 阅读全文
摘要:
API:PathAddBackslash Function这个API个人感觉太简单了。。。就是在字符串的最后加一个反斜杠ASSERT( m_szAppName[0] == _T('\0') );_tcsncpy(m_szAppName, pszAppName, _countof(m_szAppName) - 1);m_szAppName[_countof(m_szAppName) - 1] = _T('\0');// eMule may not have the permission to create a DMP file in the directory w 阅读全文
摘要:
UpdateData()参数只有一个,默认为TRUE。 UpdateData(TRUE) ——刷新控件的值到对应的变量。 即:控件的值—>变量。 UpdateData(FALSE) —— 拷贝变量值到控件显示。 即:变量值—>控件显示。 例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TR 阅读全文
摘要:
在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用 ( 不满足继承关系,而是组合关系 ) 。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法: 编码时,我们一般会尽量避免 include 头文件,而是采用声明 class XXX 。 但有时候还是必须用 Include 头文件,那么,两者的划分在于什么呢? 应该是很明确的,但书上好像都少有提及。 首先: 我们要明白为什么要用声明取代头文件包含:对了,是为了避免无必要的重编译 ( 在头文件发生变更时 ) 。 工程较大,低速机,或基础类经常变更 ( 不合理的设计吧 ) , 阅读全文
摘要:
mitab_c_set_field给图元添加属性时如果mitab_c_add_field(tabHandle,"ID",TABFT_Char,20,0,0,1);然后char ID[20];sprintf(ID,"%d",nIndex);mitab_c_set_field(fs,0,ID);如果nIndex=0 则创建不成功 可能mitab_c_set_field把"0"当做空串来处理了 阅读全文
摘要:
CGuardRouteBar *pParent = (CGuardRouteBar *)GetParent();//这一句是错误的 因为分割视图 GetParent()的不到正确的将路线的编号传入RouteDetailView视图if(!pParent){AfxMessageBox(_T("程序错误!"));return;}CGuardRouteBar中代码为。。。public:CSplitterWndExm_splitter;CGuardRouteView *m_routeView;CGuardRouteView* GetRouteView(void);CGuardRou 阅读全文
摘要:
张文涛个人中心好友消息退出张文涛退出让你的微博变成经典语录 发博文 博文 张文涛的博客[编辑]http://blog.sina.com.cn/u/1242973553 首页 博文目录 图片 关于我发博文页面设置个人中心微语录九宫格发照片发视频个人资料 [管理] 张文涛播客 微博博客等级:博客积分:204博客访问:227关注人气:0相关博文 帮你把点滴想法汇聚成文新浪官博MSN搬家新浪总动员新浪博客团队现在FQ和小时候FQ的区别刘兴亮女人让男人更着迷的秘密(图健康天使3月23日股市直播徐湘毅MSN的盗梦空间——写在MS康斯坦丁一头毛驴引发的公关风波:赶集猎头哲瀚社会化媒体营销与品牌传播快刀洪七谁 阅读全文
摘要:
CRuntimeClass* pViewClass = RUNTIME_CLASS (CGuardRouteDetailFormView);CView* pView = DYNAMIC_DOWNCAST (CGuardRouteDetailFormView, pViewClass->CreateObject ());m_guardRouteDetailView = (CGuardRouteDetailFormView* )pView;ASSERT_VALID (pView);if (!pView->Create (NULL, _T(""), WS_CHILD | 阅读全文
摘要:
wchar_t * __cdecl _wcsdup ( const wchar_t * string ){ wchar_t *memory; if (!string) return(NULL); if (memory = (wchar_t *) malloc((wcslen(string)+1) * sizeof(wchar_t))) return(wcscpy(memory,string)); return(NULL);}以前碰到字符串在栈上,函数执行完以后会析构这个字符串问题时候一般都是把它作为成员函数,或者分配在堆上处理,原来c有一个函数wcsdup可以处理这个事情,其实就是调用mall 阅读全文
摘要:
这段时间一直在忙项目,也没有时间来博客把这段时间的东西整理下粘贴上来,只是今天晚上把手上的工作调试完成了,上了博客才决定把今天遇到的问题发上来供大家参考。 今天一天都在编代码,作调试,到晚上才发现以前的项目中的代码存在问题,但是以前为什么就好好的呢?真是想不通,在调试的过程中,由于主框架程序调用了我自己封装的一个采集模块组件,这个组件采用mfc dll封装成COM的形式进行调用,但是在主框架程序中调用这个模块老是有问题,在显示采集模块窗口界面的时候就出现“Expression Buffer too small"的错误提示,搞得非常郁闷,调试都没有办法进行,于是上网查找了下,说可能是C 阅读全文
摘要:
我用Winform做的,每次查询都是剽窃http://www.jnbus.com.cn/这个网站的数据,懒得用MFC作了,以后有时间再做,有想要源码或者程序的可以留下邮箱! 阅读全文
摘要:
mitab_capi.cpp File ReferenceDefines#define INFO_NUMPARTS 0#define INFO_NUMPOINTS 1#define INFO_XVERTEX 2#define INFO_YVERTEX 3Functionsint MITAB_STDCALL mitab_c_getlibversion ()//返回库的版本号int MITAB_STDCALL mitab_c_getlasterrorno ()//获取错误信息const char *MITAB_STDCALL mitab_c_getlasterrormsg ()int MITAB_ 阅读全文
摘要:
可以使用T2A这个宏,代码CFileDialog hFileDlg(FALSE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT | OFN_CREATEPROMPT, _T("(*.TAB)|*.TAB|| "),NULL);CString strFileName;LPTSTR pszfilename=strFileName.GetBuffer(255);memset(pszfilename,0,255);lstrcpy(pszfilename, _T("未命名"));hFileDlg.m_ofn.lpst 阅读全文
摘要:
这个函数百度百科介绍为 glLoadIdentity():该函数的功能是重置当前指定的矩阵为单位矩阵。 在glLoadIdentity()之后我们为场景设置了透视图。glMatrixMode(GL_MODELVIEW)设置当前矩阵为模型视图矩阵,模型视图矩阵储存了有关物体的信息。 意思是将以前的变换抹掉为了使第二次glTranslatef 是相对原点坐标,我使用了它但是为什么我使用glLoadIdentity所画的东西统统不见了。真奇怪了,原因查找中。。。 阅读全文