ウィンドウのサイズ変更にリストボックスを合わせる

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
doloop

ウィンドウのサイズ変更にリストボックスを合わせる

#1 投稿記事 by doloop »

はじめまして
W32プログラミング講座のテキストエディタの項目で
エディットボックスのサイズをウィンドウに合わせたのと同様に

リストボックスのサイズを
Dim rc As RECT
Dim hList As HWND
hList=GetDlgItem(hSub,ListBox1)
GetClientRect(hSub,rc)
MoveWindow(hList, 0, 0, rc.right, rc.bottom,0)
という方法でウィンドウに合わせようとしました。

しかし、この方法だとウィンドウの下部の余白部分がいちいち変化して、気持ち悪いのです。
これを無くすには、どうすれば良いのでしょう。

ご存知の方、教えてください
HSABP

Re: ウィンドウのサイズ変更にリストボックスを合わせる

#2 投稿記事 by HSABP »

リストボックスのプロパティで文字列アリにチェックする( LBS_HASSTRINGSを)
オーナードローを可変にする。

このままではリストにモジが表示されないので、

コード: 全て選択


Type DRAWITEMSTRUCT
    CtlType As DWord
    CtlID As DWord
    itemID As DWord
    itemAction As DWord
    itemState As DWord
    hwndItem  As HWND
    hDC As HDC
    rcItem As RECT
    itemData As DWord
End Type
構造体を定義しておきWM_DRAWITEMメッセージを処理する

コード: 全て選択


Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

	Dim dis As *DRAWITEMSTRUCT 
	Dim sItem[100] As Byte

	If dwMsg = WM_DRAWITEM Then
		dis = lParam
		SendMessage(dis->hwndItem, LB_GETTEXT, dis->itemID, sItem)
		DrawText(dis->hDC, sItem, -1, dis->rcItem, DT_LEFT)
	End If

	' イベントプロシージャの呼び出しを行います。
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
返信する