HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0330
Mc.Hアイコン付きコンボボックス3解決


Mc.H

リンク

2019/3/30(Sat) 13:14:37|NO.86999

どうも Mc.H です。

タイトルの通りコンボボックスの中の文字の横にアイコンを付ける方法を知りたいです
(Font 選択ダイアログの色選択のコンボボックス的なもの)

返答お願いします



この記事に返信する


Mc.H

リンク

2019/3/30(Sat) 13:20:58|NO.87000

↓のようなスクリプトを見つけましたが、コンボボックスを開いた跡が残ります。


screen 1 //アイコン color 255,0,0:circle 0,0,16,16,1 color 0,255,0:circle 16,0,32,16,1 color 0,0,255:circle 32,0,48,16,1 color 255,255,0:circle 48,0,64,16,1 screen 0 Text="AAA\nBBB\nCCC\nDDD" //オーナードロー型コンボボックス winobj "ComboBox","",0, 0x50200013,200:hComboBox=objinfo(stat,2) sendmsg hComboBox, 0x153,,20//リストの行の高さ sendmsg hComboBox,0x14E,0 notesel Text repeat noteinfo(0),0 noteget _Text,cnt sendmsg hComboBox,0x0143,0,_Text//項目追加(文字は見えない) loop sendmsg hComboBox,0x14E,0//項目選択 oncmd gosub *OnDrawItem,0x002B//WM_DRAWITEM stop *OnDrawItem gsel 0 dupptr DIS, lparam, 48 mref BMSCR, 67 hdcOld=BMSCR(4) BMSCR(4)=DIS.6//デバイスコンテキストを描きこみ先に変更し、直接描きこむ if DIS.5 = hComboBox{ if DIS.4 & 1 {//選択状態 syscolor 13 color ginfo(16)^255,ginfo(17)^255,ginfo(18)^255//反転色 boxf DIS.7,DIS.8,DIS.9,DIS.10 syscolor 13:boxf DIS.7+1,DIS.8+1,DIS.9-1,DIS.10-1 syscolor 14 }else{//通常 syscolor 5:boxf DIS.7,DIS.8,DIS.9,DIS.10 syscolor 8 } notesel Text noteget _Text,DIS.2 pos DIS.7+18,DIS.8+2:mes _Text//文字描画 pos DIS.7+2,DIS.8+2:gcopy 1,DIS.2*16,0,16,16//アイコン描画 } BMSCR(4)=hdcOld//ちゃんとデバイスコンテキストを元のように戻す return



よっぴー

リンク

2019/3/31(Sun) 13:30:33|NO.87008

Mc.Hさんのスクリプトですが、*OnDrawItemの最後のreturnの前にredraw 1を入れることで
回避できますよ



Mc.H

リンク

2019/3/31(Sun) 16:35:29|NO.87010

返答ありがとうございました

うまくできました
(確かに直接書き込んでるのでよく考えてみたら簡単なことでしたね)

これで解決とします



ONION software Copyright 1997-2023(c) All rights reserved.