2013-03-05 37 views
-2

我在編輯這個問題b'coz我不允許添加新的問題。C循環:印度印度地圖

我發現這個程序做的真棒印刷,但不明白它是如何工作的。請幫我理解它背後的邏輯。

#include <stdio.h> 
int main() 
{ 
    int a,b,c; 
    int count = 1; 
    for (b=c=10; a="- FIGURE?, UMKC,XYZHello Folks,\ 
        TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ 
        UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ 
        NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ 
        HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ 
        T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ 
        Hq!WFs XDt!" [b++ +21];) 
     for(; a-- > 64 ;) 
       putchar ((++c == 'Z') ? c = c /9 : 33^b&1); 
    return 0; 
} 

輸出截圖是

enter image description here

+1

你在你的消息循環使用的TranslateMessage()? – 2013-03-05 10:14:40

+0

是的,先生,我的消息循環是:(!TranslateAccelerator(msg.hwnd,hAccelTable,與MSG)) 一段時間(的GetMessage(味精,NULL,0,0)){ 如果{ 的TranslateMessage(&msg); 在DispatchMessage(&msg); } 。 } – null 2013-03-05 10:22:11

+1

很多在這裏奇怪的事情。首先,你應該永遠需要轉換函數指針;如果你這樣做,編譯器是想告訴你的是,函數簽名是不正確所以這個代碼是錯誤的:'的reinterpret_cast (DLGPROC )'。其次,沒有必要將焦點設置到對話框響應'WM_INITDIALOG'消息。這已經爲你做。 – 2013-03-12 12:17:59

回答

1

Tab鍵通常由對話管理器,因爲它是用來將焦點從一個控件到另一個(即IsDialogMessage呼叫轉移吞噬了DialogBox函數調用作爲其內部消息循環的一部分將過濾出Tab鍵並且不讓它進入對話過程)。

有幾種方法我可以想到你可以解決這個問題,但是我建議你應該選擇另一個鍵來打開/關閉對話框,因爲tab已經有一個衆所周知的和明確定義的在Windows中的含義。

+0

沒有鑰匙迴應先生。我已經嘗試過了。 – null 2013-03-05 10:25:35

0

請仔細閱讀它指出在MSDN的「的EndDialog」描述:

的EndDialog並不立即銷燬對話框。相反,它會設置一個標誌並允許對話框過程將控制權返回給系統。在嘗試從應用程序隊列中檢索下一條消息之前,系統檢查標誌。如果該標誌被設置,則系統結束消息循環,破壞了對話框,並且使用在nResult值作爲從創建對話框中的函數返回值。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645472%28v=vs.85%29.aspx

+0

這與這個問題有什麼關係? – 2013-03-12 12:18:29