XWindow関連



 ◇-?XWindow関連-アキコ-10/17-16:53(226)-No.462679

▲このページのトップに戻る
462679XWindow関連アキコ 2008/10/17-16:53

メーカー名:自作PC ショップオリジナル
OS名:Linux
パソコン名:505291-13286
トラブル現象:ソフトの使い方がわからない Motif関連
--
はじめまして。

Motifを使って、4000行の一覧を表示させようとしてます。
スクロールバーで制御するのですが、サンプルプログラムでは991行しか
表示できません。
何故そうなるのか理由すら分からないので、どなたか教えて下さい。

サンプルプログラムを以下に記述します。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <Xm/Xm.h>
#include <Xm/XmAll.h>
#include <Xm/PushBG.h>
#include <Xm/LabelG.h>
#include <Xm/ToggleB.h>
#include <Xm/ScrolledW.h>
#include <Xm/RowColumn.h>
#include <Xm/Form.h>
#include <Xm/Text.h>
#include <pwd.h>

main (int argc, char *argv[])
{
Widget toplevel, sw, main_rc, form, toggle, child;
XtAppContext app;
UserInfo *users;
Arg args[32];
int n;
int ii;
char abuf[128];
XtSetLanguageProc (NULL, NULL, NULL);

toplevel = XtVaOpenApplication (&app, "Demos", NULL, 0, &argc, argv, NULL,sessionShellWidgetClass, NULL);
n = 0;
XtSetArg (args[n], XmNwidth, 500); n++;
XtSetArg (args[n], XmNheight, 300); n++;
XtSetArg (args[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
sw = XmCreateScrolledWindow (toplevel, "scrolled_w", args, n);
main_rc = XmCreateRowColumn (sw, "main_rc", NULL, 0);
for (ii = 0; ii < 4000; ii++) {
form = XmCreateForm (main_rc, "", NULL, 0);

n = 0;
XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++;
XtSetArg (args[n], XmNrightPosition, 15); n++;
XtSetArg (args[n], XmNbackground, 0x000000); n++;
XtSetArg (args[n], XmNforeground, 0xffffff); n++;
XtSetArg (args[n], XmNheight, 30); n++;
XtSetArg (args[n], XmNmarginWidth, 0); n++;
XtSetArg (args[n], XmNmarginHeight, 0); n++;
XtSetArg (args[n], XmNborderWidth, 0); n++;
XtSetArg (args[n], XmNindicatorOn, XmINDICATOR_CHECK_BOX); n++;
XtSetArg (args[n], XmNindicatorSize, 22); n++;
XtSetArg (args[n], XmNdetailShadowThickness, 3); n++;
XtSetArg (args[n], XmNhighlightThickness, 0); n++;
memset((char *)abuf, 0, sizeof(abuf));
sprintf(abuf, "%d", ii);
child = XmCreateToggleButton (form, abuf, args, n);
XtManageChild (child);
XtManageChild (form);
}

XtManageChild (main_rc);
XtManageChild (sw);
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}




この様なサンプルプログラムですが、何故991行までしか表示されないのでしょうか?

スクロール画面領域のサイズと言うのはどこで決めるのでしょうか?
991行までしか出ないのは、スクロール画面領域のサイズがそこまでしか無い為、
そこまでを表示している気がしますので、スクロール画面領域のサイズが広がれば
沢山の行が表示出来るのではと考えてますが、その画面領域サイズを広げる方法が
分かりません。

申し訳ありませんが回答の程よろしくお願いします。


A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言