【GUI】wxWidgets(旧w ..
[2ch|▼Menu]
969:デフォルトの名無しさん
06/08/29 17:09:05
frameとpanelとdialogって何が違うんでしょうか?
更新出来る画像領域とボタンのある形を作ろうとwxGladeを実行しても、
画像がStaticBitmapしか見付からないんですが、動的なbitmapは無いんでしょうか?

GUIプログラミング自体初めてで、
解説サイトがさらっと通り過ぎてる所から進めません…

970:デフォルトの名無しさん
06/08/29 19:07:31
>>969
>frameとpanelとdialogって何が違うんでしょうか?
何が違うって、モノが違う。
あえて概要を言うなら、ふれーむは典型的なウインドウ、パネルは平べったい領域単体、ダイアログはパネルのようなウインドウのようなもの。
正確には↓読め。
URLリンク(www.wxwindows.org)

>更新出来る画像領域とボタンのある形を作ろうとwxGladeを実行しても、
>画像がStaticBitmapしか見付からないんですが、動的なbitmapは無いんでしょうか?
そういう特別なwidgetは(少なくともwxGladeには)無い。
パネルなどに直接描画する。

971:デフォルトの名無しさん
06/08/31 14:14:01
>そういう特別なwidgetは(少なくともwxGladeには)無い。
ないんですか…、xrcedとかでもやってみましたが、それらしいのはありませんでした。
で、言われたとおりにパネルに描こうと思ったんですが、
パネルのbitmapタイルへのポインタを取得するようなメンバ関数も、
上書きするようなメンバ関数も見当たりません…

manualを探してみた所、wxImageが目的の物に近い気がするのですが、これはGUI上に置けないor Panelに描けないんでしょうか??


972:デフォルトの名無しさん
06/08/31 15:10:44
>>971
君と僕とは共通の言葉で話ができない気がする。
付属のsampleは見たか?

973:デフォルトの名無しさん
06/08/31 15:56:01
wxGladeで全てのWidgetsを配置できるわけじゃないので
コード自分で書いて。

974:デフォルトの名無しさん
06/08/31 20:42:22
初めてwx触ってみたときに、イメージデータを適当に
フレームか何かのメンバにしてしまってハマったことがあったな。
その上にはサイザーとパネルが貼り付いているものだから、
フレームを拡大縮小している瞬間だけ画像がチラチラ見えたりしたっけ。
なんか、Linux上とWindows上で挙動がちがったりして。
何年か前の話だから何か勘違いしてるかもしれんが。

とにかくその延長で作ったブツのソースを今見たが、
(汚いからよくわからんが)ごちゃごちゃとメンバを持たせた
独自のパネルを作って差し替えてるな。
ちなみに俺はC++を念頭に書いてるが、Pythonなどはよくわからん。

975:デフォルトの名無しさん
06/09/01 15:24:16
wxのマクロを使う糞古臭い設計はなんとかならんのか。
今更こんなもん使う気にならん。

976:デフォルトの名無しさん
06/09/01 15:44:30
グダグダ口から糞たれてねえで、てめえでどうにかしな。

977:デフォルトの名無しさん
06/09/01 16:15:55
>>976
やっくん

978:デフォルトの名無しさん
06/09/01 17:59:37
1.wxSocketServerをlisten
2.イベントハンドラにwxSOCKET_INPUTを登録
3.クライアントから接続しデータを送信
4.一度目のデータ処理を待たずに2度目の送信を行う

サーバサイドでwxYield called recursivelyというAssertが出る

wxSocketBase::Read()でYield()を呼び出していることが原因
socketサンプルをコンパイルしても出るらしい

回避方法情報募集中

979:デフォルトの名無しさん
06/09/01 19:19:27
>>975
10年くらい続いてるツールキットだから仕方なかろう。

wxNG作りたいねという話はときどきMLで出るが、じゃあ誰が作業するんだ、
そんな余力ねーべ、という話に大抵なる。

つまり >>976 ってこった。

980:デフォルトの名無しさん
06/09/01 23:48:00
MFCの要領が解かっていればすぐに使える、というメリットもある。

981:デフォルトの名無しさん
06/09/01 23:54:48
MFCから逃れたくてGUIツールキットを探してる人には
あまりうれしくないけどね。

982:デフォルトの名無しさん
06/09/02 00:00:58
>>979
wxNGって何?

983:デフォルトの名無しさん
06/09/02 00:30:52
>>982
wx Next Generation == 次世代wx

NGは新しいものには何でも使われる定番の名前。

984:デフォルトの名無しさん
06/09/02 01:07:41
>>983
ありがとう。
wxNGをメーリングリストのログやフォーラムを検索してもほとんど言及がないし
唐突に出てくるからNGは一般的な言葉な略語なんだろうなとは思ったが、それだけに
うまくNGの意味を検索する術を思いつかなかったw

985:978
06/09/02 07:46:30
ちょっとわかりずらいので書き直し
HTTPサーバを想像してください
コードはサンプルのものですので、見ればわかります

1.サーバ作成
EVT_SOCKET(SERVER_ID, MyFrame::OnServerEvent)
m_server = new wxSocketServer(addr);
m_server->SetEventHandler(*this, SERVER_ID);
m_server->SetNotify(wxSOCKET_CONNECTION_FLAG);
m_server->Notify(true);
サーバを作成し、Acceptイベントを登録しています

2.Accept
void MyFrame::OnServerEvent(wxSocketEvent& event)
sock = m_server->Accept(false);
sock->SetEventHandler(*this, SOCKET_ID);
sock->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
sock->Notify(true);
接続要求を受け入れ、受信イベントを登録しています

3.データ受信
void MyFrame::OnSocketEvent(wxSocketEvent& event)
wxSocketBase *sock = event.GetSocket();
sock->Read(&c, 1);
受信要求があればそれぞれのソケットにReadを掛けます

この時、クライアントから同時に複数の接続を行うと、それぞれが別スレッドとしてイベント化されます
Readがほぼ同時に別のソケットに対して呼ばれるのですが、イベントハンドラはMyFrameのもので同一です
この時、Readは内部でwxYield(GUI更新)を呼び出します
wxYieldは1度の関数呼び出し中に2度以上呼んではいけない仕様になっています
そこで「wxYield called recursively」というAssertを出してエラー終了します

986:デフォルトの名無しさん
06/09/02 11:36:49
990ぐらいで次スレ立てれば十分なペースかなあ?

987:デフォルトの名無しさん
06/09/03 19:01:47
てst

988:デフォルトの名無しさん
06/09/03 22:41:24
いや980超えたらもう落ちるだけだろ
立てられるうちに立てとくべきだ

989:デフォルトの名無しさん
06/09/06 03:49:36
お前ら開発環境ってどうしてる?

990:デフォルトの名無しさん
06/09/08 17:39:35
KDevelop

991:デフォルトの名無しさん
06/09/08 17:47:12
「開発しない」という選択

992:デフォルトの名無しさん
06/09/08 18:16:04
>>990
おれはGNOME派だが、KDevは乙だと思う。
でもやっぱり使ってないけど。

おれはwxGlade + Emacs (+ 諸々のUNIXツール)

993:デフォルトの名無しさん
06/09/08 21:30:33
wxGladeとかってSizerが激しく使いにくいんだけどどうにかならんの・・・?
そんなわけでwx-DevC++で作って移植してる。
余計面倒なことも多々あるけど;

994:デフォルトの名無しさん
06/09/08 21:57:28
>>989
最近使い始めたんだが、wxGlade/VS2005/Eclipse/poEdit。
アクセラレータの自動登録って動いてないのかな?
wxGladeも自分で手を入れたいぐらい、機能が動いていない。

995:デフォルトの名無しさん
06/09/08 22:42:40
DialogBlocksがイイヨ

996:デフォルトの名無しさん
06/09/09 00:24:22
【GUI】wxWidgets(旧wxWindows) その3【サイザー】
スレリンク(tech板)

997:デフォルトの名無しさん
06/09/09 08:48:02
>>996
どうもお疲れさまでした。

998:デフォルトの名無しさん
06/09/09 09:25:16
>>995
有料か。でもタイトルの文字消すぐらい、誰でもできるんじゃない?

999:デフォルトの名無しさん
06/09/09 13:57:22
Code::BlocksのNightly BuildsではwxSmithが使えるようになってる。

Nightly builds - Code::Blocks
URLリンク(www.codeblocks.org)

WxSmith plugin - CodeBlocks
URLリンク(wiki.codeblocks.org)

1000:デフォルトの名無しさん
06/09/09 14:27:04
日テレはルパンにひどいことしたよね(´・ω・`)

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4671日前に更新/209 KB
担当:undef