 |
绘制桌面精灵
|
|
| |
| 如此临时创建的区域,由于计算需要很多的时间,所以使得有点闪烁。改进的方法有:
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,共阅读2041次,回复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,共阅读2217次,回复3次 |
|
|
 |
第一次使用
|
|
| |
| ...第一次来不太会用这个,
|
|
| 作者:小忆 wjshuiyi张贴于2008-04-15 09:47:39.0,共阅读93次,回复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,共阅读3302次,回复6次 |
|
|
 |
求 《Visual C++数字图像处理 第二版源码》
|
|
| |
| 请问谁有这个源代码能否传给我?hzwen_07@163.com QQ:310984233 非常感谢
|
|
| 作者:林川 hzw1987张贴于2008-03-22 16:34:08.0,共阅读195次,回复0次 |
|
|
 |
初学者请教个问题
|
|
| |
| 刚学vc++,我新建了一个mfc,取名"冒泡程序",我如何在冒泡程序.cpp中添加 OnLButtonDown()函数呢?我没有使用vc++.net
|
|
| 作者:leryang leryang张贴于2008-03-10 21:30:09.0,共阅读169次,回复3次 |
|
|
 |
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,共阅读3692次,回复1次 |
|
|
 |
[原创]内存文件读写类CMemoryFile(内存中模拟目录和文件)
|
|
| |
| 项目中常常需要将中间结果进行保存, 以供后续步骤进行处理. 如果以临时文件的方式往往容易"暴露"中间机密信息. 同时,文件IO读写也较浪费时间(说到这里,不得不BS一下windows的文件系统,当一个目录下的文件数目超过10000时,读写文件相当慢,Linux却没有这样的问题).
面对上面情况,本人想到了内存机制:
如果中间结果数据不超过2G(32位windows的内存地址上限).可以在内存中模拟一个文件系统.将这些信息以"内存文件"形式保存在"内存",同时也能提供"内存目录"(或"内存Db")支持.
下面是"内存文件类"的使用示例(使用上和一般的文件类没任何区别,只是不在磁盘上生成文件):
CMemoryFile pfile;
pfile.fopen( "c:/www/1235.bxk", "wb" );
pfile.fprintf( "aaa\nbbb\n" );
pfile.fclose();
CMemoryFile pfile0;
pfile0.fopen( "c:/www/1234.bxk", "wb" );
pfile0.fprintf( "aaa\nbbb\n" );
pfile0.fclose();
...
|
|
| 作者:成长的蚊子 highshow张贴于2008-02-22 14:00:15.0,共阅读304次,回复1次 |
|
|
 |
VC6.0中使用ADO操作Access数据库
|
|
| |
| ...VC6.0中使用ADO操作Access数据库
ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题,如何掌握ADO这种数据库访问技术ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序(AdoRWAccess),这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:
在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。
。
下面让我们看看ADO数据库访问技术使用的基本步骤及方法:
首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.d ...
|
|
| 作者:Adding qiaoyongbo张贴于2007-12-21 15:44:35.0,共阅读528次,回复3次 |
|
|
 |
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,共阅读372次,回复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,共阅读417次,回复0次 |
|
|
 |
手机短信PDU编码与解码
|
|
| |
| //将短信转化为待发送编码
//AT+CMGS=021
//0011000D91683176116125F0000801064F60597DFF01
//021 TPDU长度
//PDU:SMSC地址+TPDU
//00 服务中心号码(SMSC地址)
//11
//00 TP-MR(TP-Message-Reference)
//0D91683176116125F0 TP-DA 收信人手机号码
//00 TP-PID(TP-Protocol-Identifier)
//08 TP-DCS(TP-Data-Coding-Scheme)
//01 TP-VP(TP-Validy-Period)
//06 TP-UDL 短信长度
//4F60597DFF01 TP-UD 你好!
//服务中心号码、收信人手机号码格式
//0D Address-Length 地址长度
//91 Type-of-Address 地址类型
// Bits 7
// 1
// Bits 6 5 4
// 0 0 0 Unknown1
// 0 0 1 International number2
// 0 1 0 National number3
// 1 1 1 Reserved for extension
// Bits 3 2 ...
|
|
| 作者:不祥 bluejoe张贴于2004-04-25 11:15:41.0,共阅读5695次,回复2次 |
|
|
 |
【转】设置窗口的透明度
|
|
| |
| ...
设置窗口的透明度(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,共阅读340次,回复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,共阅读2437次,回复4次 |
|
|
 |
GDI+路径技术的汉字笔顺求助
|
|
| |
| ...我现在在做一个汉字笔顺调整的辅助工具,由于对MFC及GDI+编程不熟悉,想请高手帮忙,具体要求如下: 做一个窗口,上面能输入汉字,点击确定后能按Truetype里的笔顺顺序显示每一个笔画,要求每一个笔画在田字格里面显示,并给每一个笔画按顺序用数组标记。然后还有一个调整笔画的地方,就是可以输入上面定义的数组的标号来真正按笔画顺序输出汉字,当然并不是真正意思上的按笔画输出,是要做出那么个东西来可以调整笔画的顺序,并可以点击保存按钮进行保存,保存的格式不限。
|
|
| 作者:natalie natalie张贴于2007-12-21 16:37:51.0,共阅读267次,回复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,共阅读3631次,回复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,共阅读1099次,回复2次 |
|
|
 |
求助:八叉树源代码
|
|
| |
| ...我想用八叉树对三维散乱点云进行分割然后精简,自己编了很久都没编出来,想问一下,大家谁有源代码啊,可不可以共享一下,谢谢。
|
|
| 作者:阿珂 likezhen821张贴于2007-12-10 23:24:10.0,共阅读338次,回复0次 |
|
|
 |
vc2005 中 CString转化int,int 转化CString
|
|
| |
| CString转int方法:
CString h;
int a=_ttoi(h);
int转化CString方法:
int a=1263;
CString h;
h.Format(_T("%d"),a);
|
|
| 作者:junxi junxi张贴于2007-06-21 17:30:14.0,共阅读1485次,回复1次 |
|
|
 |
文件类型及相关打开程序的注册
|
|
| |
| 譬如:注册文件类型.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,共阅读1777次,回复1次 |
|
|