CListBoxのLBN_SELCANCELについて – プログラミング – Home

通知
すべてクリア

[解決済] CListBoxのLBN_SELCANCELについて


いっこう
 いっこう
(@いっこう)
ゲスト
結合: 23年前
投稿: 22
Topic starter  

CListBoxのLBN_SELCANCELについて質問があります。

CListBoxの発生クラスを作成し
オーナー描画、シングル選択のリストボックスを使用しています。

ClassWizardでLBS_SELCANCELメッセージを追加したのですが、
CListBoxのSetCurSelで選択を解除したときに飛んできません。

LBS_SELCANCELメッセージはどのような場合に飛んでくるのでしょうか?

よろしくお願いします。

環境 Win2000 VC6.0 MFC


引用未解決
トピックタグ
いっこう
 いっこう
(@いっこう)
ゲスト
結合: 23年前
投稿: 22
Topic starter  

「LBS_SELCANCEL」メッセージは「LBN_SELCANCEL」の間違いです。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

MSDNには、
「リスト ボックスの現在の選択項目がキャンセルされたとき。」
とあります。
つまり、コンボボックスのダウンリストが開いている状態で、
[Esc]キーを押した、あるいは、よそをクリックするなどして
ダウンリストが閉じられた場合に、LBN_SELCANCELが発生します。

> CListBoxのSetCurSelで選択を解除したときに飛んできません。
>
SetCurSel(-1)をしたということですか?
この時に発生するものではないようです。


返信引用
いっこう
 いっこう
(@いっこう)
ゲスト
結合: 23年前
投稿: 22
Topic starter  

sugarさんご返事ありがとうございます。
やはりSetCurSel(-1)の場合はLBN_SELCANCELは発生しないのですね。
選択解除時の処理を別の方法で組み込もうと思います。

ありがとうございました。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

>つまり、コンボボックスのダウンリストが開いている状態で、
>[Esc]キーを押した、あるいは、よそをクリックするなどして
>ダウンリストが閉じられた場合に、LBN_SELCANCELが発生します。

コンボボックスではそうですが、リストボックスの場合、
そもそも選択を解除するというユーザー操作が無いような気がします。
(私が知らないだけかな?)
複数選択で1つを解除した時にも発生しませんし…。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

dairygoods さんのおっしゃる通りですね、確かにそうです。
リストボックスとコンボボックスを取り違えていたようです。
すみませんでした。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

LBN_SELCANCELは、SetCurSel(-1)では発生しないということで
解決しておりますが、気になったのでいろいろ試してみました。

>コンボボックスではそうですが、リストボックスの場合、
>そもそも選択を解除するというユーザー操作が無いような気がします。

と書きましたが、次の操作をするとLBN_SELCANCELが発生します。
1) リストボックス上で左ボタンを押す(放さない)
2) Alt+Tabなどで別のアプリケーションに切り替える

キャンセルというのは、「選択の解除」でなく、
「選択しようとした操作の中止」という意味のようですね。

ただ、LBN_SELCANCELが発生しても選択操作が
自動的にキャンセルされるわけではないようです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました