|
ソースコードを見直したりトレースしたりもしてみたんですけど、特に何か設
定によってうまくいかない可能性はなさそうな気がします。
そもそもですが、SetTitleListTopIndex関数は、現在選択してるメールを変化
させる命令じゃなくて、あくまでスクロールをさせるだけの命令です。その辺が
勘違いされてるような気がします。
メール一覧のリストボックスの中での、その枠の中での一番上の行を、全体の
中での何行目にするかってことを指定するだけの関数になります。
選択してる位置を変更するのはSetMailIndex関数になります。
リストボックスの命令で言うと、SetTitleListTopIndex関数は、
LB_SETTOPINDEXってメッセージを送るのに相当し、SetMailIndex関数は、
LB_SETCURSELメッセージに相当します。(google検索するとその辺のことも出て
くると思います)
SetTitleListTopIndex関数を呼び出しても、選択されてるメール自体は何も変
化せず、例えば1行目のメールが選択されてる状態でSetTitleListTopIndex関数
で一番下にスクロールさせても選択位置はそのままで、選択位置は画面上から消
えるような形になります。
何かその辺の理解が違ってるだけじゃないでしょうか。
ちなみにLB_GETTOPINDEXってメッセージもありますけども、それを使って、た
しかにスクロールしてるかどうか確認するマクロも作成が可能です。
#define LB_GETTOPINDEX 0x018E
と定義されてるので、例えば、
loaddll "tkinfo.dll";
#list = dllfunc("TitleListWnd");
#index_set = 0;
while(1) {
#n = dllfunc("SetTitleListTopIndex", #index_set);
#index = sendmessage( #list, 0x018E, 0, 0 );
question "現在の先頭位置は " + str(#index) + "\n\n中止=いいえ";
if( result == no ) {
break;
}
#index_set = #index_set + 1;
}
ってな具合のマクロを実行すると、1行ずつスクロールアップしていて、カウ
ントアップしていくことが確認出来るんじゃないかと思います。
|
|