tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルAPIで作成したテキストボックスのフォーカス
記事No14198
投稿日: 2009/10/28(Wed) 22:47
投稿者TIOS
APIでテキストボックスを作りました。
実行してテキストボックスにフォーカスを合わせ、
↓キーを押すと次のコントロールにフォーカスが移動してしまいます。
こうならないようにしたいのですが、解決方法ありますでしょうか?

お願い致します

[ツリー表示へ]
タイトルRe: APIで作成したテキストボックスのフォーカス
記事No14199
投稿日: 2009/10/29(Thu) 10:11
投稿者オショウ
> 下記のようなコードでテキストボックスを作りました。

  何故、APIで作る必要があるのか・・・

> 実行してテキストボックスにフォーカスを合わせ、
> ↓キーを押すと次のコントロールにフォーカスが移動してしまいます。
> こうならないようにしたいのですが、解決方法ありますでしょうか?

  ええ〜と、そのイベントを処理する機能はどこにあるんでしょうか?
  キー入力イベントネ!

● 動的にコントロールを作成する方法があるので、調べたら如何?
  検索してら、すぐヒットしますヨ!

以上。

[ツリー表示へ]
タイトルRe^2: APIで作成したテキストボックスのフォーカス
記事No14211
投稿日: 2009/11/03(Tue) 11:55
投稿者TIOS
動的コントロール作成と今回の質問に何の関係があるのですか?

APIで作成したコントロールは
イベントで↓キーによるフォーカス移動を抑止するのが普通なのでしょうか?

CreateWindowExで設定したウィンドウスタイルが悪いのか
作成したテキストボックスで↓キーを押すとフォーカスが移動していまいます
私と同じような状態になった方はいませんでしょうか?

よろしくお願い致します。

[ツリー表示へ]
タイトルRe^3: APIで作成したテキストボックスのフォーカス
記事No14212
投稿日: 2009/11/03(Tue) 12:38
投稿者花ちゃん
> CreateWindowExで設定したウィンドウスタイルが悪いのか
> 作成したテキストボックスで↓キーを押すとフォーカスが移動していまいます
> 私と同じような状態になった方はいませんでしょうか?

そもそも、投稿されたコードだけでは、どのように作成され、どのように動作するのか
他の人には判断できないでしょう?

私が、試したコードでは、テキストボックス上で↓キーを押すと右に移動します。
(通常のテキストボックスと同様の動作をします)

※ 当サイトをご利用になるのなら、掲示板ご利用に際しや初めにお読み下さい 等を
  読んでからご利用願います。
http://hanatyan.sakura.ne.jp/hazimeni.htm#keijiban

[ツリー表示へ]
タイトルRe^4: APIで作成したテキストボックスのフォーカス
記事No14213
投稿日: 2009/11/03(Tue) 16:30
投稿者TIOS
大変申し訳ありませんでした。

ユーザーコントロール上にAPIでテキストボックスを作っておりました。

フォームにはそのユーザーコントロールのテキストボックスと、ボタンを置いています。
そしてユーザーコントロールのテキストボックスにフォーカスを合わせ
↓キーを押すとフォーカスが移動していまいます

OSはVistaです。よろしくお願い致します

[ツリー表示へ]
タイトルRe^5: APIで作成したテキストボックスのフォーカス
記事No14215
投稿日: 2009/11/03(Tue) 17:25
投稿者花ちゃん
何回も同じ事を書きますが、私が試した限りでは、通常のテキストボックスと
同様の動作をします。

コードを投稿するなら、事象を再現できるコードを投稿して頂かないと確認のしようが
ありません。(どこが違っているかも判断できない)
API や 定数のコードだって、どこか間違っていれば正しい動作の保証もありませんよね。
(前回と今回では若干コードも違うようだし)
>↓キーを押すとフォーカスが移動していまいます
日本語だってこのように間違う事があるのだから、コードも間違っているかも。

一度、新規通常のForm でテキストボックスだけを作成して確認するとかして見て
問題がどこにあるのかを切り分けて見て下さい。

そもそも、何の為に、API でテキストボックスを作成する必要があるのでしょうか?
この辺で躓いていたら...。

[ツリー表示へ]
タイトルRe^6: APIで作成したテキストボックスのフォーカス
記事No14216
投稿日: 2009/11/03(Tue) 19:17
投稿者TIOS
すぐに再現していただけると思ってコードを変えました。

なにか助言をいただければと思います

[ツリー表示へ]
タイトルRe^7: APIで作成したテキストボックスのフォーカス
記事No14217
投稿日: 2009/11/03(Tue) 19:34
投稿者花ちゃん
> すぐに再現していただけると思ってコードを変えました。
> ユーザーコントロールを追加して
> 以下のコードを書いただけでそれ以上のコードは書いていません。

だったら、エラーが表示され動作しません。


> Private Sub UserControl_Initialize()
>     Call CreateWindowExW(0, StrPtr("Edit"), 0, _
>               &H10000 Or &H40000000 Or &H10000000, 0, 0, ScaleWidth, 170, UserControl.hWnd, 0, App.hInstance, 0)
> End Sub

CreateWindowExW って何なのですか?   どこにあるの?
前回は、CreateWindowEx じゃなかったの? 肝心なところのコードがころころ変わる
のでは、実際にどのようなコードを使っておられるのか信用できません。

>
> あとはユーザーコントロールとボタンをフォームに置いて実行するだけです。
> これで私の環境では前述の現象が起きます
詳しい環境等どこにも書いておられないのでは?

>
> なにか助言をいただければと思います
前回、回答した事は、どのようにされたの? 試していないの?
すでに、回答していますので、これ以上は、私からはありません。


[ツリー表示へ]
タイトルRe^8: APIで作成したテキストボックスのフォーカス
記事No14218
投稿日: 2009/11/03(Tue) 20:19
投稿者TIOS
申し訳ありませんでした。
CreateWindowExW は書き忘れてました。編集して直しておきました。
CreateWindowExはAかWかわかるようにWにかえました。

フォーム上に CreateWindowExW で作成すると、
テキストボックス上で↓キーを押すと右に移動します。

ユーザーコントロール上にテキストボックスを作成した場合に起こるようです。

環境はVB6のSP6です。参照設定は追加していません。
よかったらまたご回答お願い致します

[ツリー表示へ]
タイトルRe^9: APIで作成したテキストボックスのフォーカス
記事No14219
投稿日: 2009/11/03(Tue) 22:37
投稿者花ちゃん
> ユーザーコントロール上にテキストボックスを作成した場合に起こるようです。
> よかったらまたご回答お願い致します

答えがでているのでは。(ユーザーコントロール上にテキストボックスを作成した場合)
(複数行のテキストボックスなら2行目以降にマウスでも行きません)

それに、unicode の文字を表示したいと思っているのなら、表示できるか確認しましたか?

オショウ さんも確認されていたと思うのですが、なぜ、何の為に、API で
テキストボックスを作成する必要があるのでしょうか? の問いに答えられないの
でしょうか?
それによっては、代替案もあるかも知れませんし、単に動的にコントロールを作成
したいなら、他にも簡単な方法がありますが。

[ツリー表示へ]
タイトルRe^10: APIで作成したテキストボックスのフォーカス
記事No14220
投稿日: 2009/11/03(Tue) 22:57
投稿者TIOS
お返事ありがとうございます

ユーザーコントロールで作るのは辞めないといけないということでしょうか?

unicode文字は表示させたいです。あと表示はできています。

簡単な方法というのを教えていただきたいです。
お願い致します。

[ツリー表示へ]
タイトルRe^11: APIで作成したテキストボックスのフォーカス
記事No14221
投稿日: 2009/11/04(Wed) 08:42
投稿者花ちゃん
> ユーザーコントロールで作るのは辞めないといけないということでしょうか?
同じ仕様では、多分できないのではないでしょうか?
(親Windou の影響を受けるようなので)

> unicode文字は表示させたいです。あと表示はできています。
これも上記同様に、通常の Form 上で作成した場合は、表示できないようです。

> 簡単な方法というのを教えていただきたいです。
> お願い致します。

この辺も、オショウ さんが答えておられるが、何度聞いても、何の為に、API で
テキストボックスをVB6.0 で作成する必要があるのかを答えられない以上、代替案を
提示しても無意味では。(下記のように)

>動的コントロール作成と今回の質問に何の関係があるのですか?

[ツリー表示へ]
タイトルRe^12: APIで作成したテキストボックスのフォーカス
記事No14224
投稿日: 2009/11/04(Wed) 11:22
投稿者TIOS
理由はすでに答えています。
>unicode文字は表示させたいです。

ですのでAPIでの作成を試しています。ご協力をお願いします

[ツリー表示へ]
タイトルRe^3: APIで作成したテキストボックスのフォーカス
記事No14214
投稿日: 2009/11/03(Tue) 17:16
投稿者オショウ
> 動的コントロール作成と今回の質問に何の関係があるのですか?

  それさえも解らないならどうにもならんのでは?

> APIで作成したコントロールは
> イベントで↓キーによるフォーカス移動を抑止するのが普通なのでしょうか?

  外観はCreateしても、その実際の処理は、どこでどうやっているのか・・・
  と言うことなんですが。

  WindowsのGUIは、はイベントドリブンな動作を処理する機能が必要なので
  今回はその作成された『エディットボックス』のメッセージ処理が必要だ
  と言うことです。

※ で、VISTAでVB6なんですか?
  いまだに・・・

  まぁ〜頑張って下さい。

以上。

[ツリー表示へ]