2011-01-17 9 views
1

このコードでは、テキストボックスフィールドの値を変数に代入します。テキストボックスはIPアドレスコントロールです。ユーザーが[OK]ボタンを押したときにフィールドが空であるかどうかを確認するにはどうすればよいですか?あなたはテキストボックスコントロールが空であるかどうかを確認するC++ Win32

char *myVar = new char[16]; 
*myVar = NULL; 

GetDlgItemTextA(hDlg, IDC_MYVAR, myVar, 16); 

delete [] myVar; 
+0

'* myvar = NULL;'はナンセンスです。myVar [0] = 0; 'を使用するか、イニシャライザで自動変数を使用するだけで、新しいものと削除する必要はありません。 – wich

答えて

3

あなたはおそらく(私はWINAPIの専門家ではないですので、私は誤解される場合があります)IPM_ISBLANKメッセージを使用する必要があります。

+0

+1これはCIPAddressCtrl :: IsBlankの背後にあるメッセージのようです –

3

私はちょうどget hold of the HWND制御のために、それをWM_GETTEXTLENGTHを送信し、ゼロで答えを比較すると思いますありがとうございました。

+0

ありがとう、私は今GetWindowTextLengthを使用していますが、それは文字の偽数を返します。テキストボックスはIPアドレスコントロールで、ユーザーが何も書かない場合は、自動的に0.0.0.0に設定されているように見えます。空の場合は、常に7文字も取得します。 – Stefano

+1

@Stefano私はIPアドレスコントロールについて何も知らない。それらはMFCの一部ですか?それがMFCコントロールの場合は、CIPAddressCtrl :: IsBlank(http://msdn.microsoft.com/en-us/library/aae4b2b2%28VS.80%29.aspx)を使用できます。とにかく、ここにコメントではなく質問の編集としてこの変更を追加します。 –

1

ちょうどmyVar[0]GetDlgItemTextAを呼び出した後にゼロであるかどうかを確認してください。

char myVar[16]; 
GetDlgItemTextA(hDlg, IDC_MYVAR, myVar, 16); 
if (myVar[0] == 0) // then field is empty 
+2

スタックオーバーフローに関する二重投稿をどのように管理していますか? (元の回答を編集してコードサンプルを追加することはできますか?新しいコードを投稿しないでください。また、必要な場合は削除することもできます) –

+0

@Cody Grey:これは謎です私も!オリジナルを編集したときに何らかの種類のスタックオーバーフローが発生しました。おそらくフェールセーフ機構が蹴られたかもしれません。私はオリジナルを削除しました。あなたのコメントの+1 – TonyK

関連する問題