博文
VC界面显示图片(BMP) (2007-05-18 12:03:00)
摘要: VC界面显示图片(BMP)
1、通过点击浏览按钮选择BMP图像文件
点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录。
关键代码如下:
void CShowBMPDlg::OnButtonSelectiamge()
...{
char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter );
if(dlg.DoModal() == IDOK)
...{
strPathName = dlg.GetPathName();
LoadShowBMPFile(strPathName);
m_hBitmap = BufferToHBITMAP();
Invalidate();
}
}2、加载BMP文件到内存
通过得到的BMP图像文件路径目录,加载BMP图像文件到内存中。
关键代码如下:
BOOL CShowBMPDlg::LoadShowBMPFile(const char *pPathname)
...{
CFile file;
&......
CFileDialog详解(2007-05-18 11:11:00)
摘要:CFileDialog::CFileDialog
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName =
NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter =
NULL, CWnd* pParentWnd = NULL );
BOOL bOpenFileDialog
该参数为指定true是Open,false是Save as 对话框。
LPCTSTR lpszDefExt
添加到没有扩展名文件上的扩展名
LPCTSTR lpszFileName
应该初始选定的文件名
DWORD dwFlags
自定义标志,当要进行多选的时候添加OFN_ALLOWMULTISELECT
LPCTSTR lpszFilter
File of type中的过滤参数
例如:
CString lpszFilter="位图(*.bmp)|*.bmp|\
全部文件(*.*)|*.*||";
CWnd* pParentWnd
父窗口的指针。
CFileDialog::GetFileName 得到打开文件的名字
For example, GetFileName will return "TEXT.DAT" for the file C:\FILES\TEXT.DAT.
CFileDialog::GetFileTitle 得到打开文件的标题,不含扩展名。
For example, GetFileTitle will return "TEXT" for the file C:\FILES\TEXT.DAT.
CFileDialog::GetFileExt 得到打开文件的扩展名。
For example, if the name of the file entered is DATA.TXT, GetFileExt returns "TXT".
CFileDialog::GetPathName 得到......
IT程序员35岁后的三条出路(2007-05-11 17:42:00)
摘要:IT行业是众多年轻人的职业梦想,然而,一旦身入其中却发觉没有想像中那么美好。被称为IT蓝领的编程员,工作强度大,像个编码“机器”;技术更新换代快,饭碗不稳定。随着年龄的增长,IT编程员该何去何从。
程序员的困惑:我该何去何从
32岁的Smith(化名)已算是IT行业的元老了。
大学时代的他,有2/3的时间是在校园微机房里度过的,当时,他疯狂地迷上了电脑。大学毕业后,Smith早早地被一家IT业著名的跨国公司录用,担任程序员。
刚进IT行业时,Smith有股火一般的热情,参与了不少项目,而且都成功了。公司对他也很器重,付给他的薪水在当时的同学中可算是天价。在后来的IT泡沫中,Smith的公司也还算稳定。
一晃8年过去了。期间,Smith曾换了两家公司,虽说薪水越来越高,但他却越来越困惑。今年他已经32岁了,以前不觉得,但现在,他感觉程序员的工作强度太大,自己一直在超负荷运转,工作状态就一个字:累。况且,由于这一行的特殊性,从业者必须不断地学习。32岁的程序员虽然技术老到,但毕竟在学习能力、反应速度、工作效率上渐渐地开始和年轻人有了差距,Smith觉得后生可畏,感觉自己的竞争力在缩水。
何况,现在IT业不比以往,面对大量“廉价”的职场新人,老板不仅可以挑肥拣瘦,还可以随时让薪水已涨到一定水平的老人“走人”。Smith的同事Tom(化名)就是这样被公司“请”走的。Smith担心:不知何时,这根裁员的大棒就要挥到自己的头上。目前,虽然自己薪水不低,但“天下没有白吃的午餐”,得到的多付出也就更多。而且业界还有这样的传统,过了35岁,IT编程员就有转岗的可能。未来该何去何从,Smith深感困惑。
寻求职业发展的“第二春”
Smith的处境代表了IT行业一个群体性的问题。有关职业规划师经过对Smith 的处境分析指出,IT人才市场的整体年龄状况趋于年轻化,22岁以下的择业者占总体比例的71百分号,而35岁以上的只占10百分号,年轻的人才给市场注入了活力,也使得IT行业的竞争更加白热化——人才流动性很大,岗位相对不够稳定。
程序员是个属于年轻人的职业,“Smith们”如果没有在职业生涯最初的5年或8年时间里得到晋升或实现转型,随着年龄的增长,在技术更新的大潮......
在VC使用GDI+的配置方法(2007-05-10 23:20:00)
摘要:唉,最近实在是感叹于自己的落伍. 这样一个令人兴奋的GDI+,却被我雪藏了很久,都不想用它.(可能是因为之前有GDI+漏洞的问题吧). 今天研究了一下才发现, 它恰恰为我提供了每天朝思幕想的一些功能, 如提供了一个Alpha透明度通道, 提供了字体和图形的反走样功能. 那还等什么呢? 赶快加入到GDI+的行列来吧. 哈哈. 不过, GDI+并不像原有的GDI那样,直接就可以使用.如果想要开发这样的程序,需要先按下面的配置一下.
如果你是Visual C++ 6.0的用户:
1. 下载GDI+的库. 运行GDI+需要一个GdiPlus.dll的文件; 开发GDI+的程序,还需要GdiPlus.lib和GdiPlus*.h文件.这些都可以在微软的网站上下到.(搜一下windows sdk,都出来了)
2. 将以上的文件放在你的工程中的一个目录,然后在stdafx.h中包含#include "GdiPlus.h" (这就取决于你放置那几个文件的地方了)
3. 在"工程"->"选项"里,添加一个链接库 GdiPlus.lib
如果你是Visual Studio 2003的用户:
不必去下载GDI+库了,因为VS2003已经自带了.
只要在stdafx.h文件中包括#include <gdiplus.h>,
并且要在#include <gdiplus.h>语句之前加:#define ULONG_PTR void* ,否则报错。
并在项目->选项->链接器->输入 中填上需要的lib库, gdiplus.lib即可
在程序的App类里,添加一个成员变量: ULONG_PTR m_gdiplusToken;
在App的InitInstance函数里, 在"INT_PTR nResponse = dlg.DoModal();"之前,添加下面的语句:
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
在"INT_PT......
VC中Windows常用控件的创建和使用(2007-05-09 18:34:00)
摘要:VC中Windows常用控件的创建和使用
引言
本文将要介绍的Windows控件指的是Windows系统预定义的标准控件,如按钮控件、编辑控件和列表控件等。这些预定义控件实际是一种特殊的
子窗口,主要供用户同应用程序的交互之用。和普通窗口类一样,每一个预定义控件也都是由所属的窗口类规定了自身的外观属性和具有的功能。Windows
系统通过预定义的方式提供了一些标准控件的窗口类名,在程序设计时只需通过调用CreateWindow()函数或CreateWindowEx()函
数并将预定义的窗口类名作为参数传入即可创建出相应的控件。当用户通过屏幕对象同控件进行交互操作时,控件将以"通知消息"的形式向父窗口发送
WM_COMMAND通知消息,消息的wParam参数含有控制标识,在lPamam参数的高位字和低位字中分别含有通知码和控制句柄,由父窗口完成对
消息的响应处理。
按钮类控件
按钮类控件是窗口类名被系统预定义为BUTTON的一类控件,该类控件具有十余种不同的窗口风格,包含了普通的下压式按钮、单选按钮、复选按钮和分
组框等多种常用的按钮形式。具体情况列表如下:
按钮风格 说明
BS_AUTOCHECKBOX 同复选按钮类似,点击一下选中,再次点击取消。
BS_AUTORADIOBUTTON 同单选按钮类似,点击后选中标志将从同组的其他单选按钮处移到当前选项。
BS_AUTO3STATE 同三态复选按钮类似,只是在用户点击后改变状态。
BS_CHECKBOX 复选按钮
BS_DEFPUSHBUTTON 下压按钮,具有较黑的边框。
BS_GROUPBOX 分组框
BS_LEFTTEXT 同单选按钮或复选按钮配合使用,标题将显示在左侧。
BS_OWNERDRAW 可创建一个拥有者自绘按钮。
BS_PUSHBUTTON 普通下压按钮
BS_RADIOBUTTON 单选按钮
BS_3STATE 三态复选按钮
以上按钮风格通常需要同窗口风格共同使用,由CreateWindow()函数或MFC的CButton类成员函数Create()完成对按钮的创
建:
// 按钮类窗口风格
DWORD STYLE......
利用Shell API显示出"桌面"和相应的图标(2007-05-08 23:24:00)
摘要:/****************************************************************************
*
* FUNCTION: ShowDeskImages()
*
* PURPOSE: Show the icon and the title of the desk.
*
****************************************************************************/
HTREEITEM CShellTree::ShowDeskImages()
{
ITEMIDLIST *pidlDeskTop;
SHFILEINFO fi={0};
HIMAGELIST hImageList;
if(S_OK!=SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidlDeskTop))
{
return FALSE;
}
hImageList=(HIMAGELIST)SHGetFileInfo(( LPCTSTR)pidlDeskTop,0U,&fi,
siz......
如何更改IE浏览器”收藏夹”的默认路径(2007-05-07 10:54:00)
摘要: 相信大家都有遇到这样的问题,自己喜爱的网页添加到收藏夹中由于系统损坏进不了造成收藏夹中的网页丢失,重装系统后又要重新再查找喜爱的网页造成很大的麻烦,现只需将收藏夹的默认路径更改到其它分区即可,具体操作如下:
1、 点击“开始”选择“运行”,在打开框中输入regedit ,点击确定,即可打开注册表编辑器
2、 展开以下位置:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Current Version \ Explorer \ UserShell Folders ,将右窗口中的Favorites键值设为其他路径,如:E:\ Favorites
3、 在E盘创建文件夹,文件名为:Favorites,并将C盘收藏夹中的文件复制到E盘的Favorites中即可.
如何自定义 Firefox 书签的存放路径?
打开firefox,地址栏输入about:config
右键新建一个字符串,名为 browser.bookmarks.file
然后输入字串值为“新路径名/书签文件名”即可。
比如 D:/My bookmarks/bookmarks.html......
非黄钻解决QQ相册"上传空间已满"的限制(2007-05-05 13:32:00)
摘要:
非黄钻用户有人说每天只允许上传10万张图片,上传满了就会出现“今天上传的总空间已满,请明天再传……”的提示。
解决的方法:
1.点一下QQ空间的“日志”;
2.写日志插入图象,点“写日志”;
3.点一下“插入图象”,看下图
4,选择“从相册中选一张或上传一张新图”,点“浏览”选择图片。
5.点“提交”,哈哈,传成功。
很简单吧,这下你会问,图象到那里了呢?是不是到我的相册里了呢?回答是NO。我们还要做几步。继续看,打开“QQ相册”,点一下贴图相册。
进入以后点一下照片管理,在你上传的图片打个钩,移动到你的相片册里就可以了。是不是很简单呀。
一般在上午不用这个方法就可以上传,如果下午的时候就得用这个方法上传了。......
探讨基于P2P技术开发视频会议软件(2007-04-29 13:41:00)
摘要:摘要】本文旨在剖析开发基于P2P技术开发视频会议软件相关主要技术,并给出一个简单的例子。
一、 引言
我相信多数人听说过微软的NetMeeting,甚至有人直接使用过;而如今,众多的网虫沉迷于视频聊天。这类软件是怎样开发出来的呢?本文中,让我们来共同剖析开发基于P2P技术开发视频会议软件相关的主要技术,并给出一个简明的例子。本示例应用程序允许LAN/Intranet上的任何两个人举行视频会议。
凭直觉我们就会知道,开发这一类软件所涉及的主要问题,就是视频帧的大尺寸将极大地影响数据的传输质量。因而,这类软件的性能也主要依赖于视频帧编码和解码的质量。为此,在本例中,我们选用的是较快速的H.263编码器库,该库具有相当好的压缩比率,从而有效地克服了我们在图像传输中的速度矛盾。
请注意,有兴趣的读者可稍微修改本文中的示例程序以应用于因特网环境中。
二、 音频的录制与播放问题
这一部分的开发相对简单。其一,这种功能的API从Windows 3.1开始就已经提供(winmm.lib+mmsystem.h);其二,如今借助于方便的因特网,我们完全可以搜到现成的包装类。在本文中,我们直接借用了提供了两个现成的RecordSound与PlaySound类。这两个类都派生于CWinThread类,用户可以“死搬硬套”地使用它们。下面代码展示了这两个类的使用,具体包装类定义请参考下载源码文件。
//创建并启动录音线程
record=new RecordSound(this);
record->CreateThread();
//创建并启动播放线程
play=new PlaySound1(this);
play->CreateThread();
//开始录制
record->PostThreadMessage(WM_RECORDSOUND_STARTRECORDING,0,0);
//开始播放
play->PostThreadMessage(WM_PLAYSOUND_STARTPLAYING,0,0);
下一个盖茨,让中国来造?(2007-04-27 21:40:00)
摘要: 微软公司董事长比尔·盖茨在博鳌亚洲论坛2007年年会开幕式上说,下一个成功的“盖茨”将来自亚洲。比尔·盖茨认为,一个人拥有的机会在很大程度上是他身处哪个国家所决定的,一个人的机遇很大程度是由教育程度决定的,亚洲的发展是惊人的,他每次到一些地方访问,亲历这些变化都感到非常惊奇。“在美国,他们说下一位比尔·盖茨将会出现在哪里?我想下一个伟大的成功将会来自亚洲。”此番预言反映了盖茨对未来亚洲科技和国力的预期,让身为亚洲人的中国人备感振奋,一时间我国各大网络、报纸等众多媒体纷纷刊载这一预言便是明证。然而,在兴奋之余,笔者却总有一种忧虑在心头:下一个盖茨能幸运地出自中国吗?
参加博鳌亚洲论坛的盖茨抛出下一次盖茨在亚洲的言论,尽管有为微软公司扩展亚洲市场而讨好亚洲人之嫌,但基本上还是基于近年来中国、印度、日本等亚洲国家互联网、通信等IT业火爆发展的态势而作出的精辟、前瞻预测。如果正在中国访问的盖茨真要“拍马屁”的话,倒不如直接说“下一个盖茨将出自中国”,或者补充一句“最有可能来自中国”。盖茨真要这样说,其实也是有着充分的现实依据和民众基础的。2005年和2006年中国IT业增长速度达到10%,而世界的平均值则是5.9%。去年底,美国权威调查机构佐格比国际民意调查所对美国民众进行了一项调查——下一个比尔·盖茨已经出生,那么,这个科技“转世灵童”正在哪个国家成长?27%的被调查者认为,下一个盖茨式的高科技资本家会来自中国,22%的人认为将是日本人,21%的人将出自美国,只有13%的被调查者选择了印度。
盖茨应该知道美国的这项民意调查,但奇怪的是盖茨却并没有说下一次盖茨将出自中国。个中原因,除了直接点名哪个国家将会得罪其它国家、模糊的预测具有更高的准确概率之外,更主要的原因恐怕在于对下一个盖茨诞生在中国还心存疑虑。疑虑是不确定性的表现。坦率地讲,就中国IT业的竞争力以及发展环境而言,中国能否诞生盖茨这样的IT创新人才的确存在着很大的内生缺陷和外在不确定性。3月底,世界经济论坛公布了《2006-2007年全球信息技术报告》,在对122个国家的网络普及度和IT业发展指数的排名中,中国连续第二次下滑,跌至第59名;新加坡名列第3,是惟一进入前1......