DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 389 390 391 392 393 394 395 396 397 ··· 474 下一页

2013年11月21日

摘要: 在CodeProject上找到一个动态调整对话框窗口大小的窗口类的资源:Dynamicchild window positioning,我感觉挺好用的。窗口基类是:cdxCDynamicWnd, cdxCDynamicWndEx。假如链接无效之后可以搜下这个。 阅读全文
posted @ 2013-11-21 10:20 DoubleLi 阅读(298) 评论(0) 推荐(0)

摘要: 根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题。下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路。由于我主要专注于Windows平台C++程序的开发,这里假设以VS为编译环境,MFC界面库来说明。1. 主程序和插件的关系问题 插件架构一般可以用下面的图来表示:(注:此图来自李先静的博客文章:http://blog.csdn.net/absurd/archive/2006/07/04/877063.aspx,略有修改,特向李大侠表示感谢) 一般来说:应用程序框架所完成的功能应为一个软件系统的核心和基础,这些基本功能主要包括一些核心功能,即 阅读全文
posted @ 2013-11-21 10:17 DoubleLi 阅读(1785) 评论(0) 推荐(0)

摘要: C++编写的桌面软件中传统的App+Dll的架构已经显现出的模块之间的强耦合、维护性差、升级不方便等诸多弊端,为此我进行了一些思考,有兴趣的朋友请看我以前的一个思考片断:《Windows平台下C++插件系统实现的几个关键技术问题及其解决思路》,今天则具体介绍的我的一个具体设计和实现。 我的目标是要去除功能模块的相互依赖,在模块调用必须采用动态加载的办法,但同时各个模块可以进行自由地进行通讯。我的设想大致是这样的:在动态加载各个模块后调用统一接口后生成插件对象,在某个插件对象都能通过标识符找到其它的插件对象,通过统一的接口将数据传给它们。系统架构图如下:系统流程图如下: 大家可以看到,要构建这样 阅读全文
posted @ 2013-11-21 10:16 DoubleLi 阅读(907) 评论(0) 推荐(0)

摘要: 一.《Google C++ 编程风格指南》里的观点 公司在推行编码规范,领导提议基本上使用《Google C++ 编程风格指南》。其中《Google C++ 编程风格指南》对于头文件的包含顺序是这样的:Names and Order of Includeslink ▽Use standard order for readability and to avoid hidden dependencies:C library, C++ library, other libraries' .h, your project's .h.All of a project's head 阅读全文
posted @ 2013-11-21 10:12 DoubleLi 阅读(868) 评论(0) 推荐(0)

摘要: 在VC中访问Oracle,可以使用ADO或ODBC,如果你比较强大,也可以直接使用OCI API,但我个人认为OTL是最佳选择,它是一套数据库访问C++模板库,全部代码都在otlv4.h头文件中,通过OTL不但可以访问Oracle数据库(使用OCI API),还可以访问DB2,或者使用ODBC连接字符串访问其他数据库。 otl的源码只有一个头文件——otlv4.h。下面以一个例子来说明如何使用otl。[cpp]view plaincopy #defineOTL_ORA10G#includevoidCAboutDlg::OnBnClickedOk(){//TODO:在此添加控件通知处理程序代码o 阅读全文
posted @ 2013-11-21 10:10 DoubleLi 阅读(1453) 评论(0) 推荐(0)

摘要: C++中防止头文件被多次include 的常见方式有:1) 用#ifndef ... #define ... #endif 宏#ifndef __MYHEADER_H__#define __MYHEADER_H__// Here is my class ...#endif2) 用 #pragma once#pragma once// Here is my class ...建议使用 #pragma once ,原因:1) 代码简洁,维护性比较好。 #pragma once 显然比 #ifndef ... 要简短许多,而且避免了__MYHEADER_H__ 重定义 或者 #endif 包含范围错 阅读全文
posted @ 2013-11-21 10:03 DoubleLi 阅读(381) 评论(0) 推荐(0)

摘要: 开发DLL的时候,需要十分注意 DllMain 函数,因为在多线程环境下DLLMain里面的代码很容易引发线程死锁。 这篇MSDN文章《Best Practices for Creating DLLs》深入讨论了开发DLL的时候应该注意哪些事项, 非常推荐。简单来说,系统在装载DLL 的时候会自动产生一个Loader Lock, 避免多个DLL同时被装载。 LoaderLock从API函数LoadLibrary调用的开始就自动加锁, 直到DllMain 退出为止。 常见到一些开发者喜欢在DllMain 里面写大量的初始化代码(比如 CoInitializeEx, LoadLibraryEx,C 阅读全文
posted @ 2013-11-21 10:02 DoubleLi 阅读(451) 评论(0) 推荐(0)

摘要: 在一些情况下(比如屏幕软键盘或者输入法程序),自己的窗口没有输入焦点但是想要当前焦点窗口的键盘输入消息,可以使用Win32 API函数AttachThreadInput()来解决这个问题。AttachThreadInput把一个线程(idAttach)的输入消息连接到另外线程(idAttachTo)。函数定义:BOOL WINAPI AttachThreadInput( __in DWORD idAttach, __in DWORD idAttachTo, __in BOOL fAttach);用法示例:AttachThreadInput( ::GetWindowThreadProcessId 阅读全文
posted @ 2013-11-21 09:58 DoubleLi 阅读(468) 评论(0) 推荐(0)

摘要: --克服用例图的恐惧在实际工作中,大部分程序员很少接触到需求分析,即使有需求分析,也是草草了事,没有用正规的方式来表达,所以一般程序员使用用例图的机会是不多的。但是却又常常在各种媒体上看见用例图,于是对一种常常出现,自己又不太熟悉的技术,会产生恐惧。如果说对MDA或者CORBA这样的技术产生恐惧还是值得的话,对用例图产生恐惧是非常不值的。因为MDA和CORBA这样的技术也许要花上半年的时间才能够初步了解,而克服用例图恐惧症,则只要不到一天的时间。用例图初感UML是一组图示符号的标准。所谓图示符号,就是一组定义好的图示,它们可以表达定义好的各种意思。用UML进行软件建模,就是用规定好的符号画图, 阅读全文
posted @ 2013-11-21 09:49 DoubleLi 阅读(1478) 评论(0) 推荐(1)

摘要: 例子代码就在我的博客中,包括六个UDP和TCP发送接受的cpp文件,一个基于MFC的局域网聊天小工具工程,和此小工具的所有运行时库、资源和执行程序。代码的压缩包位置是http://www.blogjava.net/Files/wxb_nudt/socket_src.rar。1前言在一些常用的编程技术中,Socket网络编程可以说是最简单的一种。而且Socket编程需要的基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是大部分都是基于Socket开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极大程度的简化开发,而事实上如果你没有一点Socket基础 阅读全文
posted @ 2013-11-21 09:46 DoubleLi 阅读(1730) 评论(0) 推荐(0)

上一页 1 ··· 389 390 391 392 393 394 395 396 397 ··· 474 下一页