
Windows编程
安嘉
这个作者很懒,什么都没留下…
展开
-
VC开机启动代码
//写入注册表,开机自启动 HKEY hKey; //找到系统的启动项 LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; //打开启动项Key long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE转载 2013-07-24 10:51:53 · 566 阅读 · 0 评论 -
COM原理及应用----命名和绑定技术
1、COM对象的创建方法 客户程序可以通过CoCreateInstance函数创建COM,在创建之前必须知道对象的一些基本情况,比如对象的CLSID或者对象的ProgID。 另一种对象创建方法是通过名字对象(moniker)创建,就是利用对象命名和绑定技术(即名字技术)。2、名字技术的地位 名字技术算不上COM的基本核心,但也是COM体系结构转载 2013-05-27 16:47:30 · 768 阅读 · 0 评论 -
VC中IP控件(CIPAsressCtr)字符串IP的赋值与取值
1)把CString表示的IP地址写到IP Address里面 CString strIP="192.168.0.17"; DWORD dwIP=ntohl(inet_addr(strIP)); m_IP.SetAddress(dwIP); inet_addr 函数是将一个点分十进制的IP转换成一个长整型数(u_long类型)。。。。参数:字符串,一个点分十进制的IP地址原创 2013-05-13 16:18:06 · 917 阅读 · 0 评论 -
VC中BeginWaitCursor()和EndWaitCursor()函数
BeginWaitCursor()是CCmdTarget类的函数, 函数原型:void BeginWaitCursor(); 功能简介:本函数用于显示沙漏光标(通常在命令执行较长时采用)。 框架调用本函数显示沙漏光标,告诉用户系统忙。 在不是处理单个消息时, BeginWaitCursor()可能不像其它函数那样有效,例如 OnSet原创 2013-05-13 16:01:36 · 707 阅读 · 0 评论 -
VS2010 配置DirectShow开发环境
下载DirectShow由于现在directShow没有和direcxtx一起发布,而是和windows sdk 打包发布了,可以到官网下载最新的windows sdk 开发包。windows sdk 地址:http://www.microsoft.com/download/en/details.aspx?id=8442按系统类型下载。GRMSDK_EN_DVD.iso x86GR原创 2013-05-25 11:47:27 · 1070 阅读 · 0 评论 -
#ifndef的作用
看了网上别人的文章,以前对ifndef的含义一直有些困惑。现在终于明白了。以下文件在"os_cpu.h"中。#ifndef __OS_CPU_H__#define __OS_CPU_H__ /*中间有许多定义啦声明啦!;;*/#endif /*__OS_CPU_H__*/这样,在编译阶段(ifndef是在编译阶段起作用滴!)假设有两个文件同时include了这个文件转载 2013-05-24 16:41:02 · 468 阅读 · 0 评论 -
VC程序中打开一个另一个程序并关闭
需要要用到SHELLEXECUTEINFO结构体作为参数和ShellExecuteEx和TerminateProcess这俩函数。 具体代码为:SHELLEXECUTEINFO m_FlvServer;ZeroMemory(&m_FlvServer,sizeof(m_FlvServer)); m_FlvServer.cbSize = sizeof(m_FlvServer);原创 2013-05-11 09:48:09 · 1151 阅读 · 0 评论 -
VC CFileDialog打开文件对话框获取文件路径
http://blog.sina.com.cn/s/blog_63e60e9c0100rubl.html CFileDialog构造函数 view sourceprint?1CFileDialog:CFileDialog(BOOL bOpenFileDialog,2LPCTSTR转载 2013-05-10 15:50:26 · 2365 阅读 · 0 评论 -
CString 转 CHAR *
CString m_RunText6; CHAR *str6 = (LPSTR)(LPCTSTR)m_RunText6;原创 2013-05-10 15:15:17 · 477 阅读 · 0 评论 -
TCHAR 拼接字符串
TCHAR s1=_T("ai");TCHAR *s2=_T("wo");TCHAR *s3=_T("ni");int len1=lstrlen(s1);int len2=lstrlen(s2);int len3=lstrlen(s3);TCHAR *str=new TCHAR[len1+len2+len3+1];str[0]=_T('\0');lstrca原创 2013-05-14 17:56:02 · 7242 阅读 · 0 评论 -
VC 获取程序当前路径
CString版:CString CClientApp::ReturnPath() { CString sPath; GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH); sPath.ReleaseBuffer ();原创 2013-05-14 17:49:53 · 618 阅读 · 0 评论 -
MFC网络事件通知
MFC网络编程中的网络事件通知 摘自MSDN:This article describes the notification functions in the socket classes. These member functions are callback functions that the framework calls to notify your socket obj原创 2013-07-11 14:57:34 · 915 阅读 · 0 评论 -
VOID和PVOID
P表示指针,那么PVOID表示:void * ---无类型指针所有指针都是一个32位二进制数(32位系统下),这个意义上说所有指针都是一样的,它们的大小一样,用于指向内存中的某处地址,然而指针为什么要有类型之分呢?答案是指针偏移。例如p为一个指针,它指向内存某处地址,那么p+1(或者写p[1])是什么意思呢?答案是p指向地址的后面那个地址,那么后面多少呢?这就看指针类型了,假如它是字符指转载 2013-07-11 16:09:59 · 525 阅读 · 0 评论 -
sockaddr_in , sockaddr , in_addr区别
sockaddr_in , sockaddr , in_addr区别struct sockaddr { unsigned short sa_family; char sa_data[14]; }; 上面是通用的socket地址,具体到Interne转载 2013-07-08 10:38:37 · 448 阅读 · 0 评论 -
LIST控件双击出现编辑框
首先要响应通知消息事件:NM_DBLCLK NM_CLICK双击 出现编辑框 单击 保存 void CxmlEditDlg::OnNMDblclkListXml(NMHDR *pNMHDR, LRESULT *pResult){ //------------------ Invalidate(); LPN原创 2013-06-14 14:23:06 · 915 阅读 · 0 评论 -
VC 控件 之 List
1)添加 列 m_list.InsertColumn(0, _T("NAME"), LVCFMT_LEFT, 80); // 添加 列 最后数字 表示 列宽 m_list.InsertColumn(1, _T("State"), LVCFMT_LEFT, 160); 2) 显示内容 m_list.SetItemTe转载 2013-06-14 13:39:50 · 633 阅读 · 0 评论 -
删除目录
BOOL DeleteDirectory(LPCTSTR DirName){ CFileFind tempFind; //声明一个CFileFind类变量,以用来搜索 char tempFileFind[200]; //用于定义搜索格式 sprintf(tempFileFind,"%s\\*.*",DirName); //匹配格式为*.*,即该目录下的所有文件 BOOL原创 2013-06-01 10:32:36 · 437 阅读 · 0 评论 -
视频开发的基础知识
通常显示器分隔行扫描和逐行扫描两种扫描方式。逐行扫描相对于隔行扫描是一种先进的扫描方式,它是指显示屏显示图像进行扫描时,从屏幕左上角的第一行开始逐行进行,整个图像扫描一次完成。因此图像显示画面闪烁小,显示效果好。目前先进的显示器大都采用逐行扫描方式。隔行扫描就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。由于视觉原创 2013-06-08 16:38:37 · 789 阅读 · 0 评论 -
FTP 上传相关知识
要联接到FTP服务器,需要两个步骤,首先必须创建一个CInternetSession对象,用类CInterSession创建并初始化一个或几个同时存在的Internet会话(session),并描述与代理服务器的连接(如果有必要的话),如果在程序运行期间需要保持与Internet的连接,可以创建一个CInternetSession对象作为类CWinApp的成员。 MFC中的类CFtpCon转载 2013-05-30 13:39:00 · 971 阅读 · 0 评论 -
VC操作XML相关知识
http://www.cnblogs.com/sadier/articles/99875.html http://blog.youkuaiyun.com/max2008/article/details/1647613 首先需要先安装MSXML4运行库还需要导入一个MSXML4.dll再就是在调用前初始化COM库::CoInitialize(NULL); CoUniniti转载 2013-05-09 09:35:16 · 513 阅读 · 0 评论 -
VS2010 中CString转LPCTSTR的问题
今天碰到一个问题,虽说已解决,但是不知道为什么。。。只知道是字符串的问题 如果有一个函数的参数需要LPCTSTR类型,把CString强制转换到LPCTSTR有可能不会成功 但如果直接传LPCTSTR,不通过CString,这样就正确 不知道原因,网上很多帖子说上述两个类型可以通用。。。。 哪位大神讲讲,,在VS2010下,是设置的多字节字符集原创 2013-05-09 20:13:41 · 4363 阅读 · 0 评论 -
C++转义字符\ 输出引号
在字符串中 /作为转义字符。。 当要输出的是“\”时,写两个\\当要输出的是“时,写\" 如此不难理解为什么程序中路径一般是这种形式:C:\\Mylog\\test.txt原创 2013-05-09 19:44:33 · 1723 阅读 · 0 评论 -
VC对话框加载工具栏的相关细节
1:首先要自己做一个工具栏的图片,需要几个按钮就做成几个一排,之间不需要有间隙。2:然后再做一个工具栏,这个通过VC自己弄行了。ID:ID_TOOLBAR这样的定义变量:CToolBar m_wndtoolbar; CBitmap bmp; CImageList m_itoolbar;//工具栏显示的一行图片 void CDigitalSwitcherDlg::L原创 2013-04-27 15:33:40 · 680 阅读 · 0 评论 -
处理工具提示的TTN_NEEDTEXT通知
这个我只在对话框添加工具栏之后,当鼠标经过后让它有提示信息时用到的。以下是摘抄:1 首先要为使用 TTN_NEEDTEXT 通知 的每个控件提供一个字符串。 就是添加String字符串资源2 添加消息映射 ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText) 函数原型:afx_msg BOOL OnTt转载 2013-04-27 15:27:08 · 2377 阅读 · 0 评论 -
NMHDR 结构
NMHDR=Notify Message Handler 通知消息 NMHDR 结构包含下列成员: typedef struct tagNMHDR { HWND hnwdFrom:////handle of control sending message UINT idF转载 2013-04-27 15:02:09 · 1911 阅读 · 0 评论 -
VC弹console窗口
头文件 #include #include #include 代码void InitConsole(){ int nRet= 0; FILE* fp; AllocConsole(); nRet= _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT); fp = _fdope原创 2013-04-23 16:32:28 · 653 阅读 · 0 评论 -
C++文件操作
文件操作头文件:类型:ifstream ofstream 字符串流操作头文件类型: istringstream char[]数组转string 只需要 str=char;1:从文件中一个单词一个单词的读: string str; ifstream in; in.open("c://MyLog//test.txt"); whil原创 2013-04-03 14:42:03 · 430 阅读 · 0 评论 -
windows SDK 检测键盘事件
1:定义一个数组bool keys[256];2: 在消息响应函数是里设置这两个:case WM_KEYDOWN: // Is A Key Being Held Down? { keys[wParam] = TRUE; // If So, Mark It As TRUE return 0; // Jump Back }原创 2013-04-02 10:05:55 · 568 阅读 · 0 评论 -
CString之GetBuffer()
转载自:http://hayyoungsue.blog.163.com/blog/static/1238409772010214002734/LPTSTR GetBuffer( int nMinBufLength ) 这个函数是CString 的一个比较实用的函数,请看如下示例:GetBuffer(int nMinBufLength);的参数问题一直比较困扰人,网站的资料还像也不是太好给的转载 2013-03-18 10:37:14 · 828 阅读 · 0 评论 -
程序只运行一个实例方法
CString strClassName = "AppName "; HANDLE m_hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, strClassName); if(m_hMutex == NULL) { m_hMutex = CreateMutex(NULL, TRUE原创 2013-03-18 09:59:54 · 450 阅读 · 0 评论 -
VC得到选择的文件夹的路径
CString GetPath(){ CString strPath = ""; BROWSEINFO bInfo; ZeroMemory(&bInfo, sizeof(bInfo)); bInfo.hwndOwner = m_hWnd; bInfo.lpszTitle = _T("请选择路径: "); bInfo.ulFlags = BIF_RETURNONLYFSD原创 2013-04-28 14:36:26 · 591 阅读 · 0 评论 -
获取系统的音频输出设备并添加到一个组合框中
测试,这段代码完整的应该为:#include #pragma comment(lib,"winmm") 添加组合框控件:IDIDC_COMBO_DEVICELIST,绑定控制成员变量:m_DeviceListBOOL CAudioDeviceEnumDlg::OnInitDialog(){//************转载 2013-05-17 18:12:53 · 702 阅读 · 0 评论 -
CMarkup XML解析器的使用
之前一直用MSXML解析器,但需要提前安装,不利于集成到项目中。。。 创建一个XML文档,并添加一个根结点:m_xml.SetDoc( "\r\n" ); m_xml.AddElem( "xx" ); m_xml.IntoElem(); m_xml.OutOfElem(); m_xml.Save(".\\WebServer\\Service.xml"); 加原创 2013-05-22 09:10:27 · 565 阅读 · 0 评论 -
IDL接口定义语言
也叫“接口描述语言”(Interface Description Language),是一个描述软件组件接口的语言规范。IDL用中立语言的方式进行描述,能使软件组件(不同语言编写的)间相互通信。IDL通常用于RPC(Remote Procedure Call,远程过程调用)软件。IDL提供了一个“桥”来连接不同的系统。基于IDL的软件系统包括:Sun公司的ONC RPC,T转载 2013-05-21 15:06:35 · 890 阅读 · 0 评论 -
IDL和MIDL
IDL是接口定义语言。MIDL是Microsoft的IDL编译器。在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。一个例子:import “unknown.idl” ///用于将其他IDL文件中的定义包含到当前文件中///Interface IX[ ///注意是[ ]不是 {}object, ///所定义的接口是一个COM转载 2013-05-21 16:42:04 · 1116 阅读 · 0 评论 -
COM组件注册真相
一个COM组件在使用前必须首先注册。所谓“注册”,也就是向系统注册表的相应位置写入一些数据。这些数据可以完成guid与Dll的绝对路径的一一对应,也就是说可以帮助程序通过guid找到Dll的位置。 GUID概念: GUID(globally unique identifier)是一个128位的数。用于保证每一个接口和组件在时间和空间上都是全球唯一的一个标识符。为保证空间转载 2013-05-21 15:17:51 · 779 阅读 · 0 评论 -
COM:IUnknown、IClassFactory、IDispatch
http://blog.youkuaiyun.com/benny5609/article/details/2481599 COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是转载 2013-05-21 15:56:34 · 690 阅读 · 0 评论 -
公共语言运行时 CLR
公共语言运行时CLR叫做公共语言运行时(Common Language Runtime)。它是所有.NET应用程序运行时环境,是所有.NET应用程序都使用的编程基础,它如同一个支持.NET Framework,运行一个.NET程序也必须安装。CLR也可以看作一个在执行时管理代码的代理,管理代码是CLR的基本原则,能够被管理的代码称为托管代码,反之称为非托管代码。CLR包含两个组成部分,CLS(转载 2013-05-19 15:13:10 · 1316 阅读 · 0 评论 -
MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
第一个是响应打开菜单,处理这个菜单的状态,比如选中、变灰等第二个是响应菜单的点击事件,即功能比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时,对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_UPDATE_COMMAND_UI响应函数里.UPDATE_COM转载 2013-05-06 13:37:14 · 621 阅读 · 0 评论 -
基于对话框程序用ON_UPDATE_COMMAND_UI更新菜单
从命令用户界面处理函数(Command UI handler)改变菜单状态(启用/禁用,选择/取消选择,更改文字)在由对话框处理时没有正常工作。比如:void CTestDlg::OnUpdateFileExit(CCmdUI* pCmdUI){ . pCmdUI->SetCheck(TRUE); // 没有文字前显示选定标记. pCmdUI->SetRa转载 2013-05-06 13:29:53 · 611 阅读 · 0 评论