VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板
VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板

目前位置: VCer资源中心 >>> VCer代码
子级分类: C++/MFC基础 Windows界面 网络与通信 图形图象处理 系统通信 数据库 文件系统 硬件/系统调用 组件技术 其它技术
我也来贴上一段经典代码吧!>>>


绘制桌面精灵
 
如此临时创建的区域,由于计算需要很多的时间,所以使得有点闪烁。改进的方法有: 1、利用屏蔽位图进行处理,可以加快时间 2、如果精灵动作不是特别多,图片不是特别大的情况下,直接将所有创建的区域保存下来,不用每次都来创建和删除,这样将快很多,但是也消耗更多的内存。// 关键在于如何创建一个随意形状的窗口 准备一张带有透明色背景(就是背景都是一个颜色,呵呵)的bmp图片 创建与位图兼容的dc。然后创建一个空区域 hr=CreateRectRgn(0,0,0,0); for (i=0;i < 图片宽度-2;i++) { for(j = 0;j< 图片高度-2;j++) { 用dc得到图片i,j处的象素pixel if( pexel !=透明色) { temp=CreateRectRgn(i,j,i+1,j+1); CombineRgn(hr,hr,temp,RGN_OR); DeleteObject(temp); } // 最后用SetWindowRgn函数将窗口形状设置成上面创建的区域的形状 SetWindowRgn(handle,hr,true); DeleteObject(hr); ps:如果有与位图相对应的屏蔽位图,用他们进行光栅 ...
作者:不祥 ISeekYou张贴于2004-05-13 14:55:04.0,共阅读2724次,回复2
全屏显示视图的代码
 
开启全屏显示的代码: void CViewerFrame::FullScreenShow() { GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect; GetWindowRect(&WindowRect); CRect ClientRect; RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect); ClientToScreen(&ClientRect); int nFullWidth=GetSystemMetrics(SM_CXSCREEN); int nFullHeight=GetSystemMetrics(SM_CYSCREEN); m_FullScreenRect.left=WindowRect.left-ClientRect.left-1; m_FullScreenRect.top=WindowRect.top-ClientRect.top-1; m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth+2; m_FullScreenRect.bottom=WindowRect.bottom-Clie ...
作者:不祥 bluejoe张贴于2004-04-24 21:26:56.0,共阅读2925次,回复3
第一次使用
 
...第一次来不太会用这个,
作者:小忆 wjshuiyi张贴于2008-04-15 09:47:39.0,共阅读651次,回复0
最大公约数的求法
 
int mcd(int a, int b) { if( a <= 0 || b <= 0 ) return -1; int max,min; max = a > b ? a : b; min = a + b - max; int temp; //辗转相除 while( min ) { temp = min; min = max % min; max = temp; } return max; }
作者:不祥 bluejoe张贴于2004-02-20 23:47:58.0,共阅读4090次,回复6
CListCtrl与CListView相关代码
 
选择项的问题 双击响应函数里的参数有一个是NM_LISTVIEW * msdn查NMLISTVIEW(把中间那个_去掉)能看到这个结构中有一个成员变量是iItem 0表示第一行,1表示第二行;还有一个iSubItem表示列,0表示双击在第一列 CListCtrl大小图标转换 先要添加控制按纽(大图标,小图标,列表,详细) void OnBig() { LONG lStyle; lStyle = GetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE);//获取当前窗口句并 lStyle&=~ LVS_TYPEMASK;//清除显示方式所在的比特为 lStyle |= LVS_ICON;//设置显示方式 SetWindowLong(m_listCtrl.m_hWnd, GWL_STYLE,lStyle);//设置窗口类型 ...
作者:不祥 jerry张贴于2004-03-10 18:19:36.0,共阅读4730次,回复1
C++ Primer(第4版)习题解答[2]
 
习题4.1 假设get_size是一个没有参数并返回int值的函数,下列哪些定义是非法的?为什么? unsigned buf_size = 1024 (a) int ia[buf_size]; (b) int ia[get_size()]; (c) int ia[4*7-14]; (d) char st[11] = "fundamental" ; 【解答】 (a)非法,buf_size是一个变量,不能用于定义数组的维数(维长度)。 (b)非法,get_size()是函数调用,不是常量表达式,不能用于定义数组的维数(维长度)。 (d)非法,存放字符串"fundamental"的数组必须有12个元素,st只有11个元素。 习题4.2 下列数组的值是什么? string sa[10]; int ia[10]; int main(){ string sa2[10]; int ia2[10]; } 【解答】 sa和sa2为元素类型为string的数组,自动调用string类的默认构造函数将各元素初始化为空字符串;ia为在函数体外定义的内置数组,各元素初始化为0;ia2为在函数体内定义的内置数组,各元素未初始化,其值不确定。 习题4.3 下列哪些定义是错误的? (a) i ...
作者:白乔 bluejoe张贴于2008-02-19 13:33:40.0,共阅读1030次,回复0
C++ Primer(第4版)习题解答
 
习题1.1 查看所用的编译器文档,了解它所用的文件命名规范。编译并运行本节的main程序。 【解答】 一般而言,C++编译器要求待编译的程序保存在文件中。C++程序中一般涉及两类文件:头文件和源文件。大多数系统中,文件的名字由文件名和文件后缀(又称扩展名)组成。文件后缀通常表明文件的类型,如头文件的后缀可以是.h或.hpp等;源文件的后缀可以是.cc或.cpp等,具体的后缀与使用的编译器有关。通常可以通过编译器所提供的联机帮助文档了解其文件命名规范。 习题1.2 修改程序使其返回-1。返回值-1通常作为程序运行失败的指示器。然而,系统不同,如何(甚至是否)报告main函数运行失败也不同。重新编译并再次运行程序,看看你的系统如何处理main函数的运行失败指示器。 【解答】 笔者所使用的Windows操作系统并不报告main函数的运行失败,因此,程序返回-1或返回0在运行效果上没有什么区别。但是,如果在DOS命令提示符方式下运行程序,然后再键入echo %ERRORLEVEL%命令,则系统会显示返回值-1。 习题1.3 编一个程序,在标准输出上打印“Hello, World”。 【解答】 #include<iostream> int main() { std::cout << "Hello, World" << std ...
作者:白乔 bluejoe张贴于2008-02-19 13:31:45.0,共阅读1033次,回复0
【转】设置窗口的透明度
 
... 设置窗口的透明度(win2000以上) ----------------------------------- 第一步 定义功能 typedef BOOL (FAR PASCAL * FUNC1)( HWND hwnd, // handle to the layered window COLORREF crKey, // specifies the color key BYTE bAlpha, // value for the blend function DWORD dwFlags // action ); 第二步 实现代码 在OnInitDialog中加入下列代码(如果在SDI里面,应该是在OnCreat里面添加) ..... HMODULE hModule = GetModuleHandle("user32.dll"); FUNC1 SetLayeredWindowAttributes; SetLayeredWindowAttributes = (FUNC1) GetProcAddress (hModule, _T( "SetLayeredWindowAttributes" ) ); // 设置分层扩展标记 SetWindowLong(GetSafeHwnd(), ...
作者:ohahay ohahay张贴于2007-12-28 19:19:31.0,共阅读991次,回复0
神经元网络实现数字识别
 
/* ============================================================================ 题目:用BP神经网络算法实现数字识别 指导老师:李laoshi 学生:杨 冯 李 日期: 2006-12-30 ******************************************************************************/ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <conio.h> /****************************************************************************** 宏定义 ******************************************************************************/ typedef int BOOL; typedef int ...
作者:蓝天上的我 itcoco05张贴于2007-01-24 21:49:17.0,共阅读3029次,回复4
GDI+路径技术的汉字笔顺求助
 
...我现在在做一个汉字笔顺调整的辅助工具,由于对MFC及GDI+编程不熟悉,想请高手帮忙,具体要求如下: 做一个窗口,上面能输入汉字,点击确定后能按Truetype里的笔顺顺序显示每一个笔画,要求每一个笔画在田字格里面显示,并给每一个笔画按顺序用数组标记。然后还有一个调整笔画的地方,就是可以输入上面定义的数组的标号来真正按笔画顺序输出汉字,当然并不是真正意思上的按笔画输出,是要做出那么个东西来可以调整笔画的顺序,并可以点击保存按钮进行保存,保存的格式不限。
作者:natalie natalie张贴于2007-12-21 16:37:51.0,共阅读827次,回复0
连接ODBC数据源的一段代码
 
CDatabase DB; bool CFreePhoneApp::DatabaseReady() { TCHAR cFilePath[_MAX_PATH]; GetModuleFileName(NULL, cFilePath, _MAX_PATH); m_sModuleFileName = cFilePath; CString sDBFile = m_sModuleFileName; sDBFile.Replace(".exe", ".mdb"); CFileFind Finder; if(!Finder.FindFile(sDBFile)) { ::MessageBox(NULL,"无法找到系统数据库文件!路径如下:\r\n" + sDBFile + "\r\n\r\nFreePhone安装时,将自动创建该文件。建议重新安装。", "致命错误", MB_OK | MB_ICONEXCLAMATION); return false; } CString sDSN; sDSN = "DSN=FreePhone;FileType=Ms Access;DBQ=" + sDBFile + ";MaxScanRows=20"; if(!SQLConfigDataSource(NU ...
作者:不祥 bluejoe张贴于2004-04-23 21:22:28.0,共阅读4354次,回复5
指针参数是如何传递内存的?
 
如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1 中, Test 函数的语句GetMemory(str, 200)并没有使str 获得期望的内存,str 依旧是NULL, 为什么? void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL strcpy(str, "hello"); // 运行错误 } 示例7-4-1 试图用指针参数申请动态内存 高质量C++/C 编程指南,v 1.0 2001 Page 48 of 101 毛病出在函数GetMemory 中。编译器总是要为函数的每个参数制作临时副本,指针 参数p 的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p 的内容,就导致 参数p 的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p 申请 了新的内存,只是把_p 所指的内存地址改变了,但是p 丝毫未变。所以函数GetMemory 并不能输出任何东西。事实上,每执行一次GetMemory 就会泄露一块内存,因为没有用 free 释放内存。 如果非得要用指针参数去申请内存,那么应该改 ...
作者:wlx weilaixi张贴于2007-07-02 12:54:19.0,共阅读1629次,回复2
求助:八叉树源代码
 
...我想用八叉树对三维散乱点云进行分割然后精简,自己编了很久都没编出来,想问一下,大家谁有源代码啊,可不可以共享一下,谢谢。
作者:阿珂 likezhen821张贴于2007-12-10 23:24:10.0,共阅读837次,回复0
文件类型及相关打开程序的注册
 
譬如:注册文件类型.pln,为其指定文件类型图标,并使用当前程序作为默认打开程序。 调用如下: RegisterShellFileType(".pln", "Plan.Documnet", "规划文件", 1); 其中参数的含义: filterExt:文件后缀名 fileTypeID:文件类型ID fileTypeDesc:文件描述 iconIndex:文件图标在当前程序中的索引BOOL CPlanningApp::RegisterShellFileType(CString filterExt, CString fileTypeID, CString fileTypeDesc, int iconIndex) { CString strPathName, strTemp; TCHAR szLongPathName[_MAX_PATH]; TCHAR szShortPathName[_MAX_PATH]; ::GetModuleFileName(this->m_hInstance, szLongPathName, _MAX_PATH); if (::GetShortPathName(szLongPathName, szShortPathName, _MAX_PATH) == 0) { // rare failure case (es ...
作者:不祥 bluejoe张贴于2007-01-16 13:50:13.0,共阅读2443次,回复1
隐藏任务栏
 
ShowWindow(FindWindow(TEXT("Shell_TrayWnd"),NULL),SW_HIDE);
作者:不祥 jerry张贴于2004-05-11 20:45:57.0,共阅读3131次,回复3
如何得到系统帮助手型鼠标形状
 
HCURSOR LoadHelpCursor() { CString strWndDir; GetWindowsDirectory(strWndDir.GetBuffer(MAX_PATH), MAX_PATH); strWndDir.ReleaseBuffer(); strWndDir += _T("\\winhlp32.exe"); HMODULE hModule = LoadLibrary(strWndDir); HCURSOR hCursor=NULL; if (hModule) { hCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106)); FreeLibrary(hModule); } return hCursor; }
作者:不祥 xler张贴于2004-05-11 15:04:02.0,共阅读2510次,回复2
vc中操作Xml--使用CMarkup类
 
DotNet中使用xml相对比较轻松,在vc中操作xml,有些繁琐。最近在网络上得知CMarkup比较好用,于是试了下,还好,就把部分例子写出来。以后有时间的话,再写清楚点。 //----------UserInfo.xml-------------- <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <UserID>luo</UserID> <UserID>lin</UserID> </UserInfo> 1. 生成UserInfo.xml CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); xml.AddElem("UserInfo"); xml.IntoElem(); xml.AddElem("UserID","luo"); xml.AddElem("UserID","lin"); xml.OutOfElem(); xml.Save("UserInfo.xml"); 2. 浏览特定元素 //----查看所有UserID---- CMarkup xml; xml.Load("UserInfo.xml"); BOOL b ...
作者:不祥 bluejoe张贴于2006-11-10 16:44:04.0,共阅读6825次,回复7
三种常见中文内码的转换方法
 
转篇文章给你,很好用的,直接使用函数,不用设置简体繁体对照表 三种常见中文内码的转换方法   我们平时常见的三种中文内码是:GB2312(简体中文)、GBK、BIG5(繁体中文)。网上有很多中文内码的专用转换工具。我们碰到由于内码不一致而导致的乱麻问题,用这些工具可以进行相互转换。但论坛里经常有人问如何在自己的程序中集成这些功能呢?本文将介绍如何利用 Windows 提供的API 函数来实现。转换涉及到的 API 函数主要有两个:MultiByteToWideChar 和 WideCharToMultiByte。有关这两个函数的详细文档请参考 MSDN,本文不再赘述。   本文将介绍四个转换函数分别实现如下的转换: * Big5 => GBK * GBK => Big5 * GB2312 => GBK * GBK => GB2312   有关 GB2312 =〉BIG5 的转换以及 BIG5 =〉GB2312 的转换可以通过 GBK 间接实现。先将 GB2312 转成 GBK,再将 GBK 转成 BIG5,反之亦然。当然也可以自己实现它们之间的直接转换。 // Big5 => GBK: void BIG52GBK(char *szBuf) {   if(!strcmp(szBuf, ""))   ...
作者:edog bluejoe张贴于2007-01-29 10:38:34.0,共阅读2583次,回复1
自己写屏幕保护程序
 
主要实现一个ScreenSaverProc过程函数,在处理WM_PAINT消息时绘制内容,也可以通过定时器等加入其他的花样。 需要加入scrnsave.lib库和scrnsave.h头、 另外需要实现一个BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 函数来处理屏保配置对话框,一个BOOL WINAPI RegisterDialogClasses(HANDLE hInst)函数注册。 LRESULT CALLBACK ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_PAINT: { // 在此绘制需要的内容。 break; } case WM_DESTROY: PostQuitMessage(0); break; default: // 调用系统的缺省处理函数 return DefScreenSaverProc hWnd,message,wParam,lParam); } ...
作者:不祥 ISeekYou张贴于2004-05-13 14:26:03.0,共阅读2529次,回复2
在MFC中应用CTreeCtrl控件的技巧
 
首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL(名字随便给一个)。然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和Cdialog211,并在MFC_TreeCRTLDlg.CPP文件中包含dialog11.h和dialog211.h两个头文件。再导入几个资源图标作为树形控件节点的图标及装饰面板。最后在主面板上添加一个CTreeCtrl控件,ID为默认,并在ClassWizard中添加它的一个变量,命名为m_mytree。   接着,我们进行具体代码编写。   我们必须在CMFC_TreeCRTLDlg类中加入这些变量和函数 CDialog * m_treePages[2]; CString node_name; BOOL InitMytree();   我们还要在CMFC_TreeCRTLDlg类的构造函数中为m_treePages[2]分配空间, m_treePages[0]=new Cdialog11; m_treePages[1]=new Cdialog211; InitMytree()函数为m_mytree的初始化过程 BOOL CMFC_TreeCRTLDlg::Init ...
作者:不祥 qiaoyongbo张贴于2007-07-20 01:28:34.0,共阅读1992次,回复2

页次: 2/6页 记录总数105 9 7 [ 1 2 3 4 5 6 7 8 9 10 ] 8 :