[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/05 01:38 / Filesize : 262 KB / Number-of Response : 969
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【GUI】wxWidgets(旧wxWindows) その3【サイザー】



1 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 00:06:30 ]
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 www.wxwidgets.org/
wxWindows日本語プロジェクト
 wxwindowsjp.sourceforge.jp/
Let's wxWidgets
dot-gray.s33.xrea.com/
(*)準備中(*)
www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 www.idg.co.jp/sw/back/200102/20010219_01_report.html

52 名前:デフォルトの名無しさん [2006/11/05(日) 20:24:22 ]
wxDev-C++って、メニューとかツールバーはまともにでなくない?
ボタンとか、絶対位置指定できる点はいいとは思うけど。

DialogBlocksはちょっと複雑なの書くとエラーがでるんだが・・・


53 名前:デフォルトの名無しさん [2006/11/09(木) 01:32:48 ]
wxWidgetsをつかってタスクマネージャみたいのを作ろうと思うのですが
つまづいてます

メインの処理とかはどうでいいのですが、常駐アプリとして使うことを考慮して

 1. 常に手前に表示
 2. 透明度を変えられる
 3. キーボードとかマウスとかのイベントを下のウィンドウにスルー

を実現したいのですが3番目を実現する方法がわかりません

54 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 02:36:59 ]
evt.veto

55 名前:53 mailto:sage [2006/11/09(木) 18:20:15 ]
>>54
私のグーグル力が確かならVetoはwxNotifyEventではじめて定義されてるので
wxNotifyEventを継承していないwxMouseEventに対しては呼べないと思うのですが・・・

wxNotifyEvent
ttp://www.wxwidgets.org/manuals/2.6.3/wx_wxnotifyevent.html

56 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 20:38:26 ]
2.7.2出たね

11月13日に2.8.0リリース予定だそうだ

57 名前:53 mailto:sage [2006/11/09(木) 23:02:03 ]
マウスクリックイベントをスルーする方法
ttp://forums.belution.com/ja/vc/000/172/70.shtml

Win32APIネイティブでここまでゴリゴリやってできないとなると
それをクロスプラットフォームGUIライブラリに求めるのは酷だと思うのであきらめます
ありがとうございました

58 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 18:29:20 ]
これって、3.0になるとSTLとか使ってモダンなAPIになるんでしょうか?
なんか、そんな話が出てたような気がするんで。
そのソースってまだ公開されてないですよね?

59 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 22:16:52 ]
さて、ややこしい話が出たところで、また俺がRADネタを振ろうかね。
おまいら、何でGUI君でんの?

60 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 22:21:34 ]
CUIじゃ時代遅れだから。



61 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 22:25:37 ]
そういう意味じゃないと思うよww

62 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 22:35:24 ]
俺は Mac と Solaris かな。

63 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 12:45:50 ]
wxPythonのGridの質問です。

EVT_GRID_CELL_CHANGEの時に新しく行を追加すると
無限ループになってしまいます。
エラーを見ると、新しい行でEVT_GRID_CELL_CHANGEが起きてるのでなくて
最初にEVT_GRID_CELL_CHANGEを起こした行で再帰になってるようなのですが
これを回避する方法はありますか?
やりたいことは MS Accessのテーブルみたいに、
空白行に何か書込んだら、新しい空白行を追加したいのです。

class MyGrid(wx.grid.Grid):
 def __init__(self, parent):
  wx.grid.Grid.__init__(self, parent, -1, size=(200, 100) )
  self.CreateGrid(1,1)
  self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnCellChange)

 def OnCellChange(self, event):
  Row = event.GetRow()
  print "%d: EVT_GRID_CELL_CHANGE" % Row
  self.InsertRows(Row + 1, 1, 1)

結果:
0: EVT_GRID_CELL_CHANGE
 (・・数十行繰り返し・・)
0: EVT_GRID_CELL_CHANGE
Traceback (most recent call last):
File ****, line 15, in OnCellChange
Row = event.GetRow()
RuntimeError: maximum recursion depth exceeded

64 名前:507 mailto:sage [2006/11/14(火) 14:19:45 ]
>>59
うぃんどうず
率直なところ使い勝手はあまり良くない

65 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 16:26:12 ]
これって半透明なウィンドウつくれるの?

66 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 23:21:20 ]
多分半透明は無理

67 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 23:28:33 ]
>>63
OnCellChangeで再帰呼び出しチェック用のフラグ立てて、
再帰だったら何もしないでreturnすりゃいいんじゃない?

68 名前:デフォルトの名無しさん [2006/11/16(木) 01:22:30 ]
これ、使い方がMFCにそっくりだね。
ちょっとウザイ

サイズがでかいのはどうにかならないかな?
メモ帳を作ったら、3Mあったよ。
ありえねー

69 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 10:40:39 ]
>>68
ダイナミックリンクにすればいい。

70 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 12:26:43 ]
>>67
フラグのタイミングをいろいろ試して、
  ・・・
  self.FlagRec = 0

 def OnCellChange(self, event):
  Row = event.GetRow()
  self.FlagRec += 1
  print "%d: %d: EVT_GRID_CELL_CHANGE" % (self.FlagRec, Row)
  if self.FlagRec == 1:
   self.InsertRows(Row + 1, 1, 1)
   self.FlagRec = 0

としたらうまくいきました。
あと、InsertRows じゃなくて AppendRows を使えば再帰が起らず思い通りになりました



71 名前:毛の生えたブリーフ mailto:sage [2006/11/20(月) 20:42:19 ]
wxbasic.sourceforge.net/

私はwxBasicを使っています。結構高速に動くし、楽チンです。

frame = New wxFrame(NULL, -1 "テスト")
frame.Show(True)

このたった二行で、窓が開きます。
暇ができたら自分のサイトに解説を書こうと思っています。

72 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 20:58:18 ]
? USING

73 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 21:05:55 ]
import Graphics.UI.WX
main = start $ frame [text := "test", visible := True]

wxHaskellでも二行、と意地を張ってみるテスト

74 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 21:18:48 ]
Haskell 奇麗だなあ

75 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 21:44:54 ]
どこがきれいなんだよ。わけわかんねーよ

76 名前:毛の生えたブリーフ mailto:sage [2006/11/20(月) 22:37:32 ]
'--------GUIの作成と表示
frame = New wxFrame(NULL, -1, "テスト")
button = New wxButton(frame, -1, "押してね")
frame.Show(True)
'-------イベントハンドラの作成
Function click(event)
wxMessageBox( "ボタンを押したね", "ボタンイベント", wxOK + wxICON_INFORMATION, frame )
End
End Function
'---------イベントとイベントハンドラの関連づけ
Connect(button, wxEVT_COMMAND_BUTTON_CLICKED, "click")


たったこれだけです。ですが、、、、wxWidgetsのドキュメントを
読みこなすのは正直きついですね。wxBasicのウィジェッツはバージョンが
古いので、本家から古めのドキュメントを取ってきて読んでいます。

77 名前:毛の生えたブリーフ [2006/11/21(火) 21:09:59 ]
スレタイの「サイザー」とは何か?

これは本当に奥が深いものです。
76のコードではウィンドウいっぱいにボタンが表示されます。

wxButton(frame, -1, "押してね", wxPoint(40,50), wxSize(50,80))

などにしても駄目です。どうしてか・・・・・三日悩んで見つかったもの
それが「サイザー」

78 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 22:18:10 ]
 サ イ サ ゙ ー っ て イ可 ? 

79 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 22:51:55 ]
シンセ?

80 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 23:02:53 ]
サイズ、サイザー、・・・



81 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 01:54:34 ]
サイゼリヤ

82 名前:デフォルトの名無しさん [2006/11/23(木) 04:57:53 ]
退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマと対極に位置する存在



眠い・・・・('A`)

83 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 08:26:57 ]
>>82
[退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在
退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在

('A`) ドッチ?

84 名前:毛の生えたブリーフ mailto:sage [2006/11/23(木) 09:11:52 ]
南斗聖拳のみたいなツールキットですね。

ところで
問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは
問2、 「アステカの星」を額に持つ、プロレスの星の男の名は
問3、 「三ツ矢」と言えば
問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は

85 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 10:15:55 ]
>>83
超遅くなりましたが後者デス

        il||li  
      ∧∧     
     /⌒ヽ)  
..,,....〜(,_,,,).....,,,,....もうだめぽ

86 名前:デフォルトの名無しさん [2006/12/15(金) 23:04:27 ]
2.8.0リリース
jaist.dl.sourceforge.net/sourceforge/wxwindows/changes-2.8.0.txt

87 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 09:32:16 ]
バージョンアップのペースが速いような…

88 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 18:22:17 ]
サイザー専用JAVA演習場
pc8.2ch.net/test/read.cgi/tech/1165571435/

89 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 18:42:02 ]
サイザーナックル

90 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 16:43:52 ]
バグらしき物を発見したんですがどこかに報告した方がいいんでしょうか?
バージョンはwxMSW-2.8.0です。

// src/common/dynarray.cpp 379行目から
void name::insert(iterator it, const_iterator first, const_iterator last) \
{                                          \
 size_t nInsert = last - first, nIndex = it - begin();            \
 if (nInsert == 0)                                \
  return;                                    \
 Grow(nInsert);                                 \
                                          \
 memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex],     \
     (m_nCount - nIndex)*sizeof(T));                  \
 for (size_t i = 0; i < nInsert; ++i, ++it, ++first)              \
  *it = *first;                                 \
 m_nCount += nInsert;                            \
}

Growによって配列が再確保されるとitがdeleteされた領域を指してしまいます。
Growの後に it = begin() + nIndex; を挿入すれば大丈夫っぽいです。



91 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 22:20:34 ]
>>90
sourceforgeでバグレポできる。

92 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 07:29:33 ]
シンセサイザーのサイザー?

93 名前:デフォルトの名無しさん [2007/02/14(水) 18:03:27 ]
Delphiみたくポトペタ開発できますか?

94 名前:デフォルトの名無しさん [2007/02/14(水) 19:40:56 ]
VisualWxってどうですか?

95 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 05:30:10 ]
Sizer

96 名前:デフォルトの名無しさん [2007/02/15(木) 08:56:49 ]
VisualWx使ったアプリというかサンプルアプリがネットに転がってないですか?

97 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 19:44:08 ]
cygwin+gcc3.4.4+wxMSW-2.8.0+wxGladeでhelloworld作ったんだけど
-mno-cygwin付けてコンパイルしようとするとエラーが起きる。どうしよう

g++ -c -mno-cygwin -Os -O4 -Wall `wx-config --cppflags` -I/usr/local/mingw/include hello.cpp
/usr/local/include/wx-2.8/wx/utils.h:21 から include されたファイル中,
/usr/local/include/wx-2.8/wx/cursor.h:41 から,
/usr/local/include/wx-2.8/wx/event.h:22 から,
    :
    :
/usr/local/lib/wx/include/msw-ansi-debug-static-2.8/wx/setup.h:808:1: 警告: this is the location of the previous definition
g++ -o hello.exe hello.o -mno-cygwin -mwindows `wx-config --libs` -L/usr/local/mingw/lib
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textctrl.o):textctrl.cpp:(.rdata$_ZTV10wxTextCtrl[vtable for wxTextCtrl]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textcmn.o):textcmn.cpp:(.rdata$_ZTV14wxTextCtrlBase[vtable for wxTextCtrlBase]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:421: undefined reference to `___assert'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:454: undefined reference to `___assert'
    :
    :
/usr/local/lib/libwx_based-2.8.a(baselib_datetime.o):../src/common/datetime.cpp:2283: undefined reference to `_gmtime_r'
collect2: ld はステータス 1 で終了しました
make: *** [hello.exe] エラー 1

98 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 19:48:21 ]
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
namazu.org/~satoru/pub/uu-2004-08/

ここ参考にしました

99 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:43:53 ]
>>97
gmtime_rが見て意義。

100 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 03:32:09 ]
wxGladeでなんとか簡単なGUIをつくりはじめたんだけど、参考に出来るコードがたくさん
載ってるページってない?



101 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 08:58:54 ]
つ VisualWx

102 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 18:26:44 ]
>>100
samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?

103 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:33:16 ]
>>102
samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。
どのクラスを使えばいいんだろう?

104 名前:デフォルトの名無しさん [2007/02/18(日) 14:13:59 ]
>103
wxComboBoxのwindow styleにwxCB_DROPDOWNとか
wxCB_READONLYを指定すればいいんじゃない?

105 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 15:50:22 ]
wxChoiceのことか?

106 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 18:21:10 ]
>>105
wxChoiceとwxComboBoxってどう違うん?

107 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 18:30:04 ]
wxChoiceは、あらかじめ用意されたリストから選ぶだけ。いわゆるプルダウンメニュ−。
wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」

108 名前:デフォルトの名無しさん [2007/02/23(金) 11:07:22 ]
OSがT-Engineとかでウィンドウシステムが無いものにポーティングすることは可能ですか?

109 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:44:46 ]
VisualWx使ってみたが、MicrosoftとかBorlandのRADとは
比べ物にならないな。
糞。


110 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 16:36:05 ]
エディタ手打ちで済むものをいちいちポトペタしなくてもいいじゃないか。





111 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:24:44 ]
いや、やっぱエディタ打ちはやってて面倒だよ・・・。

112 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:27:39 ]
アセンブラがあれば(ry

113 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:00:56 ]
ハンドアセンブルしてバイナリを直接入力すれば(ry

114 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 04:44:02 ]
テキストコントロールの各行に対する行数(行番号)を表示させたいんだけど、
(行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい)
なんかいい方法ない?

115 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 08:12:02 ]
>>114
行番号表示用のウィンドウを作るのが多分一番楽

116 名前:114 mailto:sage [2007/02/27(火) 01:48:30 ]
>>115
はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、
行番号表示用の行数とずれてしまうという問題があり、詰まっています。
なにかいい手はないでしょうか?

117 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:53:40 ]
>>116
テキストコントロールの内容を変更するたびに、
行頭に行番号を追加するようにすればいいんじゃね?

118 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:01:25 ]
114, 116はかなりの初心者かな?

119 名前:114 mailto:sage [2007/02/27(火) 23:27:54 ]
>>118
いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、
GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、
上司によりアピールできるし。。。と思って始めたばかりです。

私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。
ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。
テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。


120 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:59:27 ]
> 少し凝ろうとすると急にハードルが高く感じられます。

GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。
用意された機能を利用して実現できればそれでいいわけで、
これくらいはまだすんなり実現できる範疇に入るでしょうよ。

>>116は要はテキストコントロールをスクロールさせたら行番号表示が一緒に
動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。

ということで次のステップはイベント処理ですね。
テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール
量を知り、行番号表示の方に指定量のスクロールをさせる。



121 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:09:23 ]
じゃあちょっと難しく感じるかもな。
基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→
(位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール)
って流れかねえ。

>テキストエディタの表示オプションによくあったので
なんかこう、GUIをべたーっとした一枚の絵のように考えていたら
簡単にはできないよw

あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。

122 名前:114 mailto:sage [2007/02/28(水) 03:32:32 ]
>>120,121
アドバイスありがとうございます。イベント処理はいままで扱ったことが
ないので、調べてみます。

>あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
失礼しました。
Windows XP, ActivePerl-5.8 でwxPerlを使っています。
wxPerlは比較的マイナーなようですね。

123 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 06:37:40 ]
C++ならwxScintillaがつかえるが、他の言語ではラッパーか書かないとだめかも?


124 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:10:52 ]
117だけど、wxpythonで作ってみた

import wx
import re

class MyApp(wx.PySimpleApp):
def OnInit(self):
Frame = wx.Frame(None, -1, "Text Edit", size=(400,400))
self.Btn = wx.Button(Frame, -1, "Set Number")
self.Btn.Bind(wx.EVT_BUTTON, self.SetNum)
self.TxtBox = wx.TextCtrl(Frame, -1, "One\nTwo\n", style=wx.TE_MULTILINE)
self.SetNum(wx.Event)
MySizer = wx.BoxSizer(wx.VERTICAL)
MySizer.Add(self.Btn, 0, wx.FIXED_MINSIZE | wx.LEFT | wx.RIGHT | wx.TOP, 20)
MySizer.Add(self.TxtBox, 1, wx.EXPAND | wx.ALL, 20)
Frame.SetSizer(MySizer)
Frame.Show(1)
return 1

(つづく)

125 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:13:13 ]
def SetNum(self, event):
Text = self.TxtBox.GetValue()
OldLines = Text.split('\n')
NewLines = []
Count = 1
for OldLine in OldLines:
NewLine = re.sub('^([ \d]+: )?', '%4d: ' % Count, OldLine)
NewLines.append(NewLine)
Count += 1
self.TxtBox.SetValue('\n'.join(NewLines))

app = MyApp()
app.MainLoop()

30分くらいで単純に作ったので、細かいツッコミは無しでお願いします。

126 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:55:44 ]
微妙だなw
つか、そのままコピペしたらエラー出たわw
おいバグかよ、って思ったら、インデントの関係だったわ。
(SetNumはMyAppクラス内なのね。)
これだからpythonはw

127 名前:114 mailto:sage [2007/03/01(木) 01:47:35 ]
>>124
ありがとうございます。こういう参考に出来るコードがあればと思っていたところでした。
ぱっと見まだよく分からないんですが、参考にさせてもらいます。

128 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:20:33 ]
>>126
すぐに気づけてよかったね。
これだから(ry

129 名前:デフォルトの名無しさん [2007/03/01(木) 16:19:36 ]
Winでテキスト表示が場合によって問答無用でCour何とかいう2k/XPでFontlinkしないと日本語化けるフォント使わないように直ったんですか?

130 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:36:26 ]
>>129
日本語でおk



131 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 20:30:47 ]
おれのエスパー能力で解析すると、
「Windowsでテキスト表示のフォントが変わったんですか?」
らしい。

132 名前:デフォルトの名無しさん [2007/03/02(金) 00:17:04 ]
変わるわけねーよ外人だもん。日本語が自分たちのフォントで表示できないことも知らないよ。

133 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 00:54:12 ]
俺もエスパーなんだけどunicode使わないようにすれば解決する

134 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 03:27:05 ]
エスパーだけど非Unicodeにするとたちまち駄目文字問題が出る。
予言だけど本気でコレの作者に中国人なり日本人なりが頼まないと未来永劫にわたって変更はない。


135 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 11:08:47 ]
CourなんとかってCourierのことだな
文字化けしないフォントを使わなくなったのならいいんじゃないか
ちなみにエスパーだけど

136 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 13:12:04 ]
じゃあ俺もエスパー。

137 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:17:02 ]
きてます。きてます。

138 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 19:44:35 ]
質問です。SpinCtrlとSliderをセットにしたコンポーネントを作りたくて、
次のようなクラスを作ったのですが、Sliderを動かしたらその値がSpinCtrlに反映させるようにイベントを作ろうとしても上手くできません
.hで
enum
{ SliderPage_Slider = 100, };

class SliderAndSpinCtrlSet: public wxBoxSizer
{
public:
SliderAndSpinCtrlSet(wxWindow *parent, const wxString& title, int sliderID, float val, float min, float max, int spinCtrlID) : wxBoxSizer(wxHORIZONTAL)
{
m_slider = new wxSlider(parent, sliderID,
val, min, max ,
wxDefaultPosition, wxDefaultSize, 0);
m_spinctrl = new wxSpinCtrl(parent, spinCtrlID, wxString::Format(_T("%d"), val),
wxDefaultPosition, wxDefaultSize,
0,
min, max, val);
Add(m_spinctrl, 0, wxALL | wxGROW, 5);
Add(m_slider, 0, wxALL | wxGROW, 5);

}
void OnSlider(wxScrollEvent& event) { hogehoge... }

として、.cppで
BEGIN_EVENT_TABLE(SliderAndSpinCtrlSet, wxBoxSizer)
EVT_COMMAND_SCROLL(SliderPage_Slider, SliderAndSpinCtrlSet::OnSlider)
END_EVENT_TABLE()

としたのですが、エラーになりました。wxBoxSizerにはsm_eventTableなどを持っていないのが原因という事は分かったのですが、代替案が見つからず困っています。

どなたか上手いやり方をご存じないでしょうか?

139 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 02:38:55 ]
wxPanelとかから継承したら?

140 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 03:13:20 ]
>>139
wxPanelだと、独立したウィンドウになってしまいませんか?
ウィンドウ内のコンポーネントとして配置できるような、SpinCtrlとSliderをセットにしたものを作りたいのですが・・・。



141 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:29:07 ]
最近wxWidgets忘れてるのでとりあえず思い付いたことを適当に書く
 - wxEventHandlerを継承してないとイベント扱えないのでは
 - DECLARE_EVENT_TABLE必要

まあとにかくEvent Handling Overviewくらいは読めと。

142 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:08:40 ]
>>141
wxEvtHanderを継承してみました。

.hで
enum
{ SliderPage_Slider = 100, };

class SliderAndSpinCtrlSet: public wxBoxSizer, wxEvtHandler
{
public:
SliderAndSpinCtrlSet(wxWindow *parent, const wxString& title, int sliderID, float val, float min, float max, int spinCtrlID) : wxBoxSizer(wxHORIZONTAL)
{
m_slider = new wxSlider(parent, sliderID,
val, min, max ,
wxDefaultPosition, wxDefaultSize, 0);
m_spinctrl = new wxSpinCtrl(parent, spinCtrlID, wxString::Format(_T("%d"), val),
wxDefaultPosition, wxDefaultSize,
0,
min, max, val);
Add(m_spinctrl, 0, wxALL | wxGROW, 5);
Add(m_slider, 0, wxALL | wxGROW, 5);

}
void OnSlider(wxScrollEvent& event) { hogehoge... }
DECLARE_EVENT_TABLE()
};
として、.cppで
BEGIN_EVENT_TABLE(SliderAndSpinCtrlSet, wxEvtHander
EVT_COMMAND_SCROLL(SliderPage_Slider, SliderAndSpinCtrlSet::OnSlider)
END_EVENT_TABLE()
としてみましたが、コンパイルは通るものの、スライダーを動かしても何の反応もありません。
どうすればいいんだ・・・。Event Handling Overview今読んでいますが、難しいですね・・・。

143 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:42:03 ]
多分、コントロール自身かその親ウィンドウじゃないと、
コントロールからのイベントが到達しないんじゃない?
やっぱ、wxPanel継承して、そのハンドラで受けるのがいいと思う。
そのPanelをひとつのコンポーネントとしてとらえればいいわけだし、
他パネルに配置もできるでしょ?

どうしても嫌なら、wxEvtHandler継承で、
m_slider->Connect(
SliderPage_Slider,
wxEVT_COMMAND_SLIDER_UPDATED,
wxCommandEventHandler(SliderAndSpinCtrlSet::OnSlider),
NULL, this);
とすればできる気がする。動作確認してないけど。


144 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 10:28:39 ]
>>143
wxPanel継承でできました!ありがとうございます。
というかwxPanelをコンポーネントとして配置できる事を知りませんでした。
まだ使い始めたばかりなもので・・・。

145 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 10:54:48 ]
質問です。
ウィンドウを二つ表示しているんですが、
片方で何らかの操作をした結果の値を、もう一方のウィンドウ上に配置したスライダー
等のコンポーネントにリアルタイムに反映させたいのですが、何か方法はないでしょうか。

具体的に言うと、片方はwxGLCanvasを継承したクラスで、その画面上をドラッグすると
ある値が変わるのですが、ドラッグ中にもう一方のウィンドウ(wxPanel)上の
スライダー等の表示をその値を反映したものにリアルタイムに更新したいのです。

しかし、ドラッグ中にスライダー等にSetValueで値をセットしても、そのウィンドウに
フォーカスが移動するまでスライダー等の表示が更新されません。
仕方が無いのでドラッグ中にwxPanelのSetFocus()メソッドを呼んで無理やり更新させていますが、
なんか気持ち悪いです。

他に方法はないでしょうか。

146 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:02:26 ]
>>145
すみません。自己解決しました。
Update()関数で更新できました。お騒がせしました(汗)

147 名前:デフォルトの名無しさん [2007/03/10(土) 00:07:38 ]
wxPanelのサイズを実行時に変更するにはどうしたらいいでしょうか?

148 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:35:21 ]
実行時に変更じゃわかんねーな
実行後に変更か?それともコンパイル時に指定か?

149 名前:デフォルトの名無しさん [2007/03/10(土) 00:41:52 ]
コンパイル時ではなく,アプリケーションの実行時です.
読み込んだ画像の大きさに合わせて変更するような感じです.
言葉足らずですいません..

150 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:14:44 ]
wxWindow::SetClientSizeかなあ



151 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:15:07 ]
wxImage image("foo.jpg");
panel->SetSize(image.GetWidth(), image.GetHeight());
みたいな感じでいいんじゃない?

152 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 22:42:36 ]
みなさん。
wxFrameにwxGLCanvasセットしているときって、
なぜかwxMessageBoxの表示が全面に出てこなくて、wxFrameを最小化するか、クイック起動の「デスクトップを表示」をするかしないと、
wxMessageBoxが現れなかったりしませんか?

ちなみに当方wxWidgets1.6.3使用。
1.8.2だと治ってるかなぁ・・・。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef