星期一, 1月 28, 2008

[MFC] 一次Double Click 所包含的滑鼠訊息到底是哪些?

根據實驗所得,一次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月 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版一樣。

星期二, 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
優點:可屏蔽雙擊標題列

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;
}
}

2.加在初始化函式
(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
缺點:系統選單不會消失

星期五, 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...)

星期二, 6月 05, 2007

[VC6] Cannot add new member

有時在Resource View中,點擊控制項要增加函式時,會出現此訊息。
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


星期四, 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

南錫夜景一

南錫市政府前廣場的夜景,用腳架拍的。當然不只這一張,不過這張還不錯看就先放上來囉。 Posted by Picasa

星期三, 8月 24, 2005

魔獸封測包

標題就是最近一直在玩的東西,當初只是覺得無聊才去排隊拿封測包。
沒想到一玩下去覺得還挺好玩的,感覺比其他的線上遊戲多了一點東西。 不過現在不用錢,以後要花錢的話,可能就不會繼續玩下去了。不過說實在的,
我比較希望玻璃渣趕快出暗黑三代啊!我要玩暗黑三啊,不過應該要換電腦才能玩吧,現在玩魔獸世界就已經很痛苦了說,這還是多虧了學校的電腦才能玩這麼久。感想就是,玩遊戲不要玩太久,買電腦要買筆電。^_^

星期二, 8月 16, 2005

Daniel's 步落格 賀開張

第一篇不知道要Po什麼,雖然本Blog 主旨在於旅遊,不過空太久也不好。
不過話雖如此,我個人不喜歡花太多時間在打字上面。總覺得很浪費時間。想充版面又沒有照片 。所以就到此為止吧。