2012-11-17 56 views
0

我在C WinAPI中寫了記事本的'Go To Line'對話框。我創建了一個只有編輯控件的數字。但我仍然可以將單詞粘貼到編輯控件中! Windows記事本中的對話框確實會停止這種粘貼。那麼我怎麼能在記事本中做同樣的事呢?如何禁用粘貼單詞到數字編輯控件?

回答

2

子類的編輯控件,並接收WM_PASTE時:

OpenClipboard 
GetClipboardData 
GlobalLock 

現在使用從GlobalLock返回的指針來檢查非數字字符。如果找到一個非數字,則通知用戶:

GlobalUnlock 
CloseClipboard 

並且從回調中返回0以防止將數據粘貼到編輯控件中。

如果是全部數字,然後GlobalUnlockCLoseClipboard並將消息傳遞到CallWindowProc以允許粘貼。

+0

謝謝,但有沒有辦法在純C中解決它? – LeOpArD

+0

* *是使用Windows API執行此操作的方式。 – Gunner

0

爲ES_NUMBER的文檔(這是我想你正在使用)說:

只允許數字來輸入到編輯控件。請注意,即使使用此設置,仍可以將非數字粘貼到編輯控件中。

要防止粘貼非數字,您需要掃描剪貼板中的數據並防止粘貼,如果它包含非數字。