2012-07-09 54 views
0

因此,爲了把事情說清楚,我只是指出,有三種不同的方法到c開發Windows應用程序++。的Windows API建立一個事件

  1. 的Windows API。這是基本的界面和最費力的。
  2. MFC
  3. Windows窗體與CLR

所以,是的,我想這個做硬盤的方式,在Windows API的方式。我已經瞭解基礎知識並制定了工作計劃。

我的問題是這樣的:

case WM_KEYDOWN: 
    rect2.top += 10; 
    rect2.bottom += 10; 
    InvalidateRect(hWnd, NULL, TRUE); 
    return 0; 

我只知道一個鍵一次,而且不知道怎麼有點特殊,或許向下鍵。另外,如何手動建立只需在MFC或CLR中雙擊的事件。我希望你們會回答並感謝你。

+2

所有消息得到參數,可以即_wParam_和_lParam_ – 2012-07-09 05:21:12

+1

當使用這個API,你需要查找的東西**很多**。 ['WM_KEYDOWN'(http://msdn.microsoft.com/en-us/library/windows/desktop/ms646280(V = vs.85)的.aspx)爲您提供了對[虛擬鍵代碼(HTTP一推: //msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx)。至於窗口消息,雷蒙德陳指出,在他的博客上(爲什麼)'WPARAM'通常用於整數值,而'LPARAM'爲指針,從而簡化了回憶了一下。 – chris 2012-07-09 05:21:22

+0

你檢查了MSDN嗎? http://msdn.microsoft.com/en-us/library/windows/desktop/ms646280(v=vs.85).aspx'wparam'包含關鍵代碼。 – Naveen 2012-07-09 05:22:25

回答

1

你有一個概述,並在「Using Keyboard Input」的一些例子。正如評論中所述,處理鍵盤事件可能並不明顯,具體取決於您想要的內容。虛擬鍵碼列表可用here

case WM_KEYDOWN: 
    switch (wParam) 
    { 
     case VK_LEFT: 

      // Process the LEFT ARROW key. 

      break; 

     case VK_RIGHT: 

      // Process the RIGHT ARROW key. 

      break; 

     case VK_UP: 

      // Process the UP ARROW key. 

      break; 

     case VK_DOWN: 

      // Process the DOWN ARROW key. 

      break; 

     // Process other non-character keystrokes. 

     default: 
      break; 
    } 
+0

謝謝,我發誓我搜索了很多,我只是缺乏這個詞,因爲我仍然是新的窗口API的東西。無論如何,我現在正在下載整個C++文檔(560mb),以便幫助。 – 2012-07-09 05:35:03

+0

好的,還有一件事,wParam和lParam有什麼區別? – 2012-07-09 05:37:50

+0

@JoeyArnoldAndres,搜索'WM_KEYDOWN'並遵循相關的技巧。 WPARAM和LPARAM在32位應用程序中都是相同的,但LPARAM曾經是一個很長的WPARAM詞。搜索「Windows數據類型」可以提供一個很好的網頁。正如我前面提到的,也雷蒙德陳解釋WPARAM LPARAM主場迎戰很好曾經在[舊事新](http://blogs.msdn.com/b/oldnewthing/archive/2003/11/25/55850.aspx )。但是當你說完整的文檔時,你的意思是所有的Window API文檔嗎?如果是這樣,我可以在哪裏得到? – chris 2012-07-09 05:38:36