摘要:原文地址:http://www.cnblogs.com/chinadhf/archive/2010/09/03/1817336.html本文描述了使用ATL开发一个ActiveX控件的完整过程。一、创建项目单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“Calculator”。在随后出现的项目向导中,使用默认配置即可。二、添加控件在解决方案管理器中的项目上右击,依次选择“Add”、“Class”,在添加类对话框中选择ATL分类下的ATL Control类型。单击“Add”按钮,将会出现添加ATL Control向导。在向导的第二步中
阅读全文
随笔分类 - VC/C++
摘要:Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized.参考:http://blog.sina.com.cn/s/blog_5d2412000100ojx3.html方案1: 改变项目配置属性 一种解决方案是改变基本运行时检查(changing the runtime checks in project settings):在菜单Project->Project properties-> C/C++ -> Code generation
阅读全文
摘要:1、使用标准 Windows 库 顾名思义2、在静态库中使用 MFC将DLL的相关代码打包到EXE中,生成的文件较大,但可以在没有相关DLL的机器上运行3、在共享DLL中使用MFC 打包时DLL的相关代码没有包含到EXE中,生成的目标文件比较少,运行时系统中需要有相关的DLL支持
阅读全文
摘要:VC Unicode项目发送消息DELPHI代码var wData: String; h: HWND; cds: TCopyDataStruct;begin wData:= '1234567890'+ Chr(0); cds.dwData:= 0; cds.cbData:= Length(wData); cds.lpData:= PWideChar(wData); SendMessage(h, WM_COPYDATA, 0, LongWord(@cds));end非VC Unicode项目var wData: WideString; h: HWND; cds: TCopy...
阅读全文
摘要://窗口ID,句柄,指针三者相互转换函数//ID--HANDLE--HWND三者之间的互相转换long id;CWnd *pWnd;HWND hWnd;//id->句柄hWnd = ::GetDlgItem(hParentWnd,id);//id->指针CWnd::GetDlgItem();//句柄->idid = GetWindowLong(hWnd,GWL_ID);//句柄->指针CWnd *pWnd=CWnd::FromHandle(hWnd);//指针->IDid = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);/
阅读全文
摘要:症状从命令用户界面处理函数(Command UI handler)改变菜单状态(启用/禁用,选择/取消选择,更改文字)在由对话框处理时没有正常工作。void CTestDlg::OnUpdateFileExit(CCmdUI* pCmdUI{ pCmdUI->Enable(FALSE); //没有显示为禁用. pCmdUI->SetCheck(TRUE); // 没有文字前显示选定标记. pCmdUI->SetRadio(TRUE); // 没有在文字前显示点. pCmdUI->SetText("Close"); //没有更改菜单文字.} 原因在下拉
阅读全文
摘要:项目中用到第三方提供的OCX控件用于播放视频,但VC中导入OCX控制没有鼠标双击事件,窗体OnLButtonDblClk事件,在OCX控件上无效,网上查资料可以利于重载PreTranslateMessage捕获鼠标双击事件,代码如下:BOOL CGVideoDlg::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == WM_LBUTTONDBLCLK) { CWnd *pWnd = FromHandle(pMsg->hwnd); if (pWnd->GetDlgCtrlID
阅读全文
摘要:响应控件所在窗口的OnContextMenu(CWnd* /*pWnd*/, CPoint point)函数,在该函数中增加判断当前鼠标右击点是否在控件区域内的过程,如果判断鼠标右击点在指定控件中,则显示相应弹出菜单。这种方法实现起来简单、灵活,完整VC代码如下:void CGVideoDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point){ // TODO: 在此处添加消息处理程序代码 CRect rect; GetDlgItem(IDC_PLAYER)->GetWindowRect(&rect); if (rect.PtInRect(
阅读全文
摘要:项目为Unicode字字符集,调用inet_addr错误信息inet_addr cannot convert parameter1 from CString to const char*代码修改如下通过:serverip="192.168.0.9";charcip[30]wcstombs(cip,serverip,serverip.GetLength()*2);unsignedlongip=ntohl(inet_addr(cip))参考:wcstombs wcstombs - 将宽字符转换成多字符头文件:#include <stdlib.h>原型size_t w
阅读全文
摘要:http://www.kuqin.com/ace-2002-12/ACE中文文档 *ACE自适配通信环境(代序) *上篇:ACE技术论文集 *第1章 ACE自适配通信环境:用于开发通信软件的面向对象网络编程工具包 *第2章 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式 *第3章 IPC SAP:用于高效、可移植和灵活的网络编程的C++包装 *第4章 ACE轻量级OS并发机制的OO封装 *第5章 C/C++线程专有存储(Thread-Specific Storage):用于访问“per-Thread”状态的对象行为模式*第6章 主动对象(Active Object):
阅读全文