根據實驗所得,一次Doulbe Click包含 一次Down、一次Double Click以及兩次Up訊息。
利用Spy++得到的結果也是一樣。順序是"Down -> Up -> Double Click -> Up" 。
經過實際測試程式後,發現應該是Windows根據滑鼠第二次Click跟上一次Click的位置有無相同與時間有無接近來決定發出哪一個訊息,如果都兩個條件都成立則第二次Click就不會發出Button Down訊息,而改發DoubleClick訊息,但Button Up訊息則不受影響。所以說,如果視窗接收到Double Click訊息,就表示前面一定已經發出一個Button Down訊息。
星期一, 1月 28, 2008
星期三, 1月 23, 2008
[VC] 使用技巧
1.如何快速地規範程式碼縮排格式
選中所需要規範的程式碼,按shift+F8
2. 如何在Release狀態下進行調試
Project->Setting=>ProjectSetting對話框,選擇Release狀態。C/C++標籤中的Category選General,Optimizations選Disable(Debug),Debut info選Program Database。在Link標籤中選中Generate debug info復選框。
註:只是一個介乎Debug合Release的中間狀態,所有的ASSERT、VERIFY都不起作用,函數調用方式已經是真正的調用,而不查表,但是這種狀態下QuickWatch、調用隊列跟蹤功能仍然有效,和Debug版一樣。
選中所需要規範的程式碼,按shift+F8
2. 如何在Release狀態下進行調試
Project->Setting=>ProjectSetting對話框,選擇Release狀態。C/C++標籤中的Category選General,Optimizations選Disable(Debug),Debut info選Program Database。在Link標籤中選中Generate debug info復選框。
註:只是一個介乎Debug合Release的中間狀態,所有的ASSERT、VERIFY都不起作用,函數調用方式已經是真正的調用,而不查表,但是這種狀態下QuickWatch、調用隊列跟蹤功能仍然有效,和Debug版一樣。
星期二, 1月 22, 2008
[VC6] 如何解決一直重新全部編譯的問題
此問題的發生,在於鏈結動作出現問題。這是因為出現了未來文件(修改時間和修改時間比系統時間晚)的緣故。可以這樣處理:找到工程文件夾下的debug目錄,將創建和修改時間都比系統時間的文件全部刪除,然後再重新「Rebuild All」一次。
星期五, 12月 21, 2007
如何合併被Outlook Express分割的信件
1.將被分割的信件內容完整複製到一個新的純文字檔,檔名依照順序命名為1.dat 2.dat .....。
2.然後新增一個批次檔,內容為
copy /b 1.dat+2.dat all.eml.
3.執行批次檔。
然後就可以看到一個新檔案all.eml。打開它,你就可以看到原來的信件內容了。
星期三, 7月 18, 2007
[MFC] Disable 關閉按鈕
有三種方法
1. 重載 CMainFrame::PreTranslateMessage 如下
缺點:按鈕還是顯示Enable
優點:可屏蔽雙擊標題列
(m_pMainWnd->GetSystemMenu(FALSE))->RemoveMenu(SC_CLOSE,MF_BYCOMMAND);
優點:簡單, 標題列按鈕會顯示Disable
缺點: 只能屏蔽系統選單及標題列
3.::SetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE,::GetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE) |CS_NOCLOSE);
優點:簡單, 標題列按鈕會顯示Disable
缺點:系統選單不會消失
1. 重載 CMainFrame::PreTranslateMessage 如下
缺點:按鈕還是顯示Enable
優點:可屏蔽雙擊標題列
2.加在初始化函式
if(pMsg->hwnd == this->m_hWnd )
{
if (pMsg->message == WM_SYSCOMMAND)
{
if (pMsg->wParam == SC_MINIMIZE)
return true;
if (pMsg->wParam == SC_CLOSE)
return true;
}
if (pMsg->message == WM_NCLBUTTONDBLCLK)
return true;
if (pMsg->message == WM_NCLBUTTONDOWN)
{
if (pMsg->wParam == HTMINBUTTON)
return true;
if (pMsg->wParam == HTSIZE)
return true;
if (pMsg->wParam == HTCLOSE)
return true;
}
}
(m_pMainWnd->GetSystemMenu(FALSE))->RemoveMenu(SC_CLOSE,MF_BYCOMMAND);
優點:簡單, 標題列按鈕會顯示Disable
缺點: 只能屏蔽系統選單及標題列
3.::SetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE,::GetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE) |CS_NOCLOSE);
優點:簡單, 標題列按鈕會顯示Disable
缺點:系統選單不會消失
星期一, 7月 16, 2007
星期五, 6月 15, 2007
[MFC] Image/ Color Bottons 連結整理
要讓一個程式好看又好用,有時漂亮的按鈕不可少。以下為從兩個國外有名的VC程式站抓來的相關連結。因為實在懶得再一個一個去找了。
1. Colored buttons
2. Enhanced Colored Button
3. ImageTextButton
4. Colored Buttons
5. Image Button Control
6. Transparant Image Button (BMP, GIF, JPG...)
1. Colored buttons
2. Enhanced Colored Button
3. ImageTextButton
4. Colored Buttons
5. Image Button Control
6. Transparant Image Button (BMP, GIF, JPG...)
星期二, 6月 05, 2007
[VC6] Cannot add new member
有時在Resource View中,點擊控制項要增加函式時,會出現此訊息。
1.修正此錯誤的方法為,在類別檢視器中尋找有無重複類別,如果有就移除掉。如果沒有,也移除掉。
2.刪除相對應的cpp、h檔,再重新加入。
3.打開Class Wizard,重新對應Class及cpp/h檔。
4.重新開啟Project。
1.修正此錯誤的方法為,在類別檢視器中尋找有無重複類別,如果有就移除掉。如果沒有,也移除掉。
2.刪除相對應的cpp、h檔,再重新加入。
3.打開Class Wizard,重新對應Class及cpp/h檔。
4.重新開啟Project。
星期三, 5月 30, 2007
[VC] 快捷鍵整理
Ctrl+O :Open
Ctrl+P :Print
Ctrl+N :New
Ctrl+Shift+F2 :清除所有書籤
F2 :上一個書籤
Shift+F2 :上一個書籤
Alt+F2 :編輯書籤
Ctrl+F2 :添加/刪除一個書籤
F12 :Goto definition
Shift+F12 :Goto reference
Ctrl+P :Print
Ctrl+N :New
Ctrl+Shift+F2 :清除所有書籤
F2 :上一個書籤
Shift+F2 :上一個書籤
Alt+F2 :編輯書籤
Ctrl+F2 :添加/刪除一個書籤
F12 :Goto definition
Shift+F12 :Goto reference
星期五, 5月 25, 2007
星期四, 5月 24, 2007
[MFC] 抓取全螢幕 存成 BMP
//***********************************************************//
//抓取全螢幕 存成 BMP
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=GetSystemMetrics(SM_CXSCREEN);//螢幕寬
int Height=GetSystemMetrics(SM_CYSCREEN);//螢幕高
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
static int filecount=0;
CString name;
name.Format("pict%04d.bmp",filecount++);
name="C:\\IDP3\\"+name;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
nCount++;
}
//GlobalFreePtr(lpData);
GlobalFree((HGLOBAL)lpData);
UpdateData(FALSE);
星期二, 12月 06, 2005
Saint Nicolas in Nancy Part 2

今天下午南錫同樣有慶祝Saint Niacolas的活動,是下午四點半的花車遊行。跟昨天一樣,我們又是幾乎準時抵達,雖然因為是繞街遊行,不用人擠人,但好像全南錫人都跑出來玩似的。雖然天氣不但寒冷,還下著雨。但每個人的興致都還是很高。電車公司也很配合,不但今天免費就連本來星期天每隔二十分鐘一班的班次,也在遊行開事前的兩個小時調整為七分鐘一班。
果不其然,我們到的時候街邊早已站滿了人,還好我夠高,找個前面人矮的地方還是可以看,不過就苦了學妹跟Rick學長。因為我們站的地方是遊行的後半段,所以雖然遊行早已經開始,我們還是等了近四十分鐘才看到第一輛花車。在等的途中還碰巧遇到兩各台灣女生,一各是畢業於中央大學後又來南錫念大學,另一位則是來攻讀碩士。不過因為時間不湊巧,在隨後我們往另一邊繼續看花車時跟她們失散了,沒有留下聯絡方式。實在可惜,這裡雖然可以遇到很多華人,不過都是大陸人,這兩位還是近兩各月來第一次遇到的台灣人。她們看到我們時也顯得十分驚訝跟感動。因為其中一位很早就來,另一位則剛來,因為都是女生。所以平常也沒有出去哪邊玩。幸運的是,我們這一群不但人多,而且有經驗比較豐富的學長觀照我們,讓我們這一趟法國之旅不會跟在台灣一樣,一晃就過去。
話說回來,這裡的花車是用牽引機拖的,我想是因為這裡沒有拖車的關係,要拖得動這麼的物體又不能移動太快,我想在務農的法國,牽引機是最好的選擇。除了花車外其中穿插兩隊儀隊,雖然因為天氣寒冷,女生們身上都蓋著厚重的外套,不過長腿一樣清晰可見。另外也有幾隊樂隊,一對小丑跟雜耍還有三四隊穿著奇特服裝的隊伍。因為我們在遊行的後半段,雖然可以看到有幾個在花車的小孩已經累翻了,但大部份依然熱情的群眾揮舞著雙手。而其中也有人四處發送糖果,當然我們也有跟著拿,學妹的戰果是最豐碩的。此外,為了營造下雪的氣氛,中間還有兩台車,一台用紙片,另一台則用泡沫。這兩台車經過時,四周的群眾都一起興奮起來。
而說到小孩子,不但花車上面有小孩,就連樂隊跟儀隊也同樣有小孩參加。我覺得這裡的人很喜歡讓小孩參加各種活動,就算是下雨天,一樣會把小還帶出來。雖然今天不像昨天一樣有很感動的地方,不過能讓心理的壓力都舒展開來,也是一件很不錯的事。如果以後有機會再來法國,南錫的這兩天一定會排在我的行程表中。
Saint Nicolas in Nancy Part 1

今天南錫慶祝 Saint Nicolas 晚上七點半在史特拉斯廣場舉行煙火秀,廣場上到處擠滿了人,因為實在太多人,廣場還被迫將一邊的門關起來。平常真的很少看到這們多人站在同一各地方。雖然因為去大賣場買東西,不過幸好時間還來的及,選到沒有關的門,剛好擠進去。七點四十幾分時,廣場的燈同時熄滅。前半段用說故事的方式述說Nicolas的事蹟,除了用鐳射光將圖案打在兩邊的建築物上,中間也穿插一些煙火。故事結束時,Nicolas 站在吊車上,在煙霧中出現,隨後權杖冒出火花,然後他跟大家大招呼後就下去了。正當我以為這樣就結束時,其實還有,因為接著音樂響起,一段接一段的煙火秀就登場了。
如果有看過日月潭煙火節的一定知道,法國隊是冠軍隊,但是在台灣放的少一樣重要的東西,就是配樂,當煙火搭配著節奏,跟著激昂的音樂釋放出來時,真的,我認為這才是稱上是真正的煙火秀。那時在我腦海中,台灣的國慶煙火已經被我從腦海中永遠的排在末位了。雖然國慶煙火花了很多錢,但我只感到只能用財大氣粗來形容。法國的煙火才能稱之為藝術。
如果以後有機會來南錫,可以趁這幾天來,可以說真的不虛此行。
星期四, 11月 03, 2005
星期三, 8月 24, 2005
魔獸封測包
星期二, 8月 16, 2005
Daniel's 步落格 賀開張
第一篇不知道要Po什麼,雖然本Blog 主旨在於旅遊,不過空太久也不好。
不過話雖如此,我個人不喜歡花太多時間在打字上面。總覺得很浪費時間。想充版面又沒有照片 。所以就到此為止吧。
不過話雖如此,我個人不喜歡花太多時間在打字上面。總覺得很浪費時間。想充版面又沒有照片 。所以就到此為止吧。
訂閱:
意見 (Atom)


