2009-07-22 13 views
0

私はdev-C++を使ってC++でGUIを開発しています。Win API C++コントロール強制編集

私はこのような編集コントロールを持っている:

hctrl = CreateWindowEx(
         0, 
         "EDIT",   /* Nombre de la clase */ 
         "",    /* Texto del título, no tiene */ 
         ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | 
         ES_NUMBER , /* Estilo */ 
         85, 43,   /* Posición */ 
         90, 25,   /* Tamaño */ 
         hwnd,   /* Ventana padre */ 
         (HMENU)ID_TEXTO2, /* Identificador del control */ 
         hInstance,  /* Instancia */ 
         NULL);   /* Sin datos de creación de ventana */ 
SendMessage(hctrl, WM_SETFONT, (WPARAM)hfont, 
MAKELPARAM(TRUE, 0)); 

私は、ユーザーがこのフィールドに電話番号を紹介したいと思います。それは強制的なフィールドです。

フィールドが正しく入力されるまで、このGUIの[OK]ボタンが無効になっている必要があります。ボタンを押すことも可能ですが、空欄を埋める必要があるというメッセージが表示されました。

switch (HIWORD(wParam)) { 
    case BN_CLICKED: 
     switch (LOWORD(wParam)) { 
      ... 
      ... 
      case ID_BOTON9: 
       hctrl = GetDlgItem(hwnd,ID_TEXTO2);  
       len = GetWindowTextLength(GetDlgItem(hwnd,ID_TEXTO2)); 
       if (len == 0) 
        MessageBox(hctrl, "Número no válido","Error", MB_ICONEXCLAMATION | MB_OK); 
       break; 
      ... 
     } 
    break; 
} 

しかし、これは動作しません:

は、私はこれを試してみました。

誰でも光を当てることはできますか?

ありがとうございます。

+0

は動作しませんが上に行くことがあまりないです。どのようにして動作しませんか? –

+0

ボタンを押したときに、フィールドが空であれば何も起こりません。 – deb

+0

フィールドが空であるか、有効にしてフィールドを埋める必要があることを示すメッセージが表示されます。 – deb

答えて

1

ウィンドウの入力が正しいかどうかを示すboolを返す検証関数を作成します。 falseを返す場合は、OKボタンを無効にし、任意でメッセージボックスを表示するか、好ましくは編集コントロールでバルーン通知をトリガーして、間違いを訂正するために別のOKを押してユーザーに迷惑をかけないようにします。

次に、EditboxからのEN_CHANGE通知を聞き取り、上記の機能で入力を検証できます。

まず、アプリケーションをデバッグして、BN_CLICKEDイベントが正しく処理されることを確認します。この

2

用途:

スイッチ(uMsg)

{ 

case WM_COMMAND:  

    {  
     switch (LOWORD(wParam)) 

     { 
      case YourButton: 

      { 

       //Check your Number 

       //If the Number validate do what you need to do, if not, show a message and break. 

       MessageBox(hwnd,"Your message","Mesage",0); 

       break; 

      } 
関連する問題