春暖花开
雪化了,花开了,春天来了
posts - 149,comments - 125,trackbacks - 0
共2页: 1 2 
@passby

呵呵,这个问题我最后也没有解决。只是加了相关的判断。如果你有更好的办法,不妨分享一下。
re: mobile上监控文件的操作 Sandy 2009-12-22 15:09
@kkk

好像不可以。要是防止复制、发送操作什么的,可以用一下钩子吧。
re: 感谢所有帮助我的人 Sandy 2009-12-22 15:08
谢谢
re: UML画图工具 Sandy 2009-08-21 08:54
@missdeer

呵呵,这个我倒忘了,主要是别人给我的,没有注意收费。有时间用一下StarUML一下
re: “1”的个数 Sandy 2009-08-04 11:42
@codespy

这个我还真的没有想到.
你说的是这种么?
int numOnesInBinary3(int num)
{
num = num - ((num >> 1) & 0x55555555);
num = (num & 0x33333333) + ((num >> 2) & 0x33333333);
num = (num+ (num >> 4)) & 0x0F0F0F0F;
num = num + (num >> 8);
num = num + (num >> 16);
return num & 0x0000003F;
}

我是在http://bvcat007.javaeye.com/blog/203577中看到的,原理是利用二分法,两两一组相加,之后四个四个一组相加,接着八个八个,最后就得到各位之和了。

他还提供了一种是
int numOnesInBinary4(int num)
{
unsigned n;
n = (num >> 1) & 033333333333;
num = num - n;
n = (n >> 1) & 033333333333;
num = num - n;
num = (num + (num >> 3)) & 030707070707;
num = num% 63;

return num;
}
首先是将二进制各位三个一组,求出每组中1的个数,然后相邻两组归并,得到六个一组的1的个数,最后很巧妙的用除63取余得到了结果。因为2^6 = 64,也就是说 x_0 + x_1 * 64 + x_2 * 64 * 64 = x_0 + x_1 + x_2 (mod 63),这里的等号表示同余。

@tzzhwj

在指定的路径上创建一个文件夹,可以利用CreateDirectory,具体使用可以查一下SDK。
比如我们在根目录下创建一个名为New的文件夹,就可以这样写:
CreateDirectory(_T("\\New"), NULL);
这是一篇转载的文章,看过了,很长,但是触动了心里某个柔弱的地方。

上研以来,一直在公司里做事,从一开始的各种杂事,到后来慢慢接触项目。从好奇到现在有些疲倦,发现人是一个爱偷懒的动物。现在想着快点离开吧,所以才有了为实习争取的勇气,结果失败了。心里也有一些愤愤然。

昨天看到一个女孩的回复,心里还是蛮有感动的。

人是需要继续努力的,在一个环境里,不要抱怨,不要认为自己有何特殊,有何卓尔不同。还是要踏踏实实的做一个我,无论给予了什么样的机会,我相信都会是一个奇迹。
几番争取还是失败了!

但是,如果在遇到,我还会努力.
@Brandon
应该是一样的吧,可以借助信号量.
如果是非窗口的,就不用将窗口置前了,直接就退出了.

我是这样理解的,不知道可行么?
@beautymind
hi, 你说的是不是将发送的特殊短信移到自己建的目录下,这个我还真的没有尝试过.
不过理论上是不是可以这样去想,按照短信存储的相关信息,将其存储到数据库中,这样,我们自己就可以查看相应的短信信息,而不在系统的收件箱里面出现.
如果还原回去的话,就把记录的相关信息插入到系统的文件夹里.

这是我自己的理解.
@qingyuzhui

这个我建议你看一下SDK。里面有一些对返回值的说明。

这里我对SmsSendMessage说明一下它的返回值,

如果SmsSendMessage执行成功的话,它会返回S_OK ,表示该方法成功执行。
如果返回的值为E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, and E_FAIL,或者为其他,可以查看一下SMS Specific Errors 和 SMS General Errors。

如果你觉得不是很明白的话,可以给我发邮件:qiyanhd@163.com


@飞飘飘
在真机上运行需要安装同步软件,如果你是xp系统的话,安装Active Sync同步软件, 在调试的时候,选择相应平台的device; 如果是vista系统的话,安装Microsoft Windows Mobile 设备中心6.1,即drvupdate-x86.exe.

如果只是简单的试验一下这个程序的话,安装同步软件后,只需把那个exe文件拷贝到手机上,点击该文件即可.
re: C++ 代码技巧 (续 02) Sandy 2009-04-16 10:01
项目庞大了,这个方法是不是就不可行了?
不错,受益了.
@飞飘飘
你好,我今天还专门试了一下wm6中HelloSMS的那个例子,没有异常啊!
WM5和WM6中两个例子的代码基本上是相同的。

在这种情况下,是不是指将PS_MESSAGE_CLASS1替换成PS_MESSAGE_CLASSUNSPECIFIED。

我分别在模拟器和真机上试验过,似乎也没有什么异常,所以还请赐教。

我也在vs2005下尝试了,编译的时候会有以下错误
error C2248: 'A::base' : cannot access private typedef declared in class 'A'

A中定义的时候,需要把
typedef A base; 定义为public.
DWORD nNumberOfBytesToWrite, // 数据包含的字符串的个数

这个是bytes数, Number of bytes to write to the file

以前没有怎么注意,如果存储TCHAR类型的时候, 就需要注意一下了,需要长度*2的.
@战天意
只要包含
#include <windows.h>
就可以了.

re: 对话框的属性问题 Sandy 2009-03-19 09:20
@陈梓瀚(vczh)

这样啊,非常感谢.

我想明白了。
@Herb
现在也只有SmartPhone有这个问题.
使用微软移动数字签名有个特点,已经签名的事件永不过期;
所以应该不会涉及过期的问题吧
@凤凰羽翼
这个我也是看例子这么写的。你这么一说,我还专门查了一下。
http://www.cic.tsinghua.edu.cn/jdx/book4/dlz.htm
中提到加锁与解锁,它是这样说的 :
“不管是可移动对象还是可删除对象,在它分配后其内存句柄是不变的,它是内存对象的恒定引用。但是,应用程序无法通过内存句柄直接存取内存对象,应用程序要存取内存对象还必须获得它的近地址,这通过调用LocalLock函数实现。LocalLock函数将局部内存对象暂时固定在局部堆的某一位置,并返回该地址的近地址值,此地址可供应用程序存取内存对象使用,它在应用程序调用 LocalUnlock函数解锁此内存对象之前有效。”

它的例子如果这样用的话,那么在
FormatMessage中调用系统LocalAlloc分配,需要对内存对象进行加锁与解锁。

呵呵,这只是我的理解而已。

另:你也毕业生?
对啊,不过我明年才会毕业呢!
re: WINCE下如何实现发短信 Sandy 2009-03-09 19:30
弄错了一个参数
PS_MESSAGE_CLASSUNSPECIFIED

这个参数设置以后,短信发出去了,但是却引起了tmail.exe的异常

不知道什么原因造成的
re: WINCE下如何实现发短信 Sandy 2009-03-09 17:23
Thank you!
通过看你的介绍把我的一个问题解决了!

不胜感激啊!
re: C++的一些基础知识 Sandy 2009-03-05 19:00
这里简单介绍一下以下两种情况的异同:
(1)B private 继承A
(2)A是B的一个私有成员的异同

你好,对于第二中情况,我不是很懂,A是B的一个私有成员的异同
class A
{
};

class B: private A
{
};

这是第一种情况,

那么第二种是什么情形呢?
re: 疑问: 如何释放内存?? Sandy 2009-02-24 13:24
查了一下SetProcessWorkingSetSize

http://www.vbgood.com/viewthread.php?tid=46136&extra=&page=3
里面有关于这个函数的激烈讨论,大多数人也都认同
“因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用.如果你强制使用该方法来设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换.”

还有两篇文章,是
windows平台一个程序究竟占用多少内存?
http://blog.csdn.net/jaminwm/archive/2006/11/18/1394993.aspx

关于 SetProcessWorkingSetSize 和内存释放
http://hi.baidu.com/taobaoshoping/blog/item/a1f6baf52d523a21bd3109f5.html

看来还需要慎用该函数。

此外,我连用的机会都没有!我是想在windows mobile上来实现释放内存来实现优化系统的功能。然后他却没有这个函数。

不过,谢谢大家指点。

有建议继续提!
@深邃者
呵呵,好.一起研究
re: 疑问: 如何释放内存?? Sandy 2009-02-24 09:29
@微妙的平衡
谢谢,我尝试一下
re: 疑问: 如何释放内存?? Sandy 2009-02-24 09:29
@gussing
《windows internal》是不是Windows核心编程呢?

还有申请一块很大的内存,是指虚拟内存,还是物理内存呢?

现在有些更疑惑了.
@megax
谢谢!
让我明白了一个小知识。
程序的读和写都是自己控制的,所以我在写文件的时候,没有必要进行字符串。读文件的时候也按照相应的字符读取即可。所以我的代码使用最初的代码就可以了。
不过谢谢了。
@__ay
谢谢!
我尝试了CreateFile的第五个参数,改变了一下,好像不可以.用GetLastError,错误值是32,另一个程序正在使用此文件,进程无法访问。似乎这种错误下,不易进行操作。我是要在文件不存在的情况下进行创建,如果存在也是完全覆盖。所以使用了CREATE_ALWAYS。
OpenFile在mobile中好似不支持,在mobile中他利用CreateFile来打开文件的,参数可以是OPEN_EXISTING或OPEN_ALWAYS。
呵呵,谢谢各位指点.

debug vector allocator与release vector allocator不是一个东西。



太好了,这个很不错
re: 再谈LoadString Sandy 2008-12-18 20:05
仔细想了想,如果用上面这个方法,势必要用到动态分配字符串数组,我不是很熟悉字符串数组如何实现动态增长.(如果有大侠知道的话,请指点一二).如果是采用New和Delete的话,则需要不断的New和Delete,可能这个显示中的概率比较小,string table里面字符串的长度也是有限制的.但这个方法确保了不会出现异常.
而我昨天所用的LoadString(hInstance, IDS_STR, NULL, 0),则可能会不稳定.需要人为的去进行设置一下.

所以个人认为,如果知道字符串的大概长度的话,这两种方法都不可取,如果你资源的文件可能涉及多语言和国际化的话,就需要考虑一下这两种方法.
采取哪种,看你了
re: LoadString的一些小用法 Sandy 2008-12-18 08:28
@万连文
这个我还真的没有想到.谢谢提醒.我自己也封装了一个,可是用起来比较麻烦,我去看看CString的LoadString怎么实现的.
re: 回调函数和函数指针 Sandy 2008-12-14 16:55
@jmchxy
说的很对。在windows系统的窗口处理本身就是回调函数,虽然天天在用,对其机制不是很了解。所以jmchxy的补充让我很受益。
谢谢!
re: I wish sandy 2007-05-06 18:56
呵呵~(表示开心的习惯)
千万不要冲动~装系统是最让我郁闷的事~我曾经深受其害!!
在D盘建立crt_getc.txt,输入dsfdsgfdhdshgjtreter
#include <stdio.h>
#include<process.h>
int main()
{
char buffer[81];
int i, ch;
FILE* fp;

// Read a single line from the file "crt_getc.txt".

fopen_s(&fp, "D:\crt_getc.txt", "r");
if (!fp)
{
printf("Failed to open file crt_getc.txt.\n");
exit(1);
}

for (i = 0; (i < 80) && ((ch = getc(fp)) != EOF)
&& (ch != '\n'); i++)
{
buffer[i] = (char) ch;
}

// Terminate string with a null character
buffer[i] = '\0';
printf( "Input was: %s\n", buffer);
fclose(fp);

}
运行结果:
Input was: dsfdsgfdhdshgjtreter
请按任意键继续. . .
关于getc()详见随笔“C语言中关于文件的一些操作”
getch()和getche()都是在输入一个字符的之后就立刻执行下面语句而不需要等到输入一个回车才结束。

#include<stdio.h>
#include<conio.h>

int main()
{
char ch;
printf("请输入一个字符:");
ch=getch();
printf("ch=%c\n",ch);
}
测试结果:
请输入一个字符:ch=d
请按任意键继续. . .
//使用getch();我输入的是d,但在屏幕上根本就看不到我输入的是什么,程序是直接把d这个字符赋给ch了,然后顺序执行printf("ch=%c\n",ch);语句。
我把程序改一下,把getch()改为getche()
#include<stdio.h>
#include<conio.h>

int main()
{
char ch;
printf("请输入一个字符:");
ch=getche();
printf("\nch=%c\n",ch);
}
请输入一个字符:g
ch=g
请按任意键继续. . .
这次屏幕上有回显我输入的g
re: 请 教 sandy 2007-04-27 11:03
for(j=0;j<5;j++)
for(i=j;i<5-j;i++)
if(a[i]>a[i+1])
这里出问题了
当j=0,i=4时,a[i+1]是哪个元素啊~这时不是越界了。
所以我感觉应该是这样写:
template <typename T>
void sort(T v[],int size)
{
for(int i = 0;i < size;++i)
for(int j = i;j < size - 1-i;++j)
if(a[j]>a[j+1])
swap(a[j],a[j+1]);//标准库里好像有这个函数
}

用模板写就省很多功夫了
哈哈~~
当时我还以为是这一项里面有分的小项呢~~
re: 打算学习算法[未登录] Sandy 2007-04-26 11:28
呵呵,楼主在注释里面写得很清楚啊
"*Description: It uses recursive to enumerate all cases. ”
int num TimesConsulted; 这个是吧~
其他的没看出来.
谢谢你发表的这些文章。我求了很久了
int func(char s[5]);
{
cout<
//数的参数在传递的时候系统处理为一个指针,所
//以sizeof(s)实际上为求指针的大小。
return 1;
}
sizeof(func(“1234”))=4//因为func的返回类型为int,所以相当于
//求sizeof(int).
共2页: 1 2