设为首页 加入收藏

TOP

Visual C++编程疑难问题解(一)(二)
2012-11-04 15:27:21 来源: 作者: 【 】 浏览:513
Tags:Visual 编程 疑难 题解
  问题四:如何使程序在启动时不创建一个新文档?

  钥匙在这里: 在程序的InitInstance中的ProcessShellCommand函数之前加入:

    cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing

  问题五:如何在MDI程序中得到所有的视图?

  钥匙在这里:

   必须用一些文档中没有记载的函数:

CDocument::GetFirstViewPosition(); // DOCCORE.CPP
CDocument::GetNextView(); // DOCCORE.CPP
CMultiDocTemplate::GetFirstDocPosition(); // DOCMULTI.CPP
CMultiDocTemplate::GetNextDoc(); // DOCMULTI.CPP

   同时还需要与CWinApp的成员m_templateList打交道。

  问题六: ADO中如何得到某个数据库中的所有表的数目?

  钥匙在这里:

HRESULT hr = S_OK;
_ConnectionPtr pConnection = NULL;
_CatalogPtr pCatalog = NULL;
_bstr_t strCnn("Provider=sqloledb;Data Source=MyServer;"
"Initial Catalog=pubs;User Id=sa;Password=;");

try
{
 file://Define a command object for a stored procedure.

 pConnection.CreateInstance(__uuidof(Connection));
 hr = pCatalog.CreateInstance(__uuidof (Catalog));
 hr = pConnection->Open(strCnn,"","",adConnectUnspecified);
 pCatalog->PutActiveConnection(_variant_t((IDispatch *) pConnection));
 long nTBCount = pCatalog->Tables->Count;//这就是你想要的表的数目
 pConnection->Close();
 pConnection = NULL;
}
catch(_com_error &e)
{
 ....
}

  问题七:从应用角度讲阻塞与非阻塞SOCKET有什么区别?

  钥匙在这里:

   从系统性能上看,用非阻塞的socket效率和性能更高,但是编程(www.cppentry.com)更复杂,特别是当你使用事件或者消息的时候,但是,你可以通过4个工作线程管理100多个socket连接,效率非常高,不需要每个工作线程只管理一个socket连接。 用阻塞的方式比较简单,但当较多客户端时消耗系统资源太多。

   所谓用4个线程管理100多socket,不过是这样一种构思:建立一个线程池,当有socket的事件需要处理时,从线程池中取一个线程来执行,执行完,将线程归还到线程池中。 这样的做法在如下的条件下会工作的更好:

   (1)、每个socket连接的时间较长,不断的与服务器交互。

   (2)、每个连接的socket并不是每时每刻都在收发数据 具体的实现方式:(我是在windows环境下实现的,linux上现在正在研究) 可以使用OVERLAPED IO,或者完成端口(CompeleteIO)

  问题八: 怎样设置栈的大小?

  钥匙在这里:

   方法一:STACKSIZE 定义.def文件

   语法:STACKSIZE reserve[,commit]

      reserve:栈的大小;commit:可选项,与操作系统有关,在NT上只一次分配物理内存的大小

   方法二:设定/STACK

   打开工程,依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后在Reserve中设定堆栈的最大值和commit。

   注意:reserve默认值为1MB,最小值为4Byte;commit是保留在虚拟内存的页文件里面,它设置的较
大会使栈开辟较大的值,可能增加内存的开销和启动时间


首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Visual C++利用多线程模拟并行计算 下一篇用VC++实现图像检索技术

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: