Jiangsheng的CSDN Digest (Dec 2005)

CSDN 讨论总结系列:

关于读XML字串的一个小问题(VC/MFC 基础类)


loadXML之后文档指针已经正常获得,但是文档的内容始终为空


MSXML4的文档对象的async属性默认是真,这时候Load是异步的,要等待对象触发事件再访问文档内容。也可以把文档的async属性设置成false切换到同步模式,这样Load调用之后就可以读DOM了。


.Net和MFC哪个更有前途,大家来讨论一下 (.NET技术 非技术区)


我是计算机专业大三的学生,我这学期已经学完了C++,教材是Essencial C++,但我自己把C++ Primer看完了,正在看Effective C++。我觉得自己基础比较扎实,因为以前C学得也可以。 我现在有点疑惑,不知道该学MFC还是学.Net。 因为听说明年64位操作系统就要出来了。所以学.Net很有前途,但是.Net的正宗语言是C#,不是C++,而我没学过C#,并且听人说C#在底层实现上比较差。 我想问一下,MFC和.Net哪个更有前途。


MFC是在API的基础上封装出来的一个类库,给C++程序员在Windows上快速开发用的。
.Net类库是在Windows非托管API的基础上封装出来的一个托管类库,给程序员在各种Windows平台上跨平台开发用的。

如果你是一个C++程序员,要进行非托管程序开发,那么你不能用.Net类库。如果要进行托管程序开发,你可以选择.Net类库,但是有时也需要在工程中加入对Windows非托管API和MFC的调用,例如http://blog.joycode.com/jiangsheng/archive/2005/03/19/46065.aspx


我使用MSXML DOM创建XML文件,怎么在文件开头写上一些注释? (VC/MFC HTML/XML)


比如我想写上:
<?xml-stylesheet href="a.xsl" type="text/xsl" ?>


CreateProcessInstruction


VS2005的类设计器是怎么用的? (.NET技术 VC.NET)


我下了profession的rtm版,找来找去都没找到这个类设计器在哪里?
原有的代码能用类设计器吗,还是说要新建的?


Class Designer is not included in the current version of Visual C++ 2005.

C++ support will not be included in the Class Designer until a future release of Visual Studio, hopefully Visual Studio 2006.


关于继承CTreeCtrl类后,怎样能在初始化控件时同时加入ITEM(VC/MFC 界面)


我建一个类是从CTreeCtrl派生的。我想在自定义类里加入初始化控件的时候,自动加载几个ITEM到控件中。请问怎么做?比如说我的CMyTreeCtrl是继承CTreeCtrl的,然后我用CMyTreeCtrl定义一个控件,我想这控件在初始化时就有我自定义的默认的几项在里边。


把插入项目的代码放在PresubclassWindow里面。对话框是通过SubclassWindow来关联已经创建的子窗口和成员变量的,所以WM_CREATE等消息的处理函数不会总是被调用。


多线程环境下CLISTCTRL切换和刷新慢的问题如何解决(VC/MFC 界面 )


环境:WIN2000 SP4
VS2003。NET
本地运行了自己开发的一个网络服务器软件(没有问题的)
然后运行客户端,
客户端的主界面重载了ONEARSE( ),用来设置背景图片,本身是个对话框程序
原来使用的是LISTBOX监控窗口,刷新和程序切换,界面都没有问题,
改用CLISTCGTRL控件的REPORT模式做监控窗口后,出现问题
CLISTCTRL控件的刷新,在一直保持在TOP WINDOW位置的时候,正常
但是如果有其他程序占用TOP WINDOW位置,然后切换,如果已经连接到服务器(客户端本身也是多线程),那么经常在切换的时候出现CLISTCTRL控件要等一些时间才出现,其他部分却完全正常,
或者把鼠标移动到CLISTCTRL上,也能一点但刷新出来,
但是如果立即最小化,又最大化,通常能立即恢复
在WIN98下调试发现也有这问题,但是以前使用LISTBOX没有任何问题

界面上的CLISTCTRL采用定时刷新机制,间隔3-5秒
同时各线程在收到消息后也会发送立即刷新消息,然后主截面就立即刷新CLISTCTRL控件内容
为了防止闪动,在刷新函数中使用了SETREDRAW( )函数
请各位帮忙分析原因,


估计是SetRedraw的问题
用虚列表+CListCtrl::Update,更新的项目不可见的话没必要SetRedraw这么兴师动众

http://www.codeguru.com/Cpp/data/mfc_database/article.php/c1127


怎么将两个xml文件合并在一个xml文件中?(VC/MFC HTML/XML)


现在两个xml文件,文件的格式都是相似的,比如:
<?xml version="1.0" encoding="UTF-16" ?>
<inforoot informationtime="2005-11-15 14:34:15">
<iedate date="2005-11-08">
<webname mbrid="0" number="2">update.cnnic.cn:80</webname>
</iedate>
</inforoot>

现在我想新建一个xml,然后将2个xml文件的内容都复制到这个新的xml文件中,变成这样:
<?xml version="1.0" encoding="UTF-16" ?>
<root>
<inforoot informationtime="2005-11-15 14:34:15">
<iedate date="2005-11-08">
<webname mbrid="0" number="2">update.cnnic.cn:80</webname>
</iedate>
</inforoot>
<inforoot informationtime="2005-11-16 14:34:15">
<iedate date="2005-11-09">
<webname mbrid="0" number="8">www.sina.com</webname>
</iedate>
</inforoot>
</root>
请问具体该怎么做?
最好有例子或者代码提示,谢谢!


用XSLT来做转换。用document函数就可以导入XML文件。如果你需要导入同一个文件两次,你可能更喜欢用一个变量来保存导入的文件内容。参见http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/b24aafc2-bf1b-4702-bf1c-b7ae3597eb0c.asp


使用vc.net中使用API的问题 (.NET技术 VC.NET)


在程序中使用了GlobalAlloc,如果不在from1.h中加入#include <windows.h>,则编译会出现:
error C3861: “GlobalAlloc”: 即使使用参数相关的查找,也未找到标识符
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Include/WinBase.h(1624): error C2365: “GlobalAlloc” : 重定义;以前的定义是“原先未知的标识符”
,如果在from1.h中加入#include <windows.h>,则编译会出现:
error C2039: “GetObjectW” : 不是“System::Resources::ResourceManager”的成员
这条语句是系统自动生成的,是我在加入一个com控件量系统自动加入
如果解决,在vc.net中使用API的问题怎样使用sdk中的函数


把GetObjectW undef掉,用的时候直接调ANSI或UNICODE版本。在包含windows.h之后
#undef GetObject


如何实现模拟ctrl+alt+delete三键? (Java J2SE / 基础类 )


java.awt.Robot robot=new java.awt.Robot();
robot.keyPress(java.awt.event.KeyEvent.VK_CONTROL);
robot.keyPress(java.awt.event.KeyEvent.VK_ALT);
robot.keyPress(java.awt.event.KeyEvent.VK_DELETE);

robot.keyRelease(java.awt.event.KeyEvent.VK_DELETE);
robot.keyRelease(java.awt.event.KeyEvent.VK_ALT);
robot.keyRelease(java.awt.event.KeyEvent.VK_CONTROL);
这样写为什么不成功?


It is handled differently by operation systems. For example, in windows 2000 and above, it is registered as a hotkey by winlogon.exe, and is handled in a window on the SAS desktop, not the application desktop. You need to open the SAS desktop, and broadcast a WM_HOTKEY message. However, I doubt you can do this in your java virtual machine.

Reference:
www.codeproject.com/system/alt_control_delete.asp


基于对话框的数据库应用程序问题(VC/MFC 界面 )


我的程序用ado实现。现在想加入一个打印功能。查了一下资料,好象只有视图类有可以加打印。但我的程序是基于对话框的。比方说有个查询功能,结果显示在一个对话矿上,如何将它打印呢?


http://msdn.microsoft.com/library/en-us/dncdev00/html/vc0300.asp


如何获得rm,rmvb,avi,wmv,mp3...等文件的头信息? (专题开发/技术/项目 多媒体/流媒体开发 )


如题,能得到播放时间,视频大小。。。tag信息
有通用的函数吗?
请高手指教,最好有源码,delphi的最好


没有通用的函数。
你可以用Windows Media Format SDK里面的WMReader对象打开Windows Media Player支持的文件,之后读取相关信息。参见http://msdn.microsoft.com/library/en-us/wmform95/htm/aboutthewindowsmediaformatsdk.asp。Real的SDK中有rm、rmvb的格式规范(或者查Real提供给IETF的Internet Draft-RealMedia File Format)。mp3可以去查MPEG-1(ISO 11172)的标准文档。AVI文件中的信息可以用AVIFileInfo来获取。


关于gdi+中Image类显示图片的问题 (VC/MFC 基础类 )


通常我们可以用Image(L"c://1.jpg")来加载显示图片
但如果图片文件包含在其它文件中,需要用CFile来读到缓冲区中,再加载,
以下段代码为什么不能正常显示图片?谢谢!
void CMy1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}

CFile file;
file.Open("c://1.jpg", CFile::modeRead);
int bufSize = (int)file.GetLength();
char *pBuf = new char[bufSize];
file.Read(pBuf, bufSize);
WCHAR *ws = new WCHAR[bufSize];
MultiByteToWideChar(CP_ACP, 0,pBuf, bufSize,ws, bufSize);

Graphics graphics(GetDC()->m_hDC);
Image image(ws);
graphics.DrawImage(&image,0, 0, 400, 300);
}


Use COleStreamFile instead of CFile, and use CreateMemoryStream to create a stream in memory.

COleStreamFile image_stream ;
image_stream.CreateMemoryStream(NULL);
img.Save(image_stream.GetStream(), Gdiplus::ImageFormatBMP);

Before reading from the memory stream returned by GetStream, call SeekToBegin.


高分提问!如何对XML文件排序?100分送上,UP有分!(.NET技术 VB.NET )


两个问题:
比如我有如下XML文档,读取时如何根据level和finishDate对每个shmItem排序?
我尝试使用XPathDocument和XPathNavigator,但是如果xml文档中包含中文,初始化就很慢,请各位指教是怎么回事?

<?xml version="1.0" encoding="gb2312"?>
<!--Powered By Ranran.-->
<shemes>
<shmItem>
<id>632698120068125000</id>
<title>文章一</title>
<level>0</level>
<finishDate>2005-12-10</finishDate>
<tips>中文内容
</tips>
</shmItem>
<shmItem>
<id>632698120068125300</id>
<title>titles23</title>
<level>3</level>
<finishDate>2005-12-10</finishDate>
<tips>some content
</tips>
</shmItem>
</shemes>


<?xml version="1.0" encoding=>指明文档使用的编码。写一个XSLT来转。用XSLT查询XML的时候排序。


工程能够正常修改,使用,但是左边工作区里ClassView下一个对话框的类不见了, FileView里有相应的.cpp.h文件,怎么才能使得那个类重新显示(VC/MFC 基础类 )

VC保存时,文件莫名其妙的没了...


保存文件时,经常有这样的警告“有其他进程正在使用本文件”。一般情况下,忽略警告,第二次保存文件时就没有警告了。在某次保存时,出现警告,多按了几次CTRL+S,结果文件没了。不幸中的万幸,我用FinalData把那个丢失的文件找回来了,原文件里大半是乱码,工程目录下多了个MVCDD.TMP的文件,里面就是丢失的代码,完好。想弄清楚这到底是VC的问题还是VA的问题,或是其他问题。


如果使用的是VC6,而且没有打SP6补丁,那么关闭Norton防火墙,或者升级VC。这个问题的详细资料参考微软知识库文章FIX: "Cannot Save File" Error Message in the Visual C++ IDE http://support.microsoft.com/kb/822856/


如何将asf格式的文件分成包发送到网络上?(专题开发/技术/项目 多媒体/流媒体开发 )


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值