@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);
re: 轉:一個女孩的就業之路[未登錄] Sandy 2009-06-17 10:15
這是一篇轉載的文章,看過了,很長,但是觸動了心里某個柔弱的地方。
上研以來,一直在公司里做事,從一開始的各種雜事,到后來慢慢接觸項目。從好奇到現在有些疲倦,發現人是一個愛偷懶的動物。現在想著快點離開吧,所以才有了為實習爭取的勇氣,結果失敗了。心里也有一些憤憤然。
昨天看到一個女孩的回復,心里還是蠻有感動的。
人是需要繼續努力的,在一個環境里,不要抱怨,不要認為自己有何特殊,有何卓爾不同。還是要踏踏實實的做一個我,無論給予了什么樣的機會,我相信都會是一個奇跡。
re: 最近多了很多勇氣[未登錄] sandy 2009-06-15 18:59
幾番爭取還是失敗了!
但是,如果在遇到,我還會努力.
re: 轉:使應用程序只能運行一個實例 Sandy 2009-06-12 13:59
@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
項目龐大了,這個方法是不是就不可行了?
re: 工作線程的相關消息循環 Sandy 2009-04-16 09:59
不錯,受益了.
@飛飄飄
你好,我今天還專門試了一下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; 這個是吧~
其他的沒看出來.
謝謝你發表的這些文章。我求了很久了
re: 空struct為何有大小?(求解釋) sandy 2007-04-15 12:31
int func(char s[5]);
{
cout<
//數的參數在傳遞的時候系統處理為一個指針,所
//以sizeof(s)實際上為求指針的大小。
return 1;
}
sizeof(func(“1234”))=4//因為func的返回類型為int,所以相當于
//求sizeof(int).