现在位置: 首页 > 自动控制 > 工业·编程 > 文章
对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。 第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。解决办法是:如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE(AfxGetStaticModuleState( )),如果是MFC扩展DLL,具体做法是 1....
阅读全文
开发时有一个工程的一个文件的断点无效,VS 2005提示说当前不会命中断点。源代码与原始版本不同,请在断点选项里设置允许源代码与原始版本不同。这个是针对单个断点进行设置。如果要对所有的断点进行设置,则要在“工具”——〉“选项”——〉“调试”——〉“要求源文件与原始版本完成匹配”去掉勾。 实际上有比这个办法更好的办法,就是将出问题的文件用notepad打开,然后另存为Unicode编码,覆盖原来的文件。 网上另外有一种办法是: ...
阅读全文
    目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称"静态库"),另一种为动态连接库(DLL,以下简称"动态库")的导入库(Import Libary,以下简称"导入库")。 静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。 ...
阅读全文
2012-07-14 23:04 工业·编程 ⁄ 共 494字 暂无评论
CString转换为std::string,网上通行的做法是利用CString的GetBuffer函数。具体做法如下(编译环境为VS C++ 2005+sp1, Win XP+sp3,多字节字符集编译,以下同): CString strMFC= _T("Hello!"); std::string str2(strMFC.GetBuffer()); strMFC.ReleaseBuffer(); CString strMFC= _T("Hello!"); std::string str2(strMFC.GetBuffer()); strMFC.ReleaseBuffer(); 这种做法在unicode字符集下也可行。今天...
阅读全文
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。 但是在两年前的一个项目中,我发现不用__declspec(dllimport)似乎也可以。比如现在我新建一个使用共享MFC DLL的规则DLL工程:...
阅读全文
2012-07-14 22:58 工业·编程 ⁄ 共 3992字 暂无评论
前天同事问我在CFileDialog中多选时按确定按钮后DoModal函数的返回值是IDCANCEL。我说不太可能吧。他的代码大致如下: static TCHAR BASED_CODE szFilter[] = _T("TXT(*.txt)|*.txt||"); CFileDialog dlg(TRUE,_T("txt"), NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, szFilter, NULL ); INT_PTR nResult = dlg.DoModal(); static TCHAR BASED_CODE szFilter[] = _T("TXT(*.txt)|*.txt||"...
阅读全文
2012-07-14 21:44 工业·编程 ⁄ 共 519字 暂无评论
1、关联(association) 说明:是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。给定一个连接两个类的关联,可以从一个类的对象导航到另一个类的对象,反之亦然。 图形:一条实线,可以带箭头。 属性:名称、角色(关联中靠近它的一端的类对别外一端的类呈现的职责)、多重性。 2、聚合() 说明:一种特殊的关联,表示“整体/部分”的关系,其中一个类描述了一个较大的事物,它由较小的事物组...
阅读全文
2012-07-14 21:39 工业·编程 ⁄ 共 715字 暂无评论
    交换机和路由器两个概念容易让人混淆。     首先从工业标准的网络分层开始说起,第一层也就是物理层,通俗的讲就是那些可以直接通信的那些硬件,没有什么管理功能,最简单的包括就是那根连接着的网线。第二层是数据链路层,这一层之间的数据通信是通过MAC地址(Media access control)来区别实现的,如果对MAC地址概念比较模糊的话,就说一下网卡,每一个网卡都有一个自己在全世界独一无二的...
阅读全文
2012-07-14 21:24 工业·编程 ⁄ 共 929字 暂无评论
    typedef是相当于重新定义一种类型,而define仅仅是简单的字符串替换.常用的陷阱是使用define来使用多个变量的替换,容易出错。 举个例子: 1.#define int * PINTA 2.typedef int * PINTB 使用上边的两种例子来定义两个变量 3.PINTA a,b; 4.PINTB c,d;     第3行中其实a的类型是int *,而b的类型是int,解释一下:在看到define的时候只要把define指定的内容按照原来的情况直接复制下来看结果...
阅读全文
2012-07-14 21:19 工业·编程 ⁄ 共 501字 暂无评论
    先看一个例子: typedef int  (*pFun)(int a, int b); pFunp FunTest;     在上边的代码中,初看会使人误解,怎么能使用函数指针pFun来声明一个类型呢?相信很多人和我都有这样同样的感受。我就先从typedef说起,使用typedef能定义新的类型 比如:     typedef int int_32;     这里int_32就是一个新的类型,虽然这个类型和int是一样的,那我们就可以将ty...
阅读全文