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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。

本家
 ttp://www.wxwidgets.org/
wxWindows日本語プロジェクト
 ttp://wxwindowsjp.sourceforge.jp/
Cross-Platform Programming with wxWidgets
 ttp://wxwidgets.info/
Let's wxWidgets
 ttp://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
 ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
 ttp://0xcc.net/pub/uu-2004-08/

前スレ
【GUI】wxWidgets(旧wxWindows) その4【サイザー】
http://pc12.2ch.net/test/read.cgi/tech/1214657360/
2デフォルトの名無しさん:2010/04/09(金) 15:13:33
>>1
3デフォルトの名無しさん:2010/04/09(金) 16:33:22
早すぎね?
4デフォルトの名無しさん:2010/04/09(金) 19:39:56
関連スレ

【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1270309416/
5デフォルトの名無しさん:2010/04/09(金) 19:46:45
早すぎだろ
6デフォルトの名無しさん:2010/04/09(金) 19:47:35
>>1
7デフォルトの名無しさん:2010/04/09(金) 19:48:52
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
8デフォルトの名無しさん:2010/04/09(金) 19:52:37
━━━━━━━━〓〓〓〓〓〓〓〓 アイちゃんキター 〓〓〓〓〓〓〓〓━━━━━━━━

とりあえず>>1
9デフォルトの名無しさん:2010/04/09(金) 22:06:50
>>1
10デフォルトの名無しさん:2010/04/09(金) 22:36:04
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
11デフォルトの名無しさん:2010/04/09(金) 22:38:54
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)
12デフォルトの名無しさん:2010/04/10(土) 01:23:32
この早漏め
13デフォルトの名無しさん:2010/04/10(土) 11:40:00
.Netスタイルのメニュー表示できないの?

http://www.dotup.org/uploda/www.dotup.org798064.gif
左:.Net 右:wx
14デフォルトの名無しさん:2010/04/10(土) 13:16:01
>>13
無理なような希ガス。自作するしかないような…(ツールバーならwxAuiでそれらしく見せれるけど)
15デフォルトの名無しさん:2010/04/14(水) 16:37:31
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)
16デフォルトの名無しさん:2010/04/24(土) 09:25:04
wxPython で作った pnl (=wx.Panel) に書いた画像は取得&保存できた

from wx.lib.colourchooser.canvas import BitmapBuffer
import wx
bb = BitmapBuffer(width, height, wx.Colour(0, 0, 0))
bb.Blit(0, 0, width, height, wx.WindowDC(self.pnl), 0, 0)
bmp = bb.GetBitmap()
bmp.SaveFile(u'できたよ.png', wx.BITMAP_TYPE_PNG)

ちなみに Win32API を使うとこんな感じになるみたい
ttp://www.sm.rim.or.jp/~shishido/wincap.html
17デフォルトの名無しさん:2010/04/26(月) 14:59:40
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)
18デフォルトの名無しさん:2010/05/02(日) 20:44:44
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)
19デフォルトの名無しさん:2010/05/02(日) 21:09:14
クライアント領域だけ透過させることって出来ないか?
20デフォルトの名無しさん:2010/05/03(月) 11:45:01
出来る
21デフォルトの名無しさん:2010/05/09(日) 16:02:55
こういう画像表示をwxPythonでやりたいのですけど

Osiva transparent image viewer, Kent Stork
http://www.noping.net/kent/osiva/

画像を、ウインドウ枠無しで、デスクトップにずらずらと表示したいのですが、どこらへんをとっかかりにして始めたらいいのか分かりません。
「このサンプルが役に立つんじゃねえか?」みたいな意見を聞かせてもらえると嬉しいです。

はねまわるウインドウな例
http://python.matrix.jp/projects/wxPython/bounds.html

たぶんこのサンプルが役立ちそうな気はしてるんですが、このサンプルでは1つのframeしか表示してなくて…
複数のframeを表示することなんて、wxWidgetsで可能なんでしょうか?
もし、できないとしたら、frameの代わりに何が使えそうなのでしょうか…?
あるいは、1つの透明なframeの中に、個別にbitmapを表示する感じになるのでしょうか?
22デフォルトの名無しさん:2010/05/10(月) 00:17:11
可能
23デフォルトの名無しさん:2010/05/10(月) 01:27:50
>>21
サンプルの

  app = wx.App(False)
  frame = MainFrame()
  app.SetTopWindow(frame)
  frame.Show()

のところを

  app = wx.App(False)
  frame = MainFrame(None)
  frame1 = MainFrame(None)
  frame2 = MainFrame(None)
  app.SetTopWindow(frame)
  frame.Show()
  frame1.Show()
  frame2.Show()

と書き換えて実行してみ
24デフォルトの名無しさん:2010/05/10(月) 03:30:29
WinMainから始まる既存のC&Win32ソースに
wxを組み込むのはどうすればいいのでしょうか?
SDKメインフォーム+モードレスダイアログ
のダイアログ部分を差し替えるイメージです

以下のソースではOnRunを呼ぶと制御が戻ってきません。
それ用のthreadを作れば何とかなるのですが
もっとシンプルに出来た記憶があったのですが・・・
wxApp* app = new MyApp();
wxApp::SetInstance(app);
int argc=0; wxChar** argv=NULL;
wxEntryStart(argc,argv);
wxTheApp->CallOnInit();
wxTheApp->OnRun();
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
wxTheApp->OnExit();
wxEntryCleanup();
25デフォルトの名無しさん:2010/05/10(月) 06:23:29
答えは前スレにて
26デフォルトの名無しさん:2010/05/10(月) 16:42:05
>>25
前スレのどこ?アンカおねがい

とりあえずOnRunをコメントアウトしたら上手く動いているようではあるけど
もっときれいにやれてた気がするんだよなぁ
27デフォルトの名無しさん:2010/05/12(水) 00:56:04
>>23
ありがとうございます!
やってみたらframeが複数表示できました。
件のサンプルを参考にして勉強したいと思います。
28デフォルトの名無しさん:2010/05/17(月) 04:01:10
>>24
wx.netに入ってるwx-c.dllを使う
29デフォルトの名無しさん:2010/06/07(月) 13:24:17
wxWidetsをlinuxでコンパイルしてdemoやsamplesが正常に動くことを確認.

しかし
そのlinuxにOSXからssh-Xとかssh -Yとかで接続して,
sapmeles/openglのcubeとかisosurfとかpenguinを実行すると
ウインドウは出てくるけどopenglの描画がされないんだけど仕様なの?

ssh越しでもdemo(lifeとか)やopenglを使わないsamplesは普通に動くんだけど.
30デフォルトの名無しさん:2010/06/21(月) 12:42:42
WindowsのwxWidgetsってウィンドウの状態おかしくなってHideやShowが効かなくなったりIsShownOnScreenが変な値返してると思ってたら
他プロセスからのShowWindow、SendMessage、PostMessageとかメッセージ全部拾わずそのままDefWindowProcに渡してイベント上げてこない
そのくせ、自分自身でウィンドウの表示状態管理してるから不整合起きまくり

HWND取得してWin32APIで状態確認してWin32APIで処理しなきゃダメだ
自プロセスが出した命令のイベントしか上げてこないならEVT_SHOWなんていらないだろ
31デフォルトの名無しさん:2010/06/21(月) 13:01:24
>>29
オーバーレイをお古
かくかくのろのろだけど
3229:2010/06/21(月) 16:22:58
>>31
駄目.なんにも変わらない.
33デフォルトの名無しさん:2010/06/21(月) 22:49:06
gtkより歴史が古いことに驚愕
34デフォルトの名無しさん:2010/06/22(火) 01:04:39
gtkは糞
35デフォルトの名無しさん:2010/06/22(火) 01:10:45
>>34
頑張って置き換えてくれ
36デフォルトの名無しさん:2010/06/24(木) 03:29:19
gtkしかよう知らん.あれは糞なのか?
qtとwxだとどっちが糞なんだ
37デフォルトの名無しさん:2010/06/24(木) 04:07:38
ライセンス的には一部デフォルト設定から機能オフしないといけないけどwxが自由度高い
38デフォルトの名無しさん:2010/07/10(土) 02:27:34
>>37
その辺の話ってどこかにまとまってたりしますか?
39デフォルトの名無しさん:2010/07/10(土) 02:56:56
40名無しさん@そうだ選挙に行こう:2010/07/10(土) 07:39:43
スレ2にまとめがあったけど

GPL - コピペしてもリンクしても感染
LGPL - 動的リンクすれば影響しないが、静的リンクやコピペでは感染
wx - バイナリになっていれば煮ても焼いてもいい。コピペでは相変わらず感染

ということでいいのかな。
>>37は知らないがどういうこと?
41名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:12:48
>>40
wxが余計に解らない

LGPLをゆるくしたものじゃね?
42名無しさん@そうだ選挙に行こう:2010/07/10(土) 14:10:16
567 デフォルトの名無しさん [sage] 2009/10/17(土) 02:23:53 ID: Be:
    http://www.wxwidgets.org/about/newlicen.htm
    The wxWindows Licence is essentially the L-GPL (Library General Public Licence)
    wxWindows ライセンスは 本質的にはLGPL

    QtがLGPLになって企業サポートがついたいま
    wxWindowsに利点があるのだろうか?
43名無しさん@そうだ選挙に行こう:2010/07/11(日) 02:01:41
wxそのものに手を加える場合はLGPL。
単に自分のアプリを作るためのライブラリとして考える場合はバイナリで
自由に使える。ソースコードつけなくてもリンクしようが配布しようが自由。
44名無しさん@そうだ選挙に行こう:2010/07/11(日) 15:48:10
はじめまして。
wxWidgets(wxWindows)日本語ドキュメントプロジェクトの方々に連絡を取った所
既に更新停止しているとの事なので、プロジェクトを移管して頂きSourceForge.netで
新たにプロジェクトを作りました。これからv 2.8 の翻訳を完成に向けて開始したい
と思っています。

https://sourceforge.net/projects/wxwidgetsjpdoc/

翻訳作業の出来る方募集中です。どうぞご参加ください。
45デフォルトの名無しさん:2010/07/23(金) 01:13:45
そうなのかー、乙です。
wxはポータブルなんで、日本でももうすこし広がるといいですね。
46デフォルトの名無しさん:2010/07/24(土) 21:05:36
wxErlang って組み込みになったのか。
http://www.erlang.org/doc/apps/wx/

Erlang/OTP R13A (2009-04-03) から、公式配布物に含む。 (最新はR14A)
47デフォルトの名無しさん:2010/07/26(月) 04:18:08
Rubyスレで聞いたけど判る人がいないっぽいのでこちらに・・・
wxRuby 0.6.0betaを使ったアプリをwxruby.so同梱で配布する場合に適用されるライセンスは
どのようになりますか?

バイナリファイルでの配布なら?任意のライセンスを適用出来るみたいですが
インタプリタ系の言語でバイナリファイルでの配布とか言われても難しいですし・・・
(exerbで配布したとしてもexeファイルの実態はインタプリター+ソースコードだし)

よろしくお願いします
48デフォルトの名無しさん:2010/07/26(月) 05:47:16
orz = 3
49デフォルトの名無しさん:2010/07/26(月) 16:52:17
そういうのわ御社の法務部で聞いてください
50デフォルトの名無しさん:2010/07/27(火) 22:18:14
すみません、誰か教えてください。
wxFormBuilderで作成されたForm内のm_textCtrlXXへの参照・代入ってどうやればいいんですか?

環境はVC++です。
51デフォルトの名無しさん:2010/07/27(火) 22:40:10
内容を読み書きしたいってことかな
ttp://docs.wxwidgets.org/stable/wx_wxtextctrl.html
GetValue、GetLineText
SetValue、AppendText
この辺りだろう、ってか公式のリファレンスに網羅されてるからすぐ見たほうがいいよ
5250:2010/07/27(火) 23:11:48
お返事ありがとうございます。

wxFormBuilderで作成されたクラスがMyFrame1として、
MyFrame1::m_textCtrl28->SetValue(s);
とかやってみたけど、ビルドが通ってくれないのです。
(申し訳ございません、C++よくわかってない人です)

wxFormBuilderの場合、ここみたいに
http://wiki.wxformbuilder.org/Tutorials/UsingSubclass
サブクラス化してアクセスするのが正解なのでしょうか。
試してみたけど、なんか上手くいかないんです。
5350:2010/07/27(火) 23:19:29
いちおう追記しておきますが、wxFormBuilderベースでプログラム作って、ボタンを押して反応するところまでは成功しまています(一日かかりましたが)。
文字列操作しようとしたらまたハマってしまって困っているのです。
54デフォルトの名無しさん:2010/07/28(水) 08:55:09
インスタンス化されたMyFrame1からアクセスしないと駄目です
MyFrame1 frame;
frame->m_textCtrl28->SetValue(wxT("moji"));
この場合外側からのアクセスなのでm_textCtrl28のpermissionはpublicになってないといけない
クラスの扱いはC++の基本なのでまずそちらから勉強した方がライブラリの理解も早くなります
55デフォルトの名無しさん:2010/07/28(水) 08:57:31
ごめん3行目ミスw
frame.m_textCtrl28->SetValue(wxT("moji"));
5650:2010/07/28(水) 19:27:53
おおお!
MyFrame1 frame;
としてみたところ、
frame.
の入力で
frame.m_textCtrl28->SetValue
までVCの補完が効くようになりました!

いけるかなと思ったのですが、ビルドしてみると
「'MyFrame1' : クラス、構造体、共用体に既定のコンストラクタがありません。」
のエラーになってしまいます。
なにはともあれ真理に近づきつつあるようです。ありがとうございます。
C++の勉強します。
57デフォルトの名無しさん:2010/07/28(水) 19:49:01
MyFrame1 frame;
frame = new MyFrame1(NULL);
frame->m_textCtrl28->SetValue(wxT("moji"));
じゃだめ?
5850:2010/07/28(水) 21:25:03
>>57
ありがとうございます。
やはり
「'MyFrame1' : クラス、構造体、共用体に既定のコンストラクタがありません。」
になってしまいます。
コードが継ぎ足し実験しまくりなのが不安なので、シンプルなコードで最初か
らやり直してみようと思います。
59デフォルトの名無しさん:2010/07/29(木) 01:38:24
MyFrame1 *frame = new MyFrame1(NULL);
じゃない?newを受けるのはポインタ

というかもう少しC の勉強してからのほうがいいと思ふぞ
6050:2010/07/29(木) 02:40:00
>>59
ありがとうございます。
まだ継ぎ足し実験コードのままなのですが、試してみました。
MyFrame1 *frame = new MyFrame1(NULL);
frame->m_textCtrl28->SetValue(wxT("moji"));
としてみたところ、
「protected メンバ (クラス 'MyFrame1' で宣言されている) にアクセスできません。」
というエラーが。

m_textCtrl28をprotectedメンバで宣言しているのはwxFormBuilderが吐き出し
たコードで、これはwxFormBuilderとしては「編集しちゃアカん」そうなので
すが、m_textCtrl28をpublicメンバで宣言するように直したところ、ビルドが
通りました。でもSetValue(wxT("moji"))の効果はありませんでした。

うーん、勉強します。シンプルなコードでも試してみます。
61デフォルトの名無しさん:2010/07/29(木) 02:52:29
日記
62デフォルトの名無しさん:2010/07/29(木) 02:55:30
君にとっては新たな発見なのかも知れないが
ここ見てるひとは当たり前過ぎてただのノイズ

wx やりたいのは解るがしばらく我慢して
もう少し C++ の勉強してから改めて取り組んだ方が良い
63デフォルトの名無しさん:2010/07/29(木) 14:33:27
C++のクラスの複雑さは異常
64デフォルトの名無しさん:2010/09/06(月) 03:08:25
Windows XP上のmingw+msys(最新安定板)でmakeしたのですが、ld: final link failed memory exhausted エラーでリンクに失敗します。wxMSW(安定板)とwxWidgets-2010-06-30
物理メモリーは2G近くの空き、システムドライブも20G近く空いています。
ネットでエラーを調べてLDFLAGSに-Wl,--no-keep-memoryを追加してみましたが同じ所でエラーになりました。
誰かタスケテorz
65デフォルトの名無しさん:2010/09/06(月) 03:51:24
無視してもう一回make
66デフォルトの名無しさん:2010/09/06(月) 04:50:27
>>65
既に3回くらいやりましたが駄目でしたorz
67デフォルトの名無しさん:2010/09/06(月) 05:51:56
3回とも同じ結果?
同じ場所で止まる?
6864:2010/09/06(月) 06:18:57
>>67
wxmsw291u_core_gcc_custom.dllを作成中にエラーになるのは同じで、その中でcould not read symbols: Memory exhaustedが起こる、読み込み中のオブジェクトファイルは違う事があるようです。
69デフォルトの名無しさん:2010/09/06(月) 06:45:03
cleanしちゃだめだぞ
70デフォルトの名無しさん:2010/09/06(月) 09:26:15
ビルドごとにディレクトリ作ったか?configureは試したか?
7164:2010/09/06(月) 21:25:58
色々と調べたので中間?報告
ttp://comments.gmane.org/gmane.comp.gnu.mingw.devel/3728
多分、同じ現象が報告されていてgcc4.5では起きて4.4では起きないようです。
但しPF使用量を調べると、Win上のメモリ上限の遥か手前で落ちていました。
msysのデフォルトのulimitの仮想メモリの上限が約2GBでこれに抵触したようです。
現在msys上でrootを取得してulimitを変更する方法を検索中です。
・・・msysはsuが壊れてるとかイミフ(ry

>>69
cleanはconfigureの--enable-debugフラグを変更した時にしかしていません。
その他はLDFLAGSのみを変更してmakeを試しました。

>>70
ディレクトリは変更していません。configureをやり直した場合はcleanで対応しました。

wxWidgetsではなくてmsys固有の問題の可能性があります。
その場合にはmingw相談室で質問後結果報告させて頂きますね。<その方が良いですよね?自信がないです・・・。
72デフォルトの名無しさん:2010/09/06(月) 23:53:29
なんかサイザーの処理が最適化されていないのか、複雑なレイアウトを組むと
再描画に凄く時間が掛かる。
何か回避策や対策などがあるようならば教えてください。
73デフォルトの名無しさん:2010/09/07(火) 17:43:04
wxを窓から捨てる
74デフォルトの名無しさん:2010/09/07(火) 17:55:13
RADツール使ってサイザーやスペーサーを極力使わない構造を見つける
7572:2010/09/07(火) 22:55:14
リサイズしないウィンドウにしても、再描画時にサイザーの計算を
しているっぽいので、そこをもう計算させないっていう様な設定が
出来たらしたいのです。

結局、複雑にサイザー使ってボタンとかびっちり詰め込むと
サイザーの計算が重くなるのは仕方ないなとも思うので、
固定さえ出来れば問題なくなるはずです。
76デフォルトの名無しさん:2010/09/07(火) 23:10:11
各コントロールごとに座標を想定してたりしないか?そういう使い方するもんじゃない
ボックス系のサイザーとグリッド系のサイザーを適切に使えば綺麗にまとまるし
さほど重くもならないと思うんだけど
77デフォルトの名無しさん:2010/09/07(火) 23:22:25
あとコントロール、サイザー共にExpandとStretch(proportion)はちゃんと個別に見直すべき
そのあとでBorder、埋めきれないとこはSpacer
78デフォルトの名無しさん:2010/09/09(木) 09:58:14
wxFormBuilder 3.1
Python対応
C++で日本語でもANSIで吐けるようになってるのを確認
79デフォルトの名無しさん:2010/09/11(土) 02:13:45
>>76
ちょっと見直してみたら、ボックスサイザーを入れ子にしてる所があるな。
そういうのは、グリッド系にすべきって事かな。
80デフォルトの名無しさん:2010/09/11(土) 04:07:42
サイザーごときで重くなるって
100個とか1000個単位で
びっしり詰めてるのか?
81デフォルトの名無しさん:2010/09/11(土) 11:58:53
とりあえず、コントロールは100個近く詰まってはいる。
動作が重いというか、ウィンドウを(最小化などから)表示した時に
普通はパッというぐらいの速度で表示されるけど、それがパラパラっと
コントロールが配置されるのが見えるって感じ。
82デフォルトの名無しさん:2010/09/11(土) 12:03:53
>>78
wxFormBuilderって物凄く安定しているのがスゲーと思った。
こういうのって不安定なものが多いから感心した。
ちなみに、Windows版。
83デフォルトの名無しさん:2010/09/11(土) 14:23:13
以前に作ったコントロール90くらいのダイアログ見つけたからwxFormBuilder通して見てみたけど
C2D E6600でもこの程度では特に重いとは感じない、というか変化がない
SS見せてくれたら試しに組んでみてもいいよ
84デフォルトの名無しさん:2010/09/13(月) 07:11:45
透過GIFを背景画像の上にぺたぺた貼り付けたいんだけど、透過GIFを入れたwxStaticBitmap
を配置するだけだと背景色で透過部分がfillされます。styleをTRANSPARENTにしても効かない。

ウィンドウのDCを取得して、wxDC::DrawBitmapで地道に描かないとだめですかね?
85デフォルトの名無しさん:2010/09/13(月) 11:28:09
styleをTRANSPARENT
SetMaskColour
86デフォルトの名無しさん:2010/10/18(月) 01:51:53
wxTextCtrlでカーソル位置にテキストを挿入するのってどうやるのが楽?
GetInsertionPointの前後で分割して、入れたい値を合成して
再挿入、ってやったけど
どうも改行があると値がずれるようなんで困ってて。
8786:2010/10/18(月) 02:20:13
自己解決。Replace使えば良かったのか。
スレ汚しすまんかった。
88デフォルトの名無しさん:2010/10/18(月) 02:32:29
>>86-87
普通にWriteTextで
キャレット位置に挿入(選択状態なら置換)出来るのでは?
8986:2010/10/20(水) 23:19:42
>>88
……その通りでした。
ちゃんと隅々までドキュメント読むべきでした。
遅くなったけどどうもありがとう。

9081:2010/10/31(日) 01:33:07
>>83
その後、同一マシン上のVMwareでWindows2000とWindows7を実行して試してみたら、
Windows7上では同じ遅さだったけど、Windows2000ではめっちゃ速かったから
少なくともサイザーが遅いって事はなさそう。

ただ、VS2010上でビルド出来ないし、新しいプラットフォームの追従はあまり
早くないね。3.0が出てくれれば解決するのかな。
91デフォルトの名無しさん:2010/10/31(日) 01:53:11
>>90
単にスワップ起こしてるだけじゃねーの?
2GB程割り振って検証してみたら?
92デフォルトの名無しさん:2010/10/31(日) 17:17:26
>>90
VS2010のx64でビルドして使ってるけど、特においらの範囲では問題ないな。

VC6プロジェクトがVS2010で変換できないってことなら、VC2005か、VC2008で変換してからVS10で開けば通るよ。
2.9.xならVC8,VC9用のプロジェクトもある。
9390:2010/11/03(水) 00:56:36
>>92
> VS2010のx64でビルドして使ってるけど、特においらの範囲では問題ないな。
再描画の時に「パッ」じゃなくて「パラ」って感じなんで、まぁ問題っていうほど
じゃないんだけどね。

> VC6プロジェクトがVS2010で変換できないってことなら、VC2005か、VC2008で変換してからVS10で開けば通るよ。
なるほど、その手があるのか。ありがとう。
94デフォルトの名無しさん:2010/11/13(土) 05:11:47
wxURLのProxy処理にバグがある・・・?

GETしたいURL: http://www.google.com/
使うProxy: localhost:8080

このとき、Proxyへリクエストヘッダを見てみると
GET http://www.google.com/ HTTP/1.0
Host: localhost
になってて、Proxyがlocalhostの/を取りに行こうとする。
RFCをちゃんと読んでないのでこれも正しいのかもしれないけど、
一般的なブラウザだと
GET http://www.google.com/ HTTP/1.0
Host: www.google.com
になってる。
送信先がhttpならHostをwww.google.comに書き換えないといけない
(実際そうしてみたら手元の環境では動く)と思うんだが、俺間違ってる?

一応最新のソースをTrunkから落としてきてるけど、こんな単純なところでミス
してたらテスト通らないだろうし…
俺が何かくだらないミスしてる気がしてならないので、誰かツッコミ入れて下さい。
95デフォルトの名無しさん:2010/11/13(土) 11:25:39
>送信先がhttpならHostをwww.google.comに書き換えないといけないと思うんだが、俺間違ってる?

あってる
96デフォルトの名無しさん:2010/11/13(土) 11:31:27
wxURL_NOHOST
97デフォルトの名無しさん:2010/11/13(土) 11:34:21
98デフォルトの名無しさん:2010/11/13(土) 11:54:08
wxRIchTextCtrlの日本語インライン入力パッチありませんか?
99デフォルトの名無しさん:2010/11/23(火) 18:39:00
おや規制明けてる。
>>98
もう解決してる気がするけど、OS毎で処理系が全く異なる上、
日本と中国と韓国くらいしか影響がないのでそんな便利なパッチはたぶん無い。
RichTextはわからんが、Win上のwxStyledTextCtrlと同じなら、
MSWWindowProcをオーバーライドして、
WM_IME_STARTCOMPOSITION、WM_IME_COMPOSITIONあたりを捕捉、
Caretの位置から自分で逐次IMEの位置情報を変更してやればいいと思う。

しかし上でwxURLの話もされてるけど、HTTP通信周りの処理、
結構ボロボロだなコレ。
そういう用途で使ってるユーザがほとんどいないんだろうが・・・。
100デフォルトの名無しさん:2010/11/23(火) 19:22:29
UI以外の部分でwx使う意味ってあんまりないからじゃない?
101デフォルトの名無しさん:2010/11/24(水) 19:51:50
そうか
102デフォルトの名無しさん:2010/11/25(木) 23:22:37
もう誰か作ってるだろと探したけど
wxOnigurumaとか無かった。残念。
103デフォルトの名無しさん:2010/11/26(金) 07:32:10
詳しい方ちょっと教えて下さい…。

ちょっと前からxchmというヘルプビューアを日本語表示できるようにしているのですが、
ShiftJIS->Unicodeの変換がうまくいきません。

一応wxString、wxMBConv、wxCSConv、wxEncodingConverterのリファレンスと
ヘッダにある関数の組み合わせは一通り試したつもりですが、変換されるはずが
変換されなかったり、Initに失敗したりと散々です。

結局g_convert関数(GLibのiconvラッパー)で逃げましたが、wxWidgetで
書かれているソースに突如異物混入みたいで非常に美しくありません。
動作はしたので後は趣味の問題ですが、なんとかならないでしょうか?

環境はDebian、wxWidgets 2.6.7.1です。
104デフォルトの名無しさん:2010/11/26(金) 21:51:03
2.9のドザーな俺にはアドバイスはできんが、
この辺で問題視されてる「wxMBConv はいくつかのサブクラスを持っていて、
こいつらはことごとく wchar_t の内部表現が UCS であることを仮定してる。」
あたりが原因じゃないのか?
ttp://diary.imou.to/~AoiMoe/2004.09/middle.html#2004.09.13
105デフォルトの名無しさん:2010/11/26(金) 23:29:00
>>104
早速感謝。

あー、そのページ、自分も見ました。
今ネット上にある日本語ページの中では一番内容が濃そうでしたね。

wxWidgetsが文字コード回りで大分無茶をしてるらしいことだけは判りました。
実際、文字コード変換には一旦wchar_t型を経由しないとならんのですけど、
 charのSJIS->MB2WC->WC2MB
とかやると、SJISでもUTF8でもない謎コードになっちゃうんですよね。

ちなみに、前スレでもWin使いの方が全く同じ趣旨の質問されてましたけど、
結局やはりWinAPIでなんとかしたらしいですね。
やっぱり無理ですかねぇ…。
106デフォルトの名無しさん:2010/11/27(土) 00:43:27
wchar_t の中身がUCS前提なのはこの場合問題じゃないだろ…
>>104 の言っているUnicodeって、具体的に何?wxはUnicodeビルドで、wxStringにしたいの?

SJISからwxStringにしたいのなら、 wxString s(sjis_string, wxCSConv('cp932')); を試した?
コード出さないで質問しても、エスパーじゃない限り回答できないよ。
107デフォルトの名無しさん:2010/11/27(土) 02:06:26
>>106
あ、書き忘れてましたね、すいません。
入力はマルチバイト(char)のShiftJIS、欲しい出力はマルチバイト(char)のUTF-8で、
wxはDebian etchのものなのでUnicodeビルドです。

上のコードはもちろん試しました。
で、そこからどうすればchar型のUTF-8が得られるのか、もしくは別の方法を使うべき
なのかで悩んでいるのが現状です。

ちなみに、成功例はこちら
#include <glib.h>
char *utf8_str = g_convert(sjis_str, -1, "utf-8", "cp932", NULL, NULL, NULL);
で、これと同等のことをwxで行うにはどう書けばいいか?という質問です。
(この前後にwxベースのコードとやりとりするための処理が入るのですが、それが
また汚いので、できれば回避したいです…)
108デフォルトの名無しさん:2010/11/27(土) 08:39:35
言い訳はいいから問題起こしてる例のコードだせよ
109デフォルトの名無しさん:2010/11/27(土) 11:28:57
>>108
えー、失敗コードはもう全部消しちゃったんですよね…。
てか、ここまでの説明で判る方は判るし、判らん方はそこまででしょう。
この場合、頑張って失敗コード再現しても結果は後者だと思うので、No thank you.
110デフォルトの名無しさん:2010/11/27(土) 11:41:57
エスパーのかたのみお答えください
111デフォルトの名無しさん:2010/11/27(土) 13:14:50
便乗して質問してもいいかな?

wxMBConvとwxCSConvの違いって何?
ヘルプ見てもよくわからん…
112デフォルトの名無しさん:2010/11/27(土) 13:26:57
>>111
wxMBConv は、変換系の抽象クラス。
wxCSConv は wxMBConv を継承した具象クラスで、 >>106 みたいに任意のエンコーディングとの変換を行う。
wxMBConvUTF8 も wxMBConv を継承した具象クラスで、 UTF-8との変換を行う。
113111:2010/11/27(土) 13:34:03
>>112
なるほど。ありがとう。
114107:2010/11/27(土) 15:03:23
http://ja.pastebin.ca/2003497
少なくともUbuntu 10.10では、wxCSConvでちゃんとcp932からUTF-8への変換ができたよ。
Debian etch とか古すぎて使う気にならないけど。
115デフォルトの名無しさん:2010/11/27(土) 17:00:22
>>114
多謝!!

こっちでも試してみましたけど、できた!?ばかな!?

記憶を頼りに前回のコードと比較してみたら、違いが判りました。
OK: wxCSConv(wxT("cp932"))
NG: wxCSConv(wxFONTENCODING_CP932)
…こいつら違う意味なのかよ!?
ちなみに、後者だとSJISでもUTF-8でもないデータになりました。

で、wxWidgetsのソースを読んでみました。

wxCSConv::wxCSConv(const wxChar *charset)
{
  ...
  m_encoding = wxFontMapperBase::GetEncodingFromName(charset);
}

wxCSConv::wxCSConv(wxFontEncoding encoding)
{
  ...
  m_encoding = encoding;
}

で、wxFontMapperBase::GetEncodingFromName(wxT("cp932"))は87でした。
wxFontEncodingはenumなので、じゃあ87はなにかというと、
wx/fontenc.h: wxFONTENCODING_MAX, // highest enumerated encoding value
うん、意味が判らないんですが、これってwx使ってる方からしたら常識だったりしますか?

それと間違えてました、使ってるのはetchでなくlennyでした、スイマセン。
116デフォルトの名無しさん:2010/11/27(土) 17:17:40
C++ の勉強からやり直せ
117デフォルトの名無しさん:2010/11/27(土) 17:40:21
xchmのコード変更完了!
おかげさまで変更箇所が50行が4行になり、かなりすっきりしました。

相談に乗って頂いた方、大変有難うございました。
118107:2010/11/27(土) 18:21:41
fmapbaseの中にwxFONTMAP_CP932のエンコーディング名として最初にWINDOWS-932という
文字列が登録されていて、iconv にはこの名前のエイリアスが登録されていないから iconv に
失敗する、、、んだけど、iconv_open に失敗したらWINDOWS-932の次のCP932が利用されるように
見える。なのに失敗してる。

深追いはしてないからどこでコケてるのか判らないけど、とりあえず wxCSConv にはエンコーディング名を
直接渡したほうが、その名前が直接 iconv に渡るから落とし穴が少なそう。
119デフォルトの名無しさん:2010/11/27(土) 18:27:01
なるほど。ありがとう。
120デフォルトの名無しさん:2010/11/27(土) 18:41:10
>>118
あー、そういうことでしたか、なるほど。
感謝!
121106=114=118:2010/11/27(土) 20:54:49
名前を間違えて107にしてしまった。
>>117 xchm の修正って、本家にフィードバックする予定ありますか?
Linuxでもchmファイル読めたら便利そう。
122デフォルトの名無しさん:2010/11/27(土) 22:36:15
>>121
フィードバックの予定は特に無いです。
というか本家、まだ生きてるんだろうか?

Ad-hocだけど、ここにパッチ貼っときます。
これでコンテンツと索引がちゃんと日本語で表示されるようになります。
検索の日本語対応は、ぱっと見かなり難しそうだったので保留中です。
むしろ誰かやって下さい…。

ちなみに、Linuxでchm読むだけでしたら他にもいくつかビューアがあるようですよ。
ご参考まで。
123デフォルトの名無しさん:2010/11/27(土) 22:37:06
+diff -urN xchm-1.17.orig/src/bitfiddle.inl xchm-1.17/src/bitfiddle.inl
+--- xchm-1.17.orig/src/bitfiddle.inl 2010-11-27 17:21:37.000000000 +0900
++++ xchm-1.17/src/bitfiddle.inl 2010-11-27 18:00:13.000000000 +0900
+@@ -194,10 +194,10 @@
+ return wxEmptyString;
+
+ if(enc != wxFONTENCODING_SYSTEM) {
+- wxCSConv convFrom(wxFONTENCODING_ISO8859_1);
+- wxCSConv convTo(enc);
+-
+- return wxString(input.mb_str(convFrom), convTo);
++ if (enc == wxFONTENCODING_CP932)
++ return wxString(input.To8BitData(), wxCSConv(wxT("cp932")));
++ else
++ return wxString(input.To8BitData(), wxCSConv(enc));
+ }
+
+ return input;
124デフォルトの名無しさん:2010/11/27(土) 22:39:25
+diff -urN xchm-1.17.orig/src/chmfile.cpp xchm-1.17/src/chmfile.cpp
+--- xchm-1.17.orig/src/chmfile.cpp 2010-11-27 17:21:37.000000000 +0900
++++ xchm-1.17/src/chmfile.cpp 2010-11-27 19:35:02.000000000 +0900
+@@ -1056,10 +1056,8 @@
+ #endif
+ topic = CURRENT_CHAR_STRING(combuf);
+ #if wxUSE_UNICODE
+- else {
+- wxCSConv cv(_enc);
+- topic = wxString((const char *)combuf, cv);
+- }
++ else
++ topic = translateEncoding(CURRENT_CHAR_STRING(combuf), _enc);
+ #endif
+ }
+
125デフォルトの名無しさん:2010/12/01(水) 16:15:11
wxPythonでとあるチャットのクライアントを作っているのですが
wx.(Rich)TextCtrlでは打ち消し線は使えないのでしょうか?
126デフォルトの名無しさん:2010/12/03(金) 00:13:26
>>125
wxFONTFLAG_STRIKETHROUGHを指定したフォントを適用してやるとかで
できるんじゃない?
127デフォルトの名無しさん:2010/12/04(土) 15:45:14
ありがとうございます。

font = wx.FFont(8, wx.DEFAULT, wx.FONTFLAG_STRIKETHROUGH)
self.target.SetFont(font)

FONTFLAG_STRIKETHROUGHを指定してみたのですが、打ち消し線が表示されません。
128デフォルトの名無しさん:2010/12/05(日) 00:26:59
wxWidgets2.8.xに実装されているウィジェットの表示サンプル一覧とかないですかね?
サンプルを実行してみないとどのように表示されるのか判らないのはかなり不便・・・('A`)
129デフォルトの名無しさん:2010/12/05(日) 02:32:55
demosも一緒にインストール汁
130デフォルトの名無しさん:2010/12/06(月) 23:39:23
>>127
ttp://trac.wxwidgets.org/ticket/9907
打ち消し線が有効化されるパッチ。
ただし2.9。
131デフォルトの名無しさん:2010/12/25(土) 00:41:50
>>130
遅れましたが、ありがとうございます。
wxWidgets用のパッチのようなのですが、
wxPythonに適用させる方法がわかりません・・・
132デフォルトの名無しさん:2011/01/01(土) 17:37:18
Androidに対応してくれないかなぁ・・・
133デフォルトの名無しさん:2011/01/02(日) 03:08:38
AndroidやiPhoneもそうだけど、Mac対応(wxCocoa)もしっかりして欲しい。
このままじゃ何時まで経っても64bit化出来ない。
やっぱり企業の後ろ盾がないプロジェクトはきついかもね。
134デフォルトの名無しさん:2011/01/15(土) 01:11:15
Qtは人気あるのに、こっちは盛り上がらないね。
135デフォルトの名無しさん:2011/01/15(土) 01:25:48
QtはLGPLがヤダ
136デフォルトの名無しさん:2011/01/15(土) 01:32:35
>>134
枯れてるからね
137デフォルトの名無しさん:2011/01/15(土) 14:18:26
ほとんど同じ時期じゃね?
wx Initial release 1992
Qt Initial release 1992; 19 years ago
wxの敗因は、やっぱ製品として売り出してないからじゃね?
138デフォルトの名無しさん:2011/01/15(土) 20:08:32
Android => Java, Google
gtk,Mono => Suse, Microsoft
Qt => Nokia, Google, Intel
wxwidget => ???
139デフォルトの名無しさん:2011/01/15(土) 20:12:46
何の矢印だよ、それ。
140デフォルトの名無しさん:2011/01/18(火) 00:04:15
wxRubyノート - ListCtrl を使ってサムネイル一覧を表示してみる - Alone Like a Rhinoceros Horn
ttp://d.hatena.ne.jp/h1mesuke/20100427/p1
のコードを動かしたいのですが日本語パスが使える状態で動かせません

Ruby 1.8.7+wxRuby 2.0.1
 動作するけど日本語を含むパスが認識しない
 (Ruby 1.8.xがUTF-8のパスを処理出来ないためっぽい
 S-JISだと今度はwxRubyがパスを認識出来ない)

Ruby 1.9.2+wxRuby 2.0.1
Ruby 1.9.1+wxRuby 2.0.1(mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe)
Ruby 1.9.1+wxRuby 2.0.0(mingw32-ruby-1.9.1-wxruby-2.0.0-setup.exe)
 RubyはUTF-8のパスを処理出来るけど
 >@thumb_list.clear_all
 のところで固まる

日本語パスが使える状態で動作させる方法があったら教えてください
よろしくお願いします
141デフォルトの名無しさん:2011/01/18(火) 06:48:23
142140:2011/01/23(日) 01:33:16
レスありがとう。ってPython!?Σ(゚Д゚)
わざわざ書き直してくれたのに申し訳ないけどRubyでコーディングしたいので・・・

とりあえずいじり回していたら思いついた案
1.Ruby 1.8系を使用。wxImage::load_streamを使う
  ファイルの自動判別が出来ない
2.Ruby 1.8系を使用。Rubyのファイルパスを扱うメソッドをUTF-8に対応するように再定義
  数が多くコーディング量が多い。デバッグも大変
3.RubyでwxPythonを使う
  まだ実験していない。動いたとしても関連ライブラリのサイズがでかくなりそう?
どれもイマイチだ(´・ω・`)
143デフォルトの名無しさん:2011/01/23(日) 03:01:42
Ruby知らんけど、単に文字コード変換するんじゃダメなの?
144デフォルトの名無しさん:2011/01/23(日) 17:59:40
コントロールに画像使うとリソース食うから
サムネにはお勧めできない
145デフォルトの名無しさん:2011/01/23(日) 19:23:43
GUIやるならPythonの方が良いと思うけどなぁ。
Windowsと日本語はもちろんだけど、>>140のBlog見てるとスレッド周りにも
問題あるみたいだし。
146デフォルトの名無しさん:2011/01/23(日) 20:59:01
>サムネイルを作成する間ウィンドウがブロックしないよう、サムネイルの作成は別スレッドで行っている。
>(ただし、サンプルということで、排他制御は一切やっていない)
>
>イベントループのあるメインスレッドからのスレッド切り替えが円滑に行われるよう、
>メインスレッドではタイマーを使って定期的に Thread.pass している。
>
> Wx::Timer.every(100) do
> Thread.pass
> end
>
>これが必要になる理由については次のエントリでやる予定。

謎のコード
147141:2011/01/23(日) 21:11:49
>>142
べつに謝らんでもええよ
漏れは困ってへんから
148デフォルトの名無しさん:2011/01/23(日) 21:38:27
>>146
ttp://d.hatena.ne.jp/h1mesuke/20100508/p1
ここのコメ欄の方が怖いぞ。
149デフォルトの名無しさん:2011/01/24(月) 05:23:51
Ruby使ってないから気にしない
150デフォルトの名無しさん:2011/01/27(木) 23:54:02
wxWidgetsでアニメ(not 動画ファイル。MNG or 連番PNGを想定)を表示したいのですが
単に表示されている画像をインターバルで書き換えていく方法だとフリッカーが出てしまいます
再描画と画像の書き換えの同期が取れていないためだと思いますが同期させる方法が判りません
何か良い方法があったら教えてください。よろしくお願いします
151デフォルトの名無しさん:2011/01/28(金) 01:18:19
ソース貼れ
152デフォルトの名無しさん:2011/01/28(金) 23:04:25
>>150
wxBufferedPaintDC使え。
153150:2011/01/30(日) 00:53:07
レスthx

>>152
なるほどそう言うのがあるのか。試してみます
154デフォルトの名無しさん:2011/01/30(日) 16:14:40
2.9.1が出てから音沙汰無いな
155150:2011/01/31(月) 00:06:45
>>152
フリッカーを無くせました。ありがとうございました
156デフォルトの名無しさん:2011/02/05(土) 22:36:59
>>154
ttp://wx.ibaku.net/changelog/
連日どんどん更新されてるけど音沙汰ない?
157デフォルトの名無しさん:2011/02/11(金) 06:24:01
前スレがやっと埋まったぽい。埋めた人お疲れさま。
158デフォルトの名無しさん:2011/02/11(金) 23:54:18
つうか次スレ立てるの早過ぎだろ
159デフォルトの名無しさん:2011/02/13(日) 21:55:32
このライブラリタダ?
160デフォルトの名無しさん:2011/02/18(金) 08:33:59
EVT_LEFT_DCLICK で bind して処理しようとすると
EVT_LEFT_UP EVT_LEFT_DCLICK が同時に来るみたいなのですが
EVT_LEFT_DCLICK だけ受け取るにはどうすれば良いでしょうか?
161デフォルトの名無しさん:2011/02/18(金) 20:45:41
>>160
wxMouseEventのLeftDClickで判別すればいいんじゃないの?
162デフォルトの名無しさん:2011/02/18(金) 21:35:20
GoogleIME使ってるんだが、TextCtrlで未変換文字列とか変換候補とかが表示されないのは仕様か?
MSIMEならちゃんと表示された
163デフォルトの名無しさん:2011/02/18(金) 22:05:32
>>162
ありがとうございます
試してみましたが
結局 EVT_LEFT_DCLICK に bind された handler 内では LeftDClick なのですが
同時に EVT_LEFT_UP に bind された handler も呼ばれてしまっていて
そっちでは LeftDClick じゃないとみなされるので区別出来ないんです ><
164デフォルトの名無しさん:2011/02/27(日) 19:42:45.69
wxApp の OnInit で wxFrame *frame = new wxFrame(hogehoge);
としたとき wxFrame を delete しないようですが
勝手に GC してくれるんでしょうか?
SetTopWindow(frame);
を実行したときとしないときでは違いますか?
165デフォルトの名無しさん:2011/02/27(日) 20:07:52.06
メモリ以外の資源の解放をGC任せにする男の人って
166デフォルトの名無しさん:2011/02/28(月) 14:53:53.44
>>164
wxWidgetsでは自分で解放すると返って二重解放になる。
ttp://www.wxwidgets.org/docs/faqcmn.htm
FAQに書いてあるから今後はよく読もうな。

167デフォルトの名無しさん:2011/03/04(金) 16:28:05.88
主にwindowsで使っていますがlinuxでも同じソースで動くようにしたいです
wxStringで与えられたあるパス名がフルパスか相対パスかをwxWidgetsのクラス
(例えばwxFileName等)を使って判断出来ますか?
168デフォルトの名無しさん:2011/03/04(金) 20:23:10.51
>>167

wxFileNameにIsAbsoluteというのがあるけども。
それすら調べられないようだとwxに限らずプログラミングは厳しいと思う。
169デフォルトの名無しさん:2011/03/04(金) 20:25:20.16
ポインタ置いときますね。皆さん先刻ご存知かもしれませんが。

wxWidgets(wxstd.moの日本語版, ja.po)をお使いの皆様へ
ttp://suzumizaki.blog6.fc2.com/blog-entry-207.html
170デフォルトの名無しさん:2011/03/04(金) 20:34:43.27
>>164
こっちも読んでおくといいよ。
二重開放以外にもdeleteがまずい理由があるようだから。
ttp://docs.wxwidgets.org/trunk/overview_windowdeletion.html
171デフォルトの名無しさん:2011/03/04(金) 21:31:47.32
>>168
出来ました!!
ありがとうございました!!!
172デフォルトの名無しさん:2011/03/07(月) 03:32:17.98
wxListCtrl の
SetItem - GetItemText とか
SetItemText - GetItem とか
なんか変な対応してるみたいなんですけど
こんなもんなんですか?
他にも IsIconized とか IsShown とか
ドキュメント通りじゃなくて
めちゃくちゃな感じがするんですが
設計者ってパラノイア?
173デフォルトの名無しさん:2011/03/07(月) 04:30:33.22
馬鹿には無理
ttp://wiki.wxwidgets.org/WxListCtrl
Get the String Contents of a "cell" in a LC_REPORT wxListCtrl
174デフォルトの名無しさん:2011/03/07(月) 07:16:25.58
>>173
出来ました!!
ありがとうございました!!!
175デフォルトの名無しさん:2011/03/07(月) 11:00:32.39
質問です
wxWidgetsにはMD5やSHAを計算してくれる関数はありますか?
176デフォルトの名無しさん:2011/03/07(月) 11:32:42.63
177デフォルトの名無しさん:2011/03/07(月) 22:35:46.50
>>175
176じゃないけど、MD5単品ならこういうのとか。
ttp://www.koders.com/cpp/fid80078010DEFC2265E917FE6436718F0AE038CBE6.aspx
178デフォルトの名無しさん:2011/03/08(火) 09:26:30.33
>>178
ありがとうございます
とりあえず別のMD5ライブラリが見つかったのでそちらで間に合わせたのですが
ライセンスの問題とか考えると教えて頂いたもので置き換えた方が良いかも知れません
余力があったら後でご報告します
179デフォルトの名無しさん:2011/03/09(水) 04:31:11.46
wxHTTP::GetResponse が 200 とか 403 とかじゃなくて 0 を返すんですけどバグですか?
180デフォルトの名無しさん:2011/03/09(水) 04:46:40.12
181デフォルトの名無しさん:2011/03/09(水) 05:29:32.87
>>180
出来ました!!
ありがとうございました!!!
182デフォルトの名無しさん:2011/03/09(水) 17:04:06.53
文字コードの変換というか
変換出来ない文字が含まれているかどうかのチェック方法について質問です。

UTF8 の文字列を SJIS に変換しようとしています。

static wxString wxString::FromUTF8(const char *s);
の注意書きに、
Note that this method assumes that s is a valid UTF-8 sequence
and doesn't do any validation in release builds,
it's validity is only checked in debug builds.
というのがありまして、
実際に HTTP 経由で取得したデータ (UTF8 であることは確認済み) に
「〜」の上下反対の文字 (SJIS に変換出来ないコード) などが入っていると、
wxString utf8_data;
wxStringOutputStream ostream(&utf8_data);
httpStream->Read(ostream);
wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
なコードで変換しようとすると
sjis_data の中身が空っぽになってしまいます。
リリースビルドなので無視された結果だと思いますが、
wxWidgets 自身に事前にチェックするための関数などはありますか?

utf8_data には確かに UTF8 のデータが入っています。
問題を起こす文字が含まれていないときは正常に動作するようです。
OS は Windows で wxWidgets は ANSI 版のを使っています。
183デフォルトの名無しさん:2011/03/09(水) 17:16:21.87
むしろUTF-8のまま扱うかUNICODEにしてしまった方が良いのでは?
184デフォルトの名無しさん:2011/03/09(水) 20:02:39.82
>>182
wxStringOperations::IsValidUtf8String
185デフォルトの名無しさん:2011/03/10(木) 08:17:32.00
>>184
ありがとうございます。
今レス見たばかりなのでまだ試していませんが、
http://docs.wxwidgets.org/trunk/annotated.html
を見ても wxStringOperations は見当たらず
ネームスペースかとも思うのですが、
こういったものはどうやって見つければ良いものですか?
186デフォルトの名無しさん:2011/03/10(木) 08:25:43.01
>>182
wxString::FromUTF8Unchecked
187デフォルトの名無しさん:2011/03/10(木) 08:27:16.48
188デフォルトの名無しさん:2011/03/10(木) 08:34:44.59
>>186
ありがとうございます。
しかしそれは Valid じゃない UTF8 データが渡されたときの
動作は undefined だと書かれていますね。
結局事前に調べないといけないことにかわりないようです。

>>187
ありがとうございます。
中身を読んでも良く判りませんでした。
どういう意味でしょうか?
189デフォルトの名無しさん:2011/03/10(木) 08:38:29.58
ん?
「〜」301C(E3809C)
はValidじゃないのか?
190デフォルトの名無しさん:2011/03/10(木) 09:19:31.75
問題なのはUTF-8として正しいかどうかじゃなくて
cp932に変換出来るかどうかってことなんだよな
そうなるとスレ違いかもな
191デフォルトの名無しさん:2011/03/10(木) 13:58:57.41
wxWidgetsって、けっこうS-JISの処理が弱いので、そこの部分だけはネイティブの処理にしたほうがいいかも
俺もアプリ作った事あるけど、S-JISに変換する部分だけはWideCharToMultiByte関数を呼ぶようにしたよ
192デフォルトの名無しさん:2011/03/10(木) 16:16:13.99
>>184
残念ながら使えませんでした。
193デフォルトの名無しさん:2011/03/10(木) 16:24:05.27
>>192
wxUSE_UNICODE_UTF8 を定義してないと使えないよ
ttp://docs.wxwidgets.org/trunk/overview_string.html
194デフォルトの名無しさん:2011/03/10(木) 22:06:44.16
みなさん色々とありがとうございます。
wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
のところで例外出して死ぬパターンと sjis_data が空になるパターン
それからちゃんと成功するパターンとがありました。
結局アクセスしていたサイトに広告が入っていて、
時間帯によって内容が変わるようなのですが、
どうも本体は UTF8 なのに広告部分だけ SJIS とか、
お粗末なサイトだったのが混乱した原因の一つでした。
195デフォルトの名無しさん:2011/04/19(火) 00:00:08.70
3.0マダー(AA略)
196デフォルトの名無しさん:2011/05/25(水) 00:30:08.01
サイザーage
197デフォルトの名無しさん:2011/07/02(土) 23:25:00.75
wxWidgetsとWinPcapをあわせて使おうとしてハマってたのが解決したのでカキコ

- winpcapのpcap.hはwxWidgetsのヘッダファイルのあとにincludeする必要がある
- pcap.h内部でwinsock2.hを呼んでいる
- winsock2.hはwindows.hの前にincludeする必要がある
- wxWidgetsのヘッダは、物によっては内部でwindows.hを呼んでいる

というデッドロック

#include <winsock2.h>
#include <wx/msw/winundef.h>
#include <wx/wx.h>
#include <pcap.h>

こんな感じでwinsock2.h呼んだあとにwx/msw/winundef.hを呼んでやれば解決する
198デフォルトの名無しさん:2011/07/16(土) 23:02:41.64
GUI の配置は XML で定義出来るのが一番良いなあ
199デフォルトの名無しさん:2011/07/17(日) 01:18:11.68
それ何てXUL
200デフォルトの名無しさん:2011/07/17(日) 22:48:55.64
wxだってXRCがあるじゃまいか。
201デフォルトの名無しさん:2011/07/17(日) 23:28:11.01
誰も無いとは言ってないぞ
202デフォルトの名無しさん:2011/07/17(日) 23:40:23.13
後出しww
203デフォルトの名無しさん:2011/07/17(日) 23:43:54.73
ネタにマジレスww
204デフォルトの名無しさん:2011/07/18(月) 05:50:22.06
なんのこっちゃ。
205デフォルトの名無しさん:2011/07/28(木) 23:53:32.75
リストボックスのアイテムとして
ボタンやテキストボックスを表示できる?
206デフォルトの名無しさん:2011/07/29(金) 04:32:53.10
>>205
wxListBoxそのままでは無理。
テキストボックスだけでいいならwxEditableListBox使った方が早い。
それ以外でちょっとだけコントロールを付け足したいだけなら、
wxListBox継承してるwxCheckListBoxのソースが参考になると思う。
画像管理ソフトみたいなサムネリストが欲しいならwxThumbnailCtrl
って非公式コントロールが楽(古いので2.9系では若干修正が必要)。
ttp://wxwidgets.blogspot.com/2011/02/markup-in-control-labels.html
で紹介されてるマークアップがwxListBoxにも適用されると見た目を
いじるだけならすごく楽になるんだろうけどねぇ。
207デフォルトの名無しさん:2011/07/29(金) 07:16:29.38
>>206
ありがと
208デフォルトの名無しさん:2011/08/11(木) 06:56:31.32
自作のTestApp(wxWidgets製)は起動時に渡されたパスを読み込んで処理を
するとして、既に起動しているTestAppがあれば、そのTestAppにパスを引き
渡して自分は死ぬ(多重起動しない)、という動作をしたいです。
Winの場合、EnumWindowsでトップレベルウィンドウでTestAppを探し、
WM_COPYDATAをSendMessageで投げMSWWindowProcで受ける、
という方法を採っていますが、この辺のニーズは常にあるだろうし、
もっと楽なやり方があるんじゃないかと思ってます。
こういう方法の方が楽、とかありましたら教えてください。
209デフォルトの名無しさん:2011/08/11(木) 10:26:43.62
Mutex
210208:2011/08/11(木) 20:27:39.52
>>209
コメントありがとう。
でもMutexだと多重起動のチェックには使えるけど、
「既に起動している別プロセスへ任意のデータを引き渡す」
って処理には使えなく無いですか?


211デフォルトの名無しさん:2011/08/12(金) 00:44:19.62
・メモリマップファイル
・共有メモリ
・TCP/IP
・DDE/OLE/ActiveX
・ウィンドウメッセージ
好きなの使えばいいよ。普通は都合のいい方法を使って自分で作る。
wxならメッセージが一番楽だろう。
212デフォルトの名無しさん:2011/08/12(金) 01:46:19.30
つうか、二重起動防止するAPIが普通にあるだろ。
213デフォルトの名無しさん:2011/08/12(金) 12:39:56.45
>>210
元のをポップアップさせてあとのを閉じれば渡す必要なくね?
214デフォルトの名無しさん:2011/08/12(金) 12:42:49.43
一番簡単なのが欲しいなら作業ファイルにデータ書き込め。
いっそ多重起動もdir lockでやっとけ。
215デフォルトの名無しさん:2011/08/12(金) 17:59:34.09
216デフォルトの名無しさん:2011/08/12(金) 18:09:42.10
217208:2011/08/12(金) 21:25:55.39
なんかいっぱい回答もらえた。ありがとうございます。
誤解を生んで申し訳ないんだけど、多重起動の禁止だけじゃなくて、
データを引き渡すってところまでがやりたいことなんです。

>>211
・メモリマップファイル
・共有メモリ
公式ドキュメントだけ読んで無いと思っていたんですが、
改めて調べたら5年前にパッチとして提出されてました。
「理由は言わないけど却下」と問答無用でRejectされてましたが、
普通に使えました(なんで却下されたんだろう……)

・TCP/IP
ちょっと大掛かりですが、確かにこれだとwxWidgetsのクラスのみで
クロスプラットフォームにいけますね。

・DDE/OLE/ActiveX
MSが意図しているアプリ間通信にはこれを使うべきなんですかね。
クロスプラットフォームからはかけ離れますが。
218208:2011/08/12(金) 22:02:35.23
・ウィンドウメッセージ
はい。最初に書いたとおり、これは把握済です。
ただ、全トップレベルウィンドウを調べるwxWidgetsの関数って
無いですよね?(MS側のAPIはあるけど)

>>213
・起動済アプリを殺して自分が前面に出る
タスクバーに収納されていたり表に出ていたり、というアプリにしているので、
起動済のアプリのそれらの状態を把握するのにちょっと手間がかかりますね。
表示状態のコピーが不要なら確かに比較的手っ取り早いですが。

>>214
・作業ファイルにデータ書き込み&排他制御
大量のデータ通信をアプリ間でやるわけじゃないので、
手っ取り早く汎用性も高くwxWidgetsだけで完結しますね。
しかもクロスプラットフォームで安定している。なるほど。

皆さん色々な案の提示、どうもありがとうございました。
219デフォルトの名無しさん:2011/09/02(金) 20:17:08.41
今更なんですが、C++でGUIを考えた場合、wxWidgetsとQTが候補に挙がりましたが
両者の比較を書いているサイトや記事などありましたら教えてください。
220デフォルトの名無しさん:2011/09/02(金) 20:28:54.93
自分はQt側のことは知らないんだが、こんなサイトがある

wxWidgetsのススメ
http://up-cat.net/wxWidgets%A4%CE%A5%B9%A5%B9%A5%E1.html
221デフォルトの名無しさん:2011/09/02(金) 23:04:35.91
いまは VC2010Express でも wxWidgets 使えて便利だわ
222デフォルトの名無しさん:2011/09/02(金) 23:29:46.37
2.9.2落としてきてVC2008でビルドしてたけど、これgdgdすぎ
スタティックライブラリはできたけど、DLL版は全然ビルドできないわ、サンプルはデバッグ
ライブラリ用になってるからいちいち直さないといけない&直しても同じリソースがどうたら
でビルドできんし、Qtにいくわ
223デフォルトの名無しさん:2011/09/03(土) 00:34:44.80
おいらはMinGWでMakefile作りながらGUI作ってるよ〜 (^q^)
224デフォルトの名無しさん:2011/09/03(土) 01:05:50.35
ああ、早とちりすまん
結局添付されていたVC2008用のプロジェクトファイルがうんこで、VC6用の奴を変換して
ビルドしたらうまくいきましたわ
サンプルも同じでVC6用の奴を変換してビルドすると正常にビルドできました
悪口いってすまん、けどビルドできないVC2008用プロジェクトファイルって罠じゃないのか
225デフォルトの名無しさん:2011/09/03(土) 10:36:44.01
普通makefileの方使わない?
226デフォルトの名無しさん:2011/09/03(土) 11:45:57.63
nmakeしたらいきなりエラーで止まったし、ぐぐるとnmakeよりもVC++上でコンパイルする記事が多かった
ので、そうしてました。
お騒がせして申し訳ないついでに実は開発版の2.9.2をビルドしようとしてたみたいで、俺死にたい...
というより氏ね>俺
227デフォルトの名無しさん:2011/09/03(土) 12:10:03.39
VC使わないといけない理由があるんなら仕方ないけど
gccの方がすんなり行くんじゃないかなぁ。
228デフォルトの名無しさん:2011/09/03(土) 18:49:10.70
WinでgccというとMinGだよね?
たまたまVC入ってたからVCでやってたけど、MinGの方が捗るの?
229デフォルトの名無しさん:2011/09/03(土) 20:59:18.77
wxWidgetsの開発はLinuxのgccで行われてるだろうからMinGW+gccだと環境づくりが楽かも?
VCのことは知らないけどMinGWだと普通に2.9.2コンパイルできたし
コーディングの効率を考えるとVCのオートコンプリート機能が使えたら楽かもしれんが、たぶん出来んだろうしな
230デフォルトの名無しさん:2011/09/03(土) 21:56:21.73
winでわざわざMinGなんて使う必要ないよ。
VCでいい。
231デフォルトの名無しさん:2011/09/04(日) 17:11:05.31
MinGWだとEXEサイズ小さくなるかなと試してみたが、makeしてもlibができないなぁと1時間も
悩んでた、.aで正しいのにwww
アホすぎる俺
しかしwxWidgetsいいね、コントロールは揃ってるし、ドッキングもできる、開発版にすればリボンもどきも
使えるし、wxFormBuilder使えばGUIで画面組み立てられるし、とりあえず満足できる環境だし
232デフォルトの名無しさん:2011/09/04(日) 19:07:07.57
MinGWでビルドした奴とVC++2008でビルドした奴を比較してみたけど、
VC++2008でビルドしたサンプルauidemo.exeは6073KB、MinGWでは9761KB、stripかけて6645KBだった
どちらもデバッグなしのリリース版なんだけど、MinGWの方がでかくなるのね
Dumpbinで依存DLL調べてみたら、VC++2008の方は標準DLLのみでVCランタイム依存もなし
かたやMinGWはやり方が悪いのだろうけどlibgcc_s_dw2-1.dll、libstdc++-6.dllに依存してた
VC++2008の方が優秀な気がする
233デフォルトの名無しさん:2011/09/04(日) 19:22:45.46
>>232

MSYS上から、
g++ -static -o test.exe test.cpp `wx-config --cxxflags` `wx-config --libs`
こうかな?
-staticオプションつければOKのはず。

以下、wxをビルドしたときの設定。MinGW-w64でもいけました。
./configure --with-opengl --enable-ipv6 --disable-shared --disable-monolithic --enable-unicode --enable-official_build --disable-threads --prefix=/mingw
234デフォルトの名無しさん:2011/09/04(日) 19:51:43.28
ちなみにgccは-sオプションをつけると結構ファイルサイズは小さくなる
235デフォルトの名無しさん:2011/09/04(日) 19:52:42.86
あ、既出だった
236デフォルトの名無しさん:2011/09/04(日) 21:11:45.91
>>233-234
アホな俺にわざわざありがとう!
もう1回試してみます!
237デフォルトの名無しさん:2011/09/04(日) 22:39:22.73
>>230
なるほど人によるなあ。
俺なら「わざわざVC使わんでも、MinGでいい」って発想になるわ。
238デフォルトの名無しさん:2011/09/04(日) 23:30:54.03
>>233
ライブラリも作成し直し、サンプルもビルドし直しましたがサイズは6621KBでした
あとDLL依存はとれないのですね
239デフォルトの名無しさん:2011/09/05(月) 00:04:36.25
>>237
同意。
UNIX文化的には、gccが「標準」でVCは「非標準」って認識だからなぁ。

自分で何か書く時とか、「自分はgccしか使わないけど、Win使いのためにVCもサポートしてやるか」ってレベル。
240デフォルトの名無しさん:2011/09/05(月) 00:32:26.75
結局どっちの文化に属してるかによって
何がデフォで何がわざわざなのかが違うってことで。

で、wxそのものがUNIX文化なんだよな。
241デフォルトの名無しさん:2011/09/05(月) 12:01:41.27
>> 238
サンプルはそのままビルドするとDLL依存になるとおもう。

cd samples
make "LDFLAGS = -static"

こんな感じでいかかでしょ。
242デフォルトの名無しさん:2011/09/05(月) 19:03:01.60
>>241
いや、自分でmakeファイルに-static直書きしたけど駄目でした
まぁ、なんか勘違いしてるか頭がアホなんて理解できてないだけでしょう
とりあえずVCでも問題ないのでVCでやります、いろいろありがとうございました
243デフォルトの名無しさん:2011/09/05(月) 19:16:34.99
>>242
がんがれ。

ただ、オープンソース系のライブラリを今後使っていくんなら
いずれにしてもgcc系の流儀とかも覚えておいた方がいいと思うよ。
244デフォルトの名無しさん:2011/09/06(火) 00:10:08.28
call vcvarsall
pushd build\msw
nmake -f makefile.vc BUILD=debug UNICODE=1 USE_GDIPLUS=1 SHARED=1 RUNTIME_LIBS=dynamic
popd

こんな感じでいいんじゃね
あと2.9.2はstableじゃないけどいいの?
245デフォルトの名無しさん:2011/09/10(土) 20:25:18.76
質問お願いします。

http://www.dotup.org/uploda/www.dotup.org2004935.jpg

こういうよくある(名前、種類、ディレクトリ、サイズ)みたいなのを
表示したいんですがヴィジェットは何を使ったらいいでしょうか?
できれば画像のように名前のところの矢印みたいなのを付けたいのと
項目の順番をD&Dで入れ替えたり表示、非表示をポップアップメニューで行いたいです。
項目にはDBのカラムを割り当てたいと思っています。
246デフォルトの名無しさん:2011/09/10(土) 20:38:38.06
すいません、listctrlで出来そうですね。
なんでいつも質問した後は簡単に見つかるんだろう…
247デフォルトの名無しさん:2011/09/10(土) 23:30:44.52
age
248デフォルトの名無しさん:2011/09/11(日) 23:37:25.34
sage
249デフォルトの名無しさん:2011/09/20(火) 23:30:06.13
wxWidgetsのライセンスって何なの(L-GPL)?
これ使って書いたプログラムってソースコード開示する必要あるの?
教えてエロい人!!
250デフォルトの名無しさん:2011/09/22(木) 08:11:29.04
ゴメン、答えられるけどエロくない。
251デフォルトの名無しさん:2011/09/22(木) 12:00:14.06
インポ乙
252デフォルトの名無しさん:2011/09/22(木) 18:59:22.32
まあその質問はググッたらでてきそうだしな…
ところで組み込み用のwxWidgetsとかないんだろうか。
253デフォルトの名無しさん:2011/09/23(金) 14:09:14.39
254デフォルトの名無しさん:2011/09/23(金) 20:06:16.47
情報古過ぎないか
255デフォルトの名無しさん:2011/09/23(金) 21:55:11.24
世界線は変わらなかった
256デフォルトの名無しさん:2011/09/23(金) 22:27:50.66
つうか本家のホームページに書いてあるがな。
257デフォルトの名無しさん:2011/09/23(金) 23:34:52.13
これですね
http://www.wxwidgets.org/about/newlicen.htm

"wxWindows Licence"で配布されていて、
ソースコード開示の必要はないというのが一応の答えかな
258デフォルトの名無しさん:2011/09/24(土) 22:07:43.51
需要があるかどうか不明ですが。

wxWidgetsマニュアルにある Syntax of the builtin regular expression library の邦訳です。
拙作ソフト説明書の一部になっていますが、この頁の訳文に関してはご利用自由です。ただし独自訳多数。

http://h12u.com/hmo2/manual/%E8%A8%AD%E5%AE%9A%E7%AA%93%E5%8F%A3/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95.html
259デフォルトの名無しさん:2011/09/24(土) 22:23:14.63
>>258
乙です
てかwxWidgetsにも正規表現ライブラリあったんだな
260デフォルトの名無しさん:2011/09/24(土) 23:40:22.99
>>258
正格表現って初めて見たが、正則表現ではなくて?
POSIXブラケットのうち、[. .] [= =] [:<:] [:>:]とかって他のライブラリじゃほとんど見ないな。
[[=A=]]ってAやÄなどにマッチするんだっけ?
261デフォルトの名無しさん:2011/09/25(日) 20:52:38.34
>>260
ご指摘Thx. 直しておきました。どこで間違ったんだろう。

> [[=A=]]ってAやÄなどにマッチするんだっけ?
建前としてはそうなるはずだけど誰も実装してないとか何とか。よく知らないですが。
調べてみたら [. .] と [= =] の訳文はかなりおかしい気がしてきた。

262デフォルトの名無しさん:2011/09/26(月) 21:03:37.52
実は訳間違ってました[[=A=]]

ってかくと顔文字っぽい。
263デフォルトの名無しさん:2011/09/27(火) 09:53:24.70
POSIXって良く聞くけどなんですか?
264デフォルトの名無しさん:2011/09/27(火) 20:16:50.72
258です。訳文とかちょっと修正しました。ページ内部のリンクも増やした。

>>263
実は私もよく知らない。
265デフォルトの名無しさん:2011/09/27(火) 23:02:57.78
雲丹の標準規格じゃないの?
266デフォルトの名無しさん:2011/09/27(火) 23:05:37.07
http://ja.wikipedia.org/wiki/POSIX
POSIX(ポジックス パーズィックス、Portable Operating System Interface)とは、
異なる実装のUNIX OSを始めとする各種OSに共通のAPIを定め、移植性の高い
アプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定した
アプリケーションインタフェイス規格である。
267デフォルトの名無しさん:2011/09/28(水) 21:35:43.22
motifもIEEEが規格決めてたから、こっち使いましょうよ
268デフォルトの名無しさん:2011/09/29(木) 14:42:15.49
>>263
ザックリとでよければ「UNIX互換」くらいに考えておけば良い。
269デフォルトの名無しさん:2011/11/08(火) 17:30:42.91
CodeBlocks10.05とwxWigets2.8を使用しています。
勉強中です。
http://wiki.codeblocks.org/index.php?title=WxSmith_tutorialsの1-7までは実行してみました
そんなレベルなのですが、ディレクトリ内のファイル名を一覧でcsvにだせるところまでを目標に
しています。

void filenameFrame::OnButton1Click(wxCommandEvent& event)
{
wxString CurrentDocPath;
wxString Filename;
wxArrayString Filenames;
wxString GetDirectory;
wxFileDialog* OpenDialog = new wxFileDialog(
this,wxEmptyString,wxEmptyString,wxEmptyString,wxEmptyString,wxFD_MULTIPLE,wxDefaultPosition);
if (OpenDialog->ShowModal() == wxID_OK)
{
CurrentDocPath = OpenDialog->GetPath();
Filename << OpenDialog->GetFilename();
GetDirectory << OpenDialog->GetDirectory();
Filenames << OpenDialog->GetFilenames[0];
TextCtrl1->SetLabel(CurrentDocPath);
TextCtrl2->SetLabel(Filename);
TextCtrl3->SetLabel(GetDirectory);
TextCtrl4->SetLabel(Filenames);
}
OpenDialog->Destroy();}
270デフォルトの名無しさん:2011/11/08(火) 17:42:09.03
C:\C\FILENAME\filenameMain.cpp|133|error: invalid use of member (did you forget the '&' ?)|
C:\C\FILENAME\filenameMain.cpp|140|error: conversion from 'wxArrayString*' to 'const wxString' is ambiguous|
C:\wxWidgets2.8\include\wx\string.h|692|note: candidates are: wxString::wxString(wxChar, size_t) <near match>|
コンパイルすると、このようなメッセージが表示されます。

以下の行を削除すると、正常にコンパイルが通ります。
wxArrayString Filenames;
Filenames << OpenDialog->GetFilenames[0];
wxArrayString Filenames;

wxFiledialogで複数ファイルを選択した場合には、配列?を使用しないといけないような気がするので、多分wxArrayStringを使わないとだめかと
思いいれてみました。
配列?なのでGetFilenames[0]といれれば複数ファイルを選択した場合に一番最初のファイル名が入る認識でしたが間違っているようです・・・

複数ファイルの選択と、複数のファイル名の取得方法を検索したのですが、サンプルなどを見つけることができませんでした。

どこが間違っているか教えてください。

271デフォルトの名無しさん:2011/11/08(火) 18:28:13.72
>>269
最後の行
OpenDialog->Destroy();}

中括弧が全角になってるなあ
てかこれ全コードじゃないよね
272デフォルトの名無しさん:2011/11/08(火) 20:52:59.24
サンプルにある"dialogs"が参考になるんじゃないかな、
"File operations->Open files"というのがある。
273デフォルトの名無しさん:2011/11/08(火) 21:01:42.80
>>271
レスありです。全コードではありません。
改行などを削除しています。
wxSmithで作成していますので、どのようなソースが必要になりますか?
プロジェクトフォルダを見ると、bin/obj/wx_pch.h.gch/wxsmithフォルダと
filename.cbp/filename.depend/filename.layout/filenameApp.cpp/filenameApp.h/filenameMain.cpp/filenameMain.h/resource.rc/wx_pch.hファイルがあります。
filenameMain.cppの内容は以下のとおりです。

/***************************************************************
* Name: filenameMain.cpp
* Purpose: Code for Application Frame
* Author: ()
* Created: 2011-11-08
* Copyright: ()
* License:
**************************************************************/

#include "wx_pch.h"
#include "filenameMain.h"
#include <wx/msgdlg.h>

//(*InternalHeaders(filenameFrame)
#include <wx/intl.h>
#include <wx/string.h>
//*)

//helper functions
enum wxbuildinfoformat {
short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
274デフォルトの名無しさん:2011/11/08(火) 21:03:08.95
{
wxString wxbuild(wxVERSION_STRING);

if (format == long_f )
{
#if defined(__WXMSW__)
wxbuild << _T("-Windows");
#elif defined(__UNIX__)
wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
wxbuild << _T("-Unicode build");
#else
wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
}

return wxbuild;
}

//(*IdInit(filenameFrame)
const long filenameFrame::ID_BUTTON1 = wxNewId();
const long filenameFrame::ID_TEXTCTRL1 = wxNewId();
const long filenameFrame::ID_BUTTON2 = wxNewId();
const long filenameFrame::ID_TEXTCTRL2 = wxNewId();
const long filenameFrame::ID_BUTTON3 = wxNewId();
const long filenameFrame::ID_TEXTCTRL3 = wxNewId();
const long filenameFrame::ID_BUTTON4 = wxNewId();
const long filenameFrame::ID_TEXTCTRL4 = wxNewId();
const long filenameFrame::ID_PANEL1 = wxNewId();
//*)
275デフォルトの名無しさん:2011/11/08(火) 21:04:37.12
BEGIN_EVENT_TABLE(filenameFrame,wxFrame)
//(*EventTable(filenameFrame)
//*)
END_EVENT_TABLE()

filenameFrame::filenameFrame(wxWindow* parent,wxWindowID id)
{
//(*Initialize(filenameFrame)
wxFlexGridSizer* FlexGridSizer1;

Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY"));
FlexGridSizer1 = new wxFlexGridSizer(0, 3, 0, 0);
Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxSize(560,106), wxTAB_TRAVERSAL, _T("ID_PANEL1"));
Button1 = new wxButton(Panel1, ID_BUTTON1, _("Label"), wxPoint(8,24), wxSize(72,24), 0, wxDefaultValidator, _T("ID_BUTTON1"));
TextCtrl1 = new wxTextCtrl(Panel1, ID_TEXTCTRL1, _("Text"), wxPoint(104,24), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
Button2 = new wxButton(Panel1, ID_BUTTON2, _("Label"), wxPoint(8,48), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
TextCtrl2 = new wxTextCtrl(Panel1, ID_TEXTCTRL2, _("Text"), wxPoint(104,48), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
Button3 = new wxButton(Panel1, ID_BUTTON3, _("Label"), wxPoint(8,72), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
TextCtrl3 = new wxTextCtrl(Panel1, ID_TEXTCTRL3, _("Text"), wxPoint(104,72), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL3"));
Button4 = new wxButton(Panel1, ID_BUTTON4, _("Label"), wxPoint(8,96), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4"));
276デフォルトの名無しさん:2011/11/08(火) 21:05:18.62
TextCtrl4 = new wxTextCtrl(Panel1, ID_TEXTCTRL4, _("Text"), wxPoint(104,96), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL4"));
FlexGridSizer1->Add(Panel1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
SetSizer(FlexGridSizer1);
FlexGridSizer1->Fit(this);
FlexGridSizer1->SetSizeHints(this);

Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&filenameFrame::OnButton1Click);
//*)
}

filenameFrame::~filenameFrame()
{
//(*Destroy(filenameFrame)
//*)
}

void filenameFrame::OnQuit(wxCommandEvent& event)
{
Close();
}
277デフォルトの名無しさん:2011/11/08(火) 21:06:07.61
void filenameFrame::OnAbout(wxCommandEvent& event)
{
wxString msg = wxbuildinfo(long_f);
wxMessageBox(msg, _("Welcome to..."));
}

void filenameFrame::OnButton1Click(wxCommandEvent& event)
{
wxString CurrentDocPath;
wxString Filename;
wxArrayString Filenames;
wxString GetDirectory;
wxFileDialog* OpenDialog = new wxFileDialog(
this,wxEmptyString,wxEmptyString,wxEmptyString,wxEmptyString,wxFD_MULTIPLE,wxDefaultPosition);
if (OpenDialog->ShowModal() == wxID_OK)
{
CurrentDocPath = OpenDialog->GetPath();
Filename << OpenDialog->GetFilename();
GetDirectory << OpenDialog->GetDirectory();
//Filenames << OpenDialog->GetFilenames[0];
TextCtrl1->SetLabel(CurrentDocPath);
TextCtrl2->SetLabel(Filename);
TextCtrl3->SetLabel(GetDirectory);
//TextCtrl4->SetLabel(Filenames);
}
OpenDialog->Destroy();
}
278デフォルトの名無しさん:2011/11/08(火) 21:58:12.30
連続投稿規制 5回でなるんですねが・・・
こんな感じです。
配列・ポインタなど、マニュアルを目を通したのですが、完全に理解していません。
とりあえず色々さわりながら理解していこうかと考えています。

>>272
ありがとうです。
sampleフォルダの中のですね。
当初この中を探したのですが、wxSmithでのプロジェクトがなかったのであきらめていました。
dialogs.cppの790行目からそれらしい記載があったので参考にしてみます。

ありがとうでした。
279デフォルトの名無しさん:2011/11/08(火) 22:45:02.83
迷惑な香具師だな
280デフォルトの名無しさん:2011/11/09(水) 07:33:07.56
>>278
長いときはcodepadとかideone使おうぜ・・
281デフォルトの名無しさん:2011/11/09(水) 08:19:10.74
会社から帰ったら考えてみるわ>>278
282デフォルトの名無しさん:2011/11/09(水) 14:01:41.90
>>280
そのような場所があるとは知りませんでした。
次からそうします。

スレ汚しすみませんでした。
あと、/sample/dialogs/dialogs.cppの該当部分を、コピペしただけで複数ファイルの選択と、表示ができました。
意味を調べながら理解していきます。

ありがとうでした。
283デフォルトの名無しさん:2011/11/09(水) 17:58:05.53
中学生か
まあがんがれや
284デフォルトの名無しさん:2011/11/22(火) 02:03:10.37
ubuntuでwxWidgetsの勉強中なのですが、samplesフォルダ内のサンプルソース(c++)をいくつか実行してみようと思い、付属のmakefile.cpp及びmakefile.unxをmakeコマンドで実行しようとするとコンパイルに失敗します。
端末より
g++ -c foo.cpp `wx-config --cppflags`
という形でコンパイルしてみてもエラーが出ます。

コンパイルに失敗したサンプルソースはlistbox.cppとlisttest.cppです。

なにかコンパイル時に指定しなければいけないファイルなどがあるのでしょうか?
どなたか教えてください
285デフォルトの名無しさん:2011/11/22(火) 07:25:11.04
wxをビルドしてインストした?
286デフォルトの名無しさん:2011/11/22(火) 12:20:24.62
>>284
エラーメッセージ貼ってよね!
287284:2011/11/22(火) 16:11:40.78
>>285
早速の返信ありがとうございます。

僕が変な勘違いをしてない限りwxはインストール済みだと思います。
>>1のリンクにある
wxWindowsで始めるC++ GUIプログラミング
 ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
 ttp://0xcc.net/pub/uu-2004-08/
に書かれている簡単なソースや、自分で作った幾つかのソースは動きますので。

>>286
返信ありがとうございます。
今すぐにエラーを貼るのは難しいので、数時間後にまた貼らせて頂きます。
288284:2011/11/22(火) 21:45:18.75
listtestでは、makefile.unxと手打ちのコンパイルでは同じエラーが出ました。
makefile.gccはmakeコマンド自体が失敗していたようなので、環境の違いが原因だと思います。
以下、listtestのmakefile.unxに対するエラーの一部(エラーが167行もあるため省略します。)です。

In file included from listtest.cpp:48:0:
listtest.h:29:34: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.h:96:39: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.h:189:36: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.cpp:73:19: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:35: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:51: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:78: エラー: expression list treated as compound expression in initializer [-fpermissive]
listtest.cpp:74:1: エラー: expected ‘,’ or ‘;’ before ‘{’ token
listtest.cpp: コンストラクタ ‘MyFrame::MyFrame(const wxChar*)’ 内:
listtest.cpp:194:50: エラー: オーバーロードされた ‘wxIcon(const char* const [37])’ の呼び出しは曖昧です
listtest.cpp:194:50: 備考: 候補:
/usr/include/wx-2.8/wx/generic/icon.h:35:5: 備考: wxIcon::wxIcon(const wxString&, wxBitmapType, int, int) <near match>
/usr/include/wx-2.8/wx/generic/icon.h:35:5: 備考: 第 1 引数を ‘const char* const [37]’ から ‘const wxString&’ へ変換する方法が不明です
/usr/include/wx-2.8/wx/generic/icon.h:31:5: 備考: wxIcon::wxIcon(char**, int, int) <near match>
/usr/include/wx-2.8/wx/generic/icon.h:31:5: 備考: 第 1 引数を ‘const char* const [37]’ から ‘char**’ へ変換する方法が不明です
/usr/include/wx-2.8/wx/generic/icon.h:30:5: 備考: wxIcon::wxIcon(const char**, int, int) <near match>
289デフォルトの名無しさん:2011/11/22(火) 22:33:02.64
サンプルはどこから持ってきたやつなの?
インストールしてるwxWidgetsとサンプルのバージョンは同じ?

そもそもインストールはどうやってしたの?
パッケージから入れたの? それともソースからビルドしたの?

とまあ、気になる点はいろいろですが、
とりあえずパッケージからwxWidgetsの開発環境をインストールして、
同じバージョンのサンプルをコンパイルするのは、
最初に書かれてる方法で普通にできます。

ソースからビルドすれば付属してるサンプルも一緒にコンパイルしてくれるはずです。
290デフォルトの名無しさん:2011/11/23(水) 00:13:32.17
>>288
そのエラーメッセージは最初の方は含まれてる?
wxのincludeが読み込めてないように思える。includeのエラーが最初にないかい?
291デフォルトの名無しさん:2011/11/23(水) 03:07:47.66
>>288
makefile.gccはMinGW用のMakefileじゃなかったっけ?

make -f <対象のMakefile> でだいたい行けるはず
292デフォルトの名無しさん:2011/11/23(水) 03:19:45.38
そもそもLinuxでwxWidgetsやろうと思ったら

@wxWidgetsのソースダウンロード
A./configure <- 自分が欲しいオプション ->
Bmake && make install
Csamplesフォルダにあるソースコードを「make」コマンドでコンパイル

で終わるはずなんだがなあ
293デフォルトの名無しさん:2011/11/23(水) 07:52:23.63
MinGWでwxWidgetsやろうとしたら面倒すぎて死んだ
294デフォルトの名無しさん:2011/11/23(水) 15:36:30.36
>>293
大丈夫、慣れたらできる(マゾ)
295デフォルトの名無しさん:2011/11/23(水) 15:48:53.79
>>284
しかもよく見たらコマンド間違えてるな

× g++ -c foo.cpp `wx-config --cppflags`

○ g++ -c foo.cpp `wx-config --libs` `wx-config --cxxflags` -o foo

ライブラリにリンクしてないから実行ファイルができてない可能性が
296デフォルトの名無しさん:2011/11/23(水) 21:59:05.34
>>293
wxDev-C++
http://wxdsgn.sourceforge.net/
みたいなのもあるから暇なときに試してみたら?

VC++でやるよりは楽かも…、しれません。
297デフォルトの名無しさん:2011/11/24(木) 00:18:52.26
devC++は好きで昔から結構使ってるけど
やっぱvc版インストしてvcの統合環境でやったほうがデバッグは楽だよ
使うまではdevCのパッケ導入が楽かも知れんけどw

(最近はc#が色々楽すぎるんでwx自体全然使って無いけど・・・)
298デフォルトの名無しさん:2011/11/24(木) 06:38:20.30
VC++2008EnterpriseEditionでやったらめちゃくちゃ簡単だった
299デフォルトの名無しさん:2011/11/24(木) 14:16:50.31
hosyu
300284:2011/11/28(月) 13:24:44.41
レスの間が開いてすみません。みなさん色々とアドバイスありがとうございます。
>>289
よくわからないうちからいろいろなサイトをまわって色々試してたせいで若干記憶が曖昧で申し訳ないのですが、インストールは確かパッケージから入れたと思います。

サンプルのバージョンが2.9.2なのですが、コンパイルエラーを見る限り、2.8のライブラリを読んでいるみたいなので、安定版と最新版を両方入れてたみたいです。

改めて2.8.12を公式から落としてきて、そのサンプルでコンパイルしてみたらうまくいきましたので、ご指摘の通りサンプルとwxWidgetsのバージョンが違ったみたいです。ありがとうございました。

>>290
エラーメッセージは先頭の部分でした。ありがとうございました。
>>291
そうみたいですね。makefile.unxでうまくいきました。ありがとうございました。
>>295
今まで下記サイトを参考に
http://0xcc.net/pub/uu-2004-08/

% g++ -c hello.cpp `wx-config --cppflags`
% g++ -o hello hello.o `wx-config --libs`

というようにコンパイルしてたんですけど良くなかったでしょうか。
301デフォルトの名無しさん:2011/11/28(月) 19:19:16.59
>>300

> 今まで下記サイトを参考に
> http://0xcc.net/pub/uu-2004-08/
>
> % g++ -c hello.cpp `wx-config --cppflags`
> % g++ -o hello hello.o `wx-config --libs`
>
> というようにコンパイルしてたんですけど良くなかったでしょうか。

それならOK、コマンド1行でやるか2行でやるかの違い
ただ wx-config --cppflagsとwx-config --libsが何を表しているのか
includeとかlibってどういうものなのかググって意味を考えたほうがいいよ
302デフォルトの名無しさん:2011/12/05(月) 19:16:58.26
LinuxでパッケージからwxWidgetsを入れた場合、setup.hはどこにあるのでしょうか?
wxUSE_ACCESSIBILITYを有効にしようと思ってファイル検索したら大量にかかったので幾つか内容を変更してみても有効にならなかったので。
303デフォルトの名無しさん:2011/12/05(月) 19:26:14.75
パッケージはバイナリしか入ってない、つまりオプションを切り替えるのは不可能では?
ソースからビルドした方がいいと思われ
304デフォルトの名無しさん:2011/12/05(月) 19:31:56.85
>>303

ありがとう。ソースから入れなおしてみる。
305デフォルトの名無しさん:2011/12/05(月) 19:45:40.51
>>302
Linuxでは通常はソースのパッケージが別に用意されてるよ。

ディストリによるけど後ろに-develみたいなのがついたパッケージ
を入れるとソースが入る。
306デフォルトの名無しさん:2011/12/05(月) 21:19:08.30
>>305
そのレスを見る前に入れなおしてしまった…教えてもらったのに申し訳ないです。



オプションの切り替えは結局setup.hをいじれば良いのでしょうか?
307デフォルトの名無しさん:2011/12/05(月) 21:34:18.68
>>306
./configure -h で付けられるオプションが見れるからやってみ、その中にwxUSE_ACCESSIBILITYも入ってるだろう
308デフォルトの名無しさん:2011/12/05(月) 21:38:07.80
$ ./configure -h | grep accessibility
--enable-accessibility enable accessibility support

あったあった。何に使うのかわからんけどどうぞ。
309デフォルトの名無しさん:2011/12/06(火) 11:00:02.97
>>307,308
何から何まですみません。
310255:2011/12/06(火) 11:57:28.16
wxAccessibleってマニュアルに
For details on the semantics of functions and types, please refer to the Microsoft Active Accessibility 1.2 documentation.
とか、
Availability: only available for the wxMSW port.
とかあるけどlinuxで意味あるのか?
311デフォルトの名無しさん:2011/12/06(火) 14:11:37.79
>>310
下のサイト
http://www14.ocn.ne.jp/~bkclass/doc_wxsamples.html
を見て、サンプルのソース実行して勉強してたんですけど、accessっていうサンプルをコンパイルして実行をしようとすると、
"This sample has to be compiled with wxUSE_ACCESSIBILITY"
というメッセージが出たので、
Windowsのみ本体のwxUSE_ACCESSIBILITYを1にする、とは書いてあったんですが、動いてないということはLinuxでも必要なのかと勝手に思い込んでこちらで聞いてみたんですが、やっぱりLinuxでは意味が無いんでしょうか…
312311:2011/12/06(火) 14:27:45.09
度々すみません。
こちらでもマニュアルを確認したら、accessはWindowsのみと書いてありました。
今度からはマニュアルを良く読んで、わからなかったらこちらで聞きたいと思います。
自分自身でもあんまりにゆとりすぎて反省してます…。
みなさん大変ご手数をおかけしました。
313デフォルトの名無しさん:2011/12/07(水) 15:35:36.35
ほとんどのゆとりにくらべたらまだましなほうだわ
314デフォルトの名無しさん:2011/12/07(水) 19:17:24.24
ゆとりはHSPとかC#に行くだろうからこっちには来ないだろうな
あとC++のGUIライブラリで有名で日本語ドキュメントがあるのはQtとかgtkだろうからさらにやる人は減る
最後にwxWidgetsは英語の知識とC++のオブジェクト指向がわかってないとできないから挫折する人も多いだろう

とゆとりが言ってみる
315デフォルトの名無しさん:2011/12/07(水) 20:24:22.32
wxWidgets > Qt >>> こえられないかべ >>> GTK
316デフォルトの名無しさん:2011/12/11(日) 22:40:24.44
wxWidgets > Qt なの?
317デフォルトの名無しさん:2011/12/15(木) 13:37:15.62
いわゆるビジュアルプログラミング言語は
生産性を改善するという触れ込みでありながら、事実上普及していない

何でかは知らんけど、同じ大きさのモニタに表示できる情報量で
テキストに負けちゃうからっていう説を聞いたことがあるような
318デフォルトの名無しさん:2011/12/16(金) 01:32:59.64
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
319デフォルトの名無しさん:2011/12/16(金) 06:38:53.32
下記のページ
http://docs.wxwidgets.org/2.8/wx_wxcommandevent.html

でwxCommandEventを勉強していたのですが、
GetIntとGetSelectionの違いがよく分かりません。

GetIntは
wxCommandEvent::GetInt
int GetInt()
Returns the integer identifier corresponding to a listbox, choice or radiobox selection (only if the event was a selection, not a deselection), or a boolean value representing the value of a checkbox.

と書いてあり、GetSelectionは
Returns item index for a listbox or choice selection event (not valid for a deselection).

と書いてあるのですが、GetIntの選択されたリストボックスに対応付けられたInt型と言うのはGetSelectionで返される値と何か違うものなのでしょうか?
320デフォルトの名無しさん:2011/12/16(金) 13:32:13.51
ver 2.8.12
include/wx/event.h
538: int GetSelection() const { return m_commandInt; }
554: int GetInt() const { return m_commandInt; }
321デフォルトの名無しさん:2011/12/22(木) 01:35:21.75
リストボックスの中に、入れ子でリストボックスを作りたいと思いマニュアルを見て、wxListBoxのメンバ関数であるCreate関数を利用すれば2段階リストが構成できるということまではわかったのですが、Create関数の使い方がいまいちわかりません。

お手数ですが、どなたか使い方を教えていただきませんでしょうか。
322デフォルトの名無しさん:2011/12/22(木) 06:52:48.65
了解
323デフォルトの名無しさん:2011/12/22(木) 18:41:37.88
wxRegExを使うため、wxregexライブラリをビルドし、成功しました。
しかし、いざプログラムで「wxRegEx」クラスを使おうとすると、「error C2065: 'wxRegEx' : 定義されていない識別子です」というエラーが出て、全く使えません。
思いつく方が居たらお願いします。

OS: Windows 7
wxWidgets: 2.9.1
コンパイラ: Visual C++ 2010 Express
324デフォルトの名無しさん:2011/12/22(木) 18:52:26.42
>>323
すいません、プリコンパイル済みヘッダを再作成してみたらうまくいきました。
スレ汚しすいません……
325デフォルトの名無しさん:2011/12/22(木) 19:21:01.94
MinGW勢はいないのか
どいつもこいつもマイクロソフトの犬だな
326デフォルトの名無しさん:2011/12/23(金) 01:55:47.35
mingwの時点でOSはWindowsなのに
>どいつもこいつもマイクロソフトの犬だな
とか書くのかよw
327デフォルトの名無しさん:2011/12/23(金) 02:50:47.72
確かにそうだな、ちょっとWindows捨ててくる
328デフォルトの名無しさん:2011/12/23(金) 16:08:42.36
wxWidgetsはWindows以外はおまけだろ。
Win32のラッパーとしての価値しかないと思っている。
329デフォルトの名無しさん:2011/12/23(金) 16:11:37.68
>>326
ナイス
330デフォルトの名無しさん:2011/12/23(金) 16:12:34.17
>>328
元々 wxWindows だからなぁ
331デフォルトの名無しさん:2011/12/24(土) 17:54:24.54
migw もなぁ…64bit対応がなぁ…
wxruby とか使いたくても使えないよ

しかしひとはビルドしろという
なんどでもビルドしろという
びるどしろー
332デフォルトの名無しさん:2011/12/25(日) 00:36:14.77
rubyるど
333デフォルトの名無しさん:2011/12/25(日) 08:31:41.01
MSWでwxListCtrlを使ってみたらDESELECTEDイベントが通知されないバグがあったので
クリックやキボード操作が行われる度に選択状態を自分でチェックしてDESELECTEDイベントを送るようにしたら
アイテムが1個の時に何故かマウスイベントが消し去られるバグまで出てきて
もう八方塞がりです
なにこれ馬鹿
334デフォルトの名無しさん:2011/12/25(日) 12:00:56.99
wxLC_VIRTUALの呪い
335デフォルトの名無しさん:2011/12/25(日) 13:04:57.85
そういうのってバグ報告できないのかな?
336デフォルトの名無しさん:2011/12/25(日) 21:34:01.11
馬鹿が使うと馬鹿っぽく振舞います
337デフォルトの名無しさん:2011/12/27(火) 11:01:32.77
明らかに開発陣はWindowsでテストしてないな
昔よりバグが悪化してるwww
338デフォルトの名無しさん:2011/12/27(火) 12:10:40.98
最近wxTreeCtrl使ってるけどイベント通知できんわ
仕様がわかってないだけかも知れんが、バグだったら報告しなきゃだな
339デフォルトの名無しさん:2011/12/27(火) 16:48:41.14
できるよ
340デフォルトの名無しさん:2011/12/27(火) 19:07:54.63
最新バージョンってバグ多いの?
これから使うか悩んでるので教えてださい。
341338:2011/12/27(火) 23:00:49.89
今日ちょっとwxTreeCtrlの全イベント試してみたが、特に問題なかった。環境はMSW(MinGW)

>>340
英語が多くてドキュメントがAPIリファレンスしかないのがある意味バグw
この前wxXMLをHTMLに使ったら一気にバグってワロタ(当たり前だけど)

それさえ超えればいいものだと思います
342デフォルトの名無しさん:2011/12/27(火) 23:36:17.73
自分の無能を環境のせいにすんなやぼけ
343デフォルトの名無しさん:2011/12/28(水) 08:03:39.44
バグとか明らかに仕様とは違う動きをしたりすることは多々あるけど
もともとネイティブAPIをラップしただけだから誤魔化せるかもしれない
結局のところネイティブレベルの知識とwxWidgetsの中身まで調べないといけないので時間はかかる
それでもネイティブコンパイル出来ないC#も嫌だし、MFCよりは遥かにましだけどw
ネイティブレベルのことをしたくてGUIも楽に作りたいって要求に答えてくれるものがないもんな
344デフォルトの名無しさん:2011/12/28(水) 15:34:13.86
>>341
英語なのはキツイけどほかに良いライブラリも見当たらないし我慢するw

>>343
バグがあるってのはちょっと残念だなぁ
ネイティブレベルの知識もそんなに無いし不安だ・・・
けど、大きなバグじゃないのなら少し使ってみようと思います。
345デフォルトの名無しさん:2011/12/29(木) 15:13:49.10
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。
346本田:2011/12/31(土) 22:24:08.47
>>340
http://www.wxwidgets.org/
wxWidgets 2.9.3 Released
2011-12-14

While this is still officially a development release because some API details are still not frozen,
we believe that 2.9.3 can be used in production environment,
especially for the new projects for which (small) changes in behaviour since 2.8 are not a problem.
Give it a try and let us know what do you think!
347デフォルトの名無しさん:2012/01/01(日) 00:03:23.71
2.8もバグ多い
348デフォルトの名無しさん:2012/01/01(日) 11:14:18.13
サイザーage
349 【大吉】 【683円】 :2012/01/01(日) 12:26:18.78
今年のおみくじは大吉を良く目にする
350 【大吉】 :2012/01/01(日) 13:38:44.46
今年はwx使うことあるかなー
351デフォルトの名無しさん:2012/01/04(水) 16:51:15.64
wxWebViewって縦書きに対応してる?
352デフォルトの名無しさん:2012/01/05(木) 01:29:02.25
wxTextCtrlの内容を一行ずつ読み込みたいです。
行数を調べるのに以下のやり方でいいのかと考えたのですがエラーがでます。

size_t abc = wxTextCtrl::TextCtrl1.GetNumberOfLines();

コンパイルすると以下のエラーがでます。

C:\Users\x\Desktop\practice\practiceMain.cpp||In member function 'void practiceFrame::OnButton2Click(wxCommandEvent&)':|
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: 'TextCtrl1' is not a member of 'wxTextCtrl'|

http://docs.wxwidgets.org/2.9.3/classwx_text_file.html
ここを見るとメンバー関数と書いているようなのですが、何か考え違いをしていると思うのですが・・
教えてください。
353デフォルトの名無しさん:2012/01/05(木) 01:32:45.50
>>352
wxTextCtrlではなくwxTextFileとあるけように思える。
IDE使ったほうがいいんじゃない?
354デフォルトの名無しさん:2012/01/05(木) 02:10:29.44
>>353
レスありがとうございます。

リンクを間違っていました。 以下を参考にしました。
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx381.htm#wxtextctrlgetnumberoflines

IDEは、CODE::BLOCKS SVN:7550を使用しています。

試しに以下のことをやってみたのですがエラーがでました。
int abc = TextCtrl1.GetNumberOfLines(TextCtrl1);
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: request for member 'GetNumberOfLines' in '((practiceFrame*)this)->practiceFrame::TextCtrl1', which is of non-class type 'wxTextCtrl*'|
int abc = TextCtrl1.GetNumberOfLines();
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: request for member 'GetNumberOfLines' in '((practiceFrame*)this)->practiceFrame::TextCtrl1', which is of non-class type 'wxTextCtrl*'|

wxTextCtrl1は、CODE::BLOCKSのGUIの部品を貼り付けています。
355デフォルトの名無しさん:2012/01/05(木) 02:31:38.99
>>354
全体のコード見てないからなんとも言えないが、TextCtrlはprivateとかで宣言しないと外から触れんぞ


Frame.h
private :
wxTextCtrl* m_text;

Frame.cpp

// メソッド内にテキストコントロール配置
m_text = new (.....);

m_text->Hogehoge();
356デフォルトの名無しさん:2012/01/05(木) 12:59:53.67
>>355
レスありがとう。

int abc = TextCtrl1 -> GetNumberOfLines();

と書けば、エラーなくコンパイルできました。

本当にありがとうでした。
357デフォルトの名無しさん:2012/01/05(木) 17:12:08.35
>>356
それじゃあコンパイルできても内部処理書く段階で死にそうなのでアドバイス

第十三回-03 ドット演算子とアロー演算子
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/13-03.html

あとこことかも役に立つ

●C++編(言語解説) トップページ
http://www.geocities.jp/ky_webid/cpp/language/index.html
358デフォルトの名無しさん:2012/01/05(木) 21:49:09.86
>>357
ありがとうございます。
ゆっくり読みます。
359デフォルトの名無しさん:2012/01/06(金) 15:41:25.76
テキストファイルを読み込む時に、utf-8のファイルの場合はreadして読み込むことができます。
テキストファイルがsjisの場合、次のようなエラーメッセージが表示されます。
[Faild to convert file "z:\test.txt" to unicode

http://docs.wxwidgets.org/2.9.3/classwx_text_file.html
http://docs.wxwidgets.org/2.9.3/classwx_conv_auto.html
上記を読むと、wxConvAuto機能を使用すると自動的にコンバートしてくれるように記載されているように見えます。

それで、openするときに、wxConvAuto()を付け加えてみたのですがエラーがでます。
wxConvAutoは付けても、付けなくても同じ現象です。
tfile.Open(file,wxConvAuto());

TextCtrl1->SetValue(str);
に、utf-8のファイルを読み込むと内容が反映されます。
sjisだとオープン時に(本当にオープンするときのエラーかどうかはわかりませんが・・・)上記エラーがでます。
またTextCtrl1にはテキストファイルの内容が反映されません。

どこが悪いか教えてください。
360デフォルトの名無しさん:2012/01/06(金) 15:42:52.53
すいません、ソースコードは短めなので、こちらに書きます。

wxString file,str,s,number;
wxTextFile tfile;

wxFileDialog fdlog(this,_T("テキスト読み込みファイルの選択"),
wxEmptyString, wxEmptyString, wxEmptyString,
wxFD_OPEN);
if(fdlog.ShowModal() != wxID_OK) return;
{
file.Clear();
file = fdlog.GetPath();
tfile.Open(file,wxConvAuto());
wxLogMessage(_T("オープンできました。"));
str = tfile.GetFirstLine();
s = str;
str += '\n';
while(!tfile.Eof())
{
s= tfile.GetNextLine();
str += s;
str += '\n';
}
TextCtrl1->SetValue(str);
wxLogMessage(_T("読み込み完了しました"));
tfile.Close();

こんな感じです。
361デフォルトの名無しさん:2012/01/06(金) 16:25:17.96
wxTextCtrlの中身を印刷したいのですが、どのようにすればいいのかいまいち分かりません。
どこかにwxTextCtrlのアドレスか何かを渡せばよいのでしょうか?教えてください
362デフォルトの名無しさん:2012/01/06(金) 18:45:10.90
>>360
過去スレにもSJIS読み込みについての事例が沢山あるが、wxWidgetsのライブラリによるSJIS→UTF-8の変換は全く期待できない
結論としては「UnicodeビルドしてUTF-8で読み込め」でFAだとおもう

おすすめはlibiconvでUTF-8に変換してからwxWidgets内に読み込む
iconvはwikipediaにもサンプルコードがあるから、使うのは難しくないはず http://ja.wikipedia.org/wiki/Iconv

>>361
wxWidgets2.9.3のクラスリファレンス見れ、いっぱい使えそうなのあるぞ

wxPrintData
wxPrintDialog
wxPrintDialogData
wxPrinter
wxPrinterDC
wxPrintout
wxPrintPreview
363361:2012/01/06(金) 19:18:13.20
印刷の件ですが、wxPrinterDCにwxTextCtrlの値を渡せばWindowsでは印刷することができました。

しかし、LINUX(ubuntu11.10)環境下では、印刷プレビューを見る限りではうまくいっている様に思えるのですが、実際に印刷してみると(test wordsと言う文字を1部だけ印刷しようとしました。)、
1枚目のプリントに下記のようなエラーが印刷され、その後プリンタが無限に白紙を出しつづけるという不具合が起こりました。

%!PS-Adobe-3.0 %%Creator: Gnome Print Version 2.18.8 %%CreationDate: D:201201061

この不具合は、wxWidgets2.8.12の印刷用のサンプルプログラムprintingの内容を印刷しようとしても起きてしまったので、
参考にしたサンプルその物がどこかおかしいか、こちらの印刷まわりの設定がおかしいかのどちらかだと思うので、とりあえず上記のエラーを調べてみます。


>>362
レスありがとうございます。
一応読んではいたのですが、いまいちよく分からなかったのでここに頼ってしまいました。住みません。
364デフォルトの名無しさん:2012/01/06(金) 19:42:20.71
さっきShift_JISで読み込むのは無理だと言ったがそれは嘘だ(コマンドー風に)

下みたいなテストプログラムで普通にShift_JIS読み込めてワロタ
2.9.3パない

// テキストファイルの読み込み
wxTextFile file(wxT("./Shift_JIS.txt"));
file.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = file.GetFirstLine();

frame->SetStatusText(test);
frame->Show(true);
365デフォルトの名無しさん:2012/01/07(土) 21:53:08.88
>>362>>364
レスありがとうございます。
試しに以下のように入力してコンパイルしてみました。

wxTextFile file(wxT("c:\\Shift_JIS.txt"));
file.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = file.GetFirstLine();

コンパイルすると、下記エラーがでます。
C:\Users\x\Desktop\practice\practiceMain.cpp|154|エラー: no matching function for call to 'wxConvAuto::wxConvAuto(wxFontEncoding)'|

wxwigetsは,2.8.12を使用しています。
コンパイルが通らない原因が、わからにので2.9.3のソースをダウンロードしてコンパイルを試しています。


cドライブ直下に、MinGWとmsysというのを導入後、msys.batで端末?を起動しました。
そこで、./configure --disable-shared --enable-monolithic --enable-unicodeと行い、make make installまでは行いました。
make installした成果物?をwindowsの実行環境にどうもっていくか調べているところです。

何が悪いか手探りなので的外れなことしてるような気もするんですが、これしかできないのでとりあえず2.9.3の環境を作ってみます。
366デフォルトの名無しさん:2012/01/07(土) 22:42:42.75
>>365
やりかたは間違ってないとおもうので頑張って
今ちょっとクラスリファレンス見てたけど

wxTextFileの部分で::Openで取れる引数が2.8から2.9で変わってるみたい

wxWidgets 2.8

bool Open(wxMBConv& conv = wxConvUTF8) const
bool Open(const wxString& strFile, wxMBConv& conv = wxConvUTF8) const

wxWidgets 2.9

bool Open (const wxMBConv &conv=wxConvAuto()) const
bool Open (const wxString &strFile, const wxMBConv &conv=wxConvAuto()) const

OpenメソッドにwxConvAuto()をとれるのが新機能みたい。2.8にはないんだな、これが。
367デフォルトの名無しさん:2012/01/08(日) 00:03:23.41
>>366
わざわざ調べてくれてありがとうございます。

2.8にはない新機能だったんですね。
2.9.3にする励みになりました。

code::blocksで、コンパイル済みのものを入れるだけで1週間くらいかかった記憶があります。
コンパイルなど慣れないことをするので、今回も同じくらい時間かかるかもしれません。

でも2.9.3にする気にになりました。
ありがとうございました。
368デフォルトの名無しさん:2012/01/09(月) 00:02:24.31
Mingwをcドライブ直下にインストール
PATHに、C:\MinGW\bin;C:\MinGW\mingw32\binを追加
c:\wxWigets-2.9.3を解凍

下記を参考にしました。
http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_%28MSW%29
オプションはcode::blocksで使用する場合のofficial supportと書いていたので下記とおりにしています。

コマンドプロンプトで下記実行
C:\Users\x>SET PATH=c:\mingw\bin;c:\mingw\mingw32\bin
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug
c:\wxWidgets-2.9.3\lib\gcc_dll>copy *.dll %windir%

code::blocksの設定
settings>Enviroment>Enviromet variables
WSWIN=C:\wxWidgets-2.9.3
settings>Grobal Variable Editor
current varibale:wx
base: ${WXWIN}
include: ${WXWIN}\include
lib: ${WXWIN}\lib

開発環境のコンパイルが初めてで、これでいいのか不安ですが、code::blocks上のプロジェクトのコンパイルが通りました。
369デフォルトの名無しさん:2012/01/09(月) 00:08:31.38
>>366

wxTextFile gfile(wxT("c:\\Shift_JIS.txt"));
gfile.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = gfile.GetFirstLine();


tfile.Open(file,wxConvAuto(wxFONTENCODING_CP932));

二通りのやりかたでコンパイルが正常にできました。

また、sjisのファイルを読みこむこともできました。

ありがとうございました。
助かりました!!!
370361:2012/01/09(月) 23:07:32.49
ubuntuでの印刷の件ですが、使っているプリンタのドライバがよくなかった様で、ドライバを変更したらうまく行きました。

現状、wxTextCtrl内の行が長すぎると用紙からはみ出てしまうので、適切なところで改ページするようにしたいと思っていますので、またもう少し考えてみます。
371デフォルトの名無しさん:2012/01/11(水) 14:12:14.80
Linuxで開発したツールを知り合いの古い環境で動くかどうかテストしたら、libc.so.6が見当たらないっていうエラーが出てくるのですが、標準Cライブラリって動的リンクするしか方法はないのでしょうか?
その場合、作った実行ファイルは古い環境では動かないのかな…
一応./configure のオプションは
--with-gtk --enable-std_iostreams --enable-std_string
--enable-controls --disable-shared --enable-unicode --with-libjpeg=builtin
--with-libpng=builtin --with-regex=builtin --with-libtiff=builtin --with-zlib=builtin --with-expat=builtin

にして、プログラムのコンパイルは
g++ -o hoge.cpp `wx-config --cxxflags` `wx-config --libs`
g++ -o hoge.cpp `wx-config --cxxflags` `wx-config --libs` -static-libgcc -static-libstdc++
g++ -o hoge.cpp `wx-config --cxxflags` `wx-config --static --libs`
の3通りで実行ファイルを作ってそれぞれ試してもらったのですが、どれもlibc.so.6が利用できないというような意味のエラーが出てきます。
また
g++ -static -o hoge.cpp `wx-config --cxxflags` `wx-config --libs`
についても試しましたが、コンパイルエラーが大量に(主にライブラリが見当たらないといったようなエラー)が出てきます。
解決方法があるようでしたらご教授お願いします
372デフォルトの名無しさん:2012/01/11(水) 18:34:11.40
>>371
エスパーしてみるわ

一応忠告しとくけどwxWidgetsは「同じソースコードからWin, Linux, Macで使えるバイナリがコンパイルできる」のであって
「LInuxでコンパイルしたバイナリがWindowsで使える」というわけではない。
それができるのはJavaだけ

上の問題ではないとしたら
Linuxでコンパイル→Linuxで使う、はライブラリが揃ってる限りいけるはず。

よって、既に生成している実行ファイルを友人の環境で「ldd <- 対象の実行ファイル ->」して
友人の環境で足りないライブラリを追加する

もしくは友人の環境でwxWidgetsのソースをコンパイルして「wx-config」が正しく使えるようにする。


373372:2012/01/11(水) 18:39:33.34
というかlibc.so.6が足りないだけなら
実行ファイルと同じディレクトリにlibc.so.6を置いて実行すればいける気もする
374デフォルトの名無しさん:2012/01/11(水) 20:17:58.74
>>372
レスありがとうございます。

LinuxでコンパイルしたファイルはLinuxでは使えない、というのはわかっています。私も知り合いも環境はLinuxです。
極力ユーザが煩わしくないように、実行ファイル以外のファイルをユーザが別途インストールする必要が無いようにしたいのですが、不可能なのでしょうか?下記サイト
http://up-cat.net/wxWidgets%A4%CE%A5%B9%A5%B9%A5%E1.html
によると、Javaとは違いランタイムがいらないと書いてありますが限度があるのでしょうか
一応Windows版は同じソースで私の周りの環境では問題なく動いたのですが…

libc.so.6を実行ファイルと同じフォルダにおけ、ということですが、共有ライブラリはlddコマンドで見れるような指定されているアドレスに置かなくても利用可能なのでしょうか?
その方法で動作するかもしれないのでまた試してみます。
375デフォルトの名無しさん:2012/01/11(水) 21:04:03.63
>>374
> LinuxでコンパイルしたファイルはLinuxでは使えない、というのはわかっています。

いやわかってないだろ、どう見ても。
376デフォルトの名無しさん:2012/01/11(水) 21:12:12.37
>>375
すみません間違いました。
LinuxでコンパイルしたファイルはLinux以外では使えない、というのはわかっています。です
377デフォルトの名無しさん:2012/01/12(木) 00:36:38.89
>>376
自分の環境でコンパイルするときに正しく-staticオプションつけとけば、依存なしにバイナリを走らせることはできるはず
依存関係が出てるってことはstaticリンクビルドされてないのは間違いないので、そのアプリをちゃんとコンパイルしなおすべきかと
378デフォルトの名無しさん:2012/01/12(木) 10:46:49.97
>>377
レスありがとうございます。

-static-libcというコマンドは存在しないみたいで、どのようにオプションをつければlibcを静的リンクすればいいのか、自分なりに調べてみたのですがよく分からないのでできれば教えていただきたいです。
379デフォルトの名無しさん:2012/01/12(木) 12:10:12.07
>>378
リンク時に「-static」とつければいいです
この意味がわからなければ
gcc,CXXFLAGS,LDFLAGS ,MAKEFILE、リンカとかのキーワードでググってね
380デフォルトの名無しさん:2012/01/12(木) 15:19:19.22
>>379
g++ -static -o hoge.cpp `wx-config --cxxflags` `wx-config --libs`
でコンパイルしていたのですが、下記のようなエラー(長いので前半部分だけです。ごめんなさい。)が出るのですが、./configureのオプションか何かが足りないのでしょうか…

/usr/bin/ld: cannot find -lgdk_pixbuf-2.0
/usr/local/lib/libwx_baseu-2.8.a(baselib_dlunix.o): In function `wxDynamicLibrary::GetProgramHandle()':
dlunix.cpp:(.text+0x13): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgio-2.0.a(libgio_2_0_la-glocalfileinfo.o): In function `lookup_gid_name':
(.text+0x1a5c): warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/lib/libwx_baseu-2.8.a(baselib_utilsunx.o): In function `wxGetUserHome(wxString const&)':
utilsunx.cpp:(.text+0x14f5): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
utilsunx.cpp:(.text+0x157a): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libglib-2.0.a(gutils.o): In function `g_get_any_init_do':
(.text+0xe2a): warning: Using 'setpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libglib-2.0.a(gutils.o): In function `g_get_any_init_do':
(.text+0xe40): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

381デフォルトの名無しさん:2012/01/12(木) 18:33:37.54
>>380
どこまで甘えてんだよ
少しは自分で調べてください・・・少しはソースを見やがれ

まず1行目
-lgdk_pixbuf-2.0

こいつの意味は「libgdk_pixbuf-2.0.a」という名前のライブラリをリンクするという意味
調べたらGNOMEプロジェクトの1つみたいだな
http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/

まあこいつはyumでもapt-getでもなんでもいいからインストールすればいいだろ
インストール後に /usr/lib 直下に上で書いたライブラリがあればコンパイルは通るはず

2行目より後は警告だから無視してもいいのかもしれないが、意味としては
「warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking」
「警告:コンパイルに使っとるglibcがシェアードライブラリじゃねーか、スタティックライブラリでリンクしろよクソ野郎」

という感じですか、間違ってたらすまん。頑張ってgdk-pixbufとwxとglibのライブラリを手に入れてください(もちろんスタティックライブラリで)
382デフォルトの名無しさん:2012/01/12(木) 18:42:52.46
あ、でも
「warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking」系のエラーは
スタティックライブラリを使っても出ることがあるみたいだな。
つーことは一番の目標はgdk-pixbufをインストールすることか。簡単じゃん。
383デフォルトの名無しさん:2012/01/12(木) 19:03:01.17
ここまでおまえの自演
384デフォルトの名無しさん:2012/01/12(木) 20:59:28.67
>>381
後から見返してみると私の状況説明がたりないため、自業自得ですが、
どこまで甘えてんだよと言われましても>>379までの-staticオプションをつけてコンパイルする、というのは>>371ですでにためしたと説明したつもりだったのですが、すみません。

一応こちらでもできる限りのことを調べて、ソースも読んでから書き込んだつもりですが、調べたことをかけてなかったら確かに意味がありませんね。

一応libgdk-pixbuf-2.0.0、libgdk-pixbuf-2.0.dvg はインストール済みで、wxWidgetsはもちろん入れています。glibやlibcもapt-cache searchを使って目についた関連がありそうなものをインストールしまくって、コンパイルした結果上記のエラーが出ています。
また、libc.aと言うファイルを5時間ほど探しつづけましたが見当たらず、また、下記のリンクの一番下の回答者の
Check your Output mode settings, I believe you have linking set to "static". So the linker is looking for libgdk-pixbuf-2.0.a, which is probably not present. If you switch it to "shared" it should begin to work..

http://www.ultimatepp.org/forum/index.php?t=rview&goto=34857&th=6160

をみると、私の英語力ではlibgdk-pixbuf-2.0.0はstaticで出力できないと読めるため、八方塞がりとなり、ここで聞いた次第です。
気分を悪くしてしまってすみません。

>>383
自演ではないです。
385デフォルトの名無しさん:2012/01/12(木) 21:16:37.55
>>384
お前さんが知り合いの古い環境と同じ環境作って、
その環境でwxWidgetsとそのツールビルドすればええやん
386381:2012/01/12(木) 21:32:18.61
>>384
なんか思ったより込み入った問題みたいだな、キツイこと言ったかもしれないけど冗談だと思って聞き流してくだされ

ちょっとググッたけどlibgdk-pixbuf-2.0.0のスタティックライブラリが生成できないのはバグみたいだぞ
そして2番目のリンクではパッチとかも出てる
http://askubuntu.com/questions/7990/what-can-i-do-about-missing-libgdk-pixbuf-2-0-la
https://bugs.launchpad.net/ubuntu/+source/gtkglextmm/+bug/662572

で、対策としては gdk-pixbufのソースをとってきて
./configure --enable-static でいけるんではないかと思う(./configure -h したら一応あったけどこれは試した?)
387381:2012/01/12(木) 23:04:21.77
gdk-pixbuf-2.21.3にて
./configure --enable-static
make
make install

できた。めんどくせえ。
388デフォルトの名無しさん:2012/01/12(木) 23:23:27.63
wx関係ない問題なのに面倒見いいな……
389デフォルトの名無しさん:2012/01/12(木) 23:24:18.71
自演ですから
390デフォルトの名無しさん:2012/01/13(金) 00:05:23.76
>>385
レスありがとうございます
すみません。また書き方が悪かったですね。
知り合いの環境で動かしたのは、Linuxの環境で作成したバイナリファイルを、Linuxの他の環境で動くかどうかを確かめるためでしたので、知り合いの環境だけで動いても目的を果たせないんです。
linux環境すべてで動かせるとは思ってはいないのですが、せめて、多少のバージョン違いは克服したい、と思いまして。

>>386
レスありがとうございます
いえ、こちらが勝手に謝ってるだけだと思ってください。
そもそも自力で解決できないのが悪いんですし。
そしてまさかそこまで調べていただけるとは思いませんでした。
本当にありがとうございます。
パッチを試してみて、また報告します。
こちらのwxWidgetsのバージョンは2.8.12と2.9.3があるのですが、--enable-staticというオプションが確認できないので、調べてみます。
そしてちゃんと調べればきちんとパッチなども出てきたのですね…
これからはもっとよく調べてから書き込むことにします。
391381:2012/01/13(金) 00:44:46.25
>>388
wxはgtkもラップしてますしおすし

>>390
質問に答えるついででビルドしてみただけだよん
392371:2012/01/13(金) 02:21:19.65
>>388
ここでするべき質問ではなかったでしょうか…それ以前にちゃんと隅々まで調べておくべきでしたね

>>391
--enable-staticはgdk-pixbufの方のオプションでしたね。勘違いしました。
無事に静的ライブラリでリンクすることができました。本当に有難うございました。


しかし本当に見返すとひどいですね。半年ROMって出直すことにします。
393デフォルトの名無しさん:2012/01/17(火) 01:29:32.09
過疎ってんのかと思ったら割と繁盛してた

XRCでローカライゼーション機能(wxLocale)に対応してるみたいですが、普通にXRC中に文字列書いておけば
コンバートしてくれるのでしょうか?
自分で試せって?そうですね、すいません

久々に何か書いてみたかっただけです(^0^)
394デフォルトの名無しさん:2012/01/18(水) 14:29:53.54
2.8.12をソースからコンパイルしました。
>>368が間違っているかどうかわからないのですが、今のコンパイル環境を書きます。
CODE::BLOCKSを使用する前提なので、CODE::BLOCKSスレかと思ったのですが、
ここで質問させてもらっていたのでここに書きます。
windows 7 64bit/32bit共にmingwだと、2.8.12はコンパイルが行えなかったです。
mingwだとコンパイルできなかったので、tdm-gcc tdm-gcc-4.6.1をインストールしました。
tdm-gcc-4.6.1は、setupの時に32bitを選択しています。
ttp://forums.codeblocks.org/index.php/topic,15283.msg102557.html#msg102557

PATHにC:\MinGW32\bin;C:\MinGW32\mingw32\binを追加。

DOSプロンプトで以下を実行。(2.9.3)
C:\Users\x>SET PATH=c:\mingw\bin;c:\mingw\mingw32\bin
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release CXXFLAGS="-fno-keep-inline-dllexport"
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -j -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug CXXFLAGS="-fno-keep-inline-dllexport"
c:\wxWidgets-2.9.3\lib\gcc_dll>copy *.dll %windir%
(2.8.12)
C:\Users\x>SET PATH=c:\mingw\bin;c:\mingw\mingw32\bin
c:\wxWidgets-2.8.12\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
c:\wxWidgets-2.8.12\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release CXXFLAGS="-fno-keep-inline-dllexport"
c:\wxWidgets-2.8.12\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug clean
c:\wxWidgets-2.8.12\build\msw>mingw32-make -j -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug CXXFLAGS="-fno-keep-inline-dllexport"
c:\wxWidgets-2.8.12\lib\gcc_dll>copy *.dll %windir%
395デフォルトの名無しさん:2012/01/18(水) 14:41:08.38
何が間違っているのか教えてください。
wxWigets2.9.3を使用しています。
http://docs.wxwidgets.org/trunk/group__group__funcmacro__file.html#ga599c484cd4deea8fed7275a9a7e0a11c
ここを参考にしました。
wxRenameFile(_T("z:\\test.txt"),_T("z:\\test2.txt"));
コンパイル後、実行すると Failed to copy the file 'z:\test.txt' to 'z:\test2.txt' (error 2: 指定されたファイルが見つかりません。と表示されます。
zドライブ上には、test.txtファイルはあります。

試しに、下記を試すと実行できました。
  wxMkdir(_T("Z:\\T"));
wxMkdir(_T("Z:\\T"));

と実行すると、ディレクトリの作成と削除はできました。
2.9.3が開発版だからなにか問題があるかと思い、2.8.12を入れてみたのですが同じ現象です。

多分書き方が悪いんだと思うのですが、どこがわるいのかわかりません。

教えてください。



396デフォルトの名無しさん:2012/01/18(水) 14:50:42.64
馬鹿には無理
397デフォルトの名無しさん:2012/01/18(水) 15:44:45.10
>>395
テキストファイルが読み取り専用になってたりしない?
398デフォルトの名無しさん:2012/01/18(水) 16:01:13.12
>>397
レスありがとうございます。
読み込み専用ではなかったのですが、windowsの拡張子を表示する設定にしていませんでした。
拡張子を表示する設定にしたところ、test.txt.txtになっていました。
すみません、初歩的な事を数日見逃していました。

レスありがとうございました。
399デフォルトの名無しさん:2012/01/18(水) 16:41:41.95
わろす
400デフォルトの名無しさん:2012/01/18(水) 18:21:10.87
なんか若い子がいっぱい来た感じ

>>396
これはスクリプトなのかしら
401デフォルトの名無しさん:2012/01/18(水) 18:24:47.81
>>394
エラーログを貼らないとどんなハッカーでも原因はわからんですよ^^;
そもそもCode::Blocksはビルドする必要ないような?初心者はバイナリバージョンをダウンロードすればいいと思うよ。
もしCode::Blocksの翻訳とかやってる方だったら全力支援しますが
402401:2012/01/18(水) 18:27:55.92
ごめん>>401は忘れてください。ただの報告だったんですね・・・
またエラーかと思った
403デフォルトの名無しさん:2012/01/19(木) 00:46:20.39
わろす
404デフォルトの名無しさん:2012/01/22(日) 22:48:49.88
wxWidgets2.9.3を使用しています。
下記リンクを参考にしました。
http://docs.wxwidgets.org/trunk/classwx_string.html#a55b90a900c24e9555760265170dc051c

文字列の中に特定の文字が複数回出た場合の検索を行いたいです。

.find()この中に、aとか、txtとか入れると、最初の桁数だけ検索できます。
たとえば、[t]と入力すると、文字列の中に4回でてきますが、一個目のものしか検索されません。
また、[猫]や[犬]などを入力すると、ループの処理に入らずすぐに終了します。
[あ] を入力すると、1回ループ処理に入っているますが、検索結果に0が帰ってきます。

コードは以下のようになっています。

//wxString gpath C:\Users\x\Desktop\practice\猫犬象aAbB猫猫猫犬犬あいう.txt
    wxString bb,cc,dd;
size_t pos=0;
if((pos=::gpath.find(("猫"),pos))!= wxString::npos)
{
wxMessageBox(_T("ループ 処理開始"));
pos = ::gpath.find("猫",pos);
cc.Printf(_T("%d"),pos);
dd += cc;
dd += "\n";
pos + 1;
wxMessageBox(_T("ループ 判定処理に戻る"));
}
readpos -> SetValue(dd);
wxMessageBox(_T("終了"));

文法?など、何が間違っているか教えてください。
405デフォルトの名無しさん:2012/01/22(日) 23:59:25.48
>>404
wxString gpath = L"C:\\Users\\x\\Desktop\\practice\\猫犬象aAbB猫猫猫犬犬あいう.txt";
wxString word = L"猫";
wxString result;
size_t pos = 0;
wxMessageBox(_T("ループ 処理開始"));
while ((pos = gpath.find(word, pos)) != wxString::npos) {
result += wxString::Format(L"%d\n", pos);
pos += word.size();
wxMessageBox(_T("ループ 判定処理に戻る"));
}
OutputDebugStringW(result.c_str());

pos + 1はpos += 1のタイポだと好意的に解釈するにせよ、それでも
「何故1なのか」が理解できてないのはちょっとまずい。
ifとwhileの区別が付いてないのもかなり厳しい。
charとwchar_tの違いについてとか、
1. (pos = gpath.find(word, pos)) != wxString::npos
2. pos = gpath.find(word, pos) != wxString::npos
は全く意味が違う、とか。
wxWidgets以前に、まず基本的な文法を押さえることから始めた方がいいと思う。
406デフォルトの名無しさん:2012/01/23(月) 01:28:04.42
>>404
レスありがとうございます。

>>ifとwhileの区別が付いてないのもかなり厳しい。
理由がわからないので、whileとifを書き直してテストしてました。
これは、コピペを修正するのを忘れていました。 
ただ、最初はforで試したのですが、まったくだめでwhileやifなどを試してみました。
ただ理解してないのは間違いないです。

>>pos + 1はpos += 1のタイポだと好意的に解釈するにせよ
検索後、ひとつ右の文字から再度検索したかったので +1 にしたのでタイプミスではありませんでした。
+=でないとだめとのことなので、考え方が間違っているのですね。
見直します。

>>charとwchar_tの違いについてとか、
charがabとか半角文字で、wcar_tが2バイト文字が許されると漠然と認識しています。
ユニコードビルドなので、wxStringを使用した場合すべて2バイト文字が許されると認識していましたが、
なんか違うようですね。
wxString word = L"猫”;
wxString::Format
など、知らないものがでてきたので、これも調べます。

ありがとうございました。
407デフォルトの名無しさん:2012/01/23(月) 03:10:53.18
VCでもmingwでも pos + 1; に対してはWarning出すから、
ちゃんとWarningは読んで意味を理解しよう。
VC使ってるならステップ実行も使おう。

>charがabとか半角文字で、wcar_tが2バイト文字が許される
L""を知らなかった、ということはたぶん間違った理解をしてる。
まずはstring, wstringを使って両者についての理解を深めた方が良いかも。
ちなみにVCとmingwでwchar_tの定義は異なるので、それに気付かず両者を混同して
テストすると理解が深まるどころか発狂しそうになるので要注意。

知らないことが出てきたらまず自分で調べる、というのは正しい姿勢だし、
これからも是非継続してもらいたいけれども、この辺はもう完全にスレチなので、
c++初心者スレとかで聞いた方がいいと思う。
まあ頑張ってくれ。
408デフォルトの名無しさん:2012/02/02(木) 23:41:58.22
TDM-GCC 32bit wxWidgets2.9.3を使用しています。
http://docs.wxwidgets.org/2.9.3/classwx_reg_ex.htmlを参考にしました
http://2ch.ac.la/read.php/tech/1268979408/955 を参考にしました。
wxRegExの機能を使用したいです。

[ももも]猫[]け[2.5]犬象()aA b  B(2012年01月24日)猫猫__@(H23)_猫(わんわん)犬犬あいう.txt
という文字列から正規表現で文字を検索の仕方を調べています。
試しに\[...\]と正規表現をいれて実行したところ[ももも]というのは検索できました。

もうひとつ[2.5]というのも検索されているはずかなと思うのですが、とうやればいいかがよくわかりません。

以下のコードで、\[...\]で[ももも]は検索できました。

wxString search (L"\[...\]")
wxString text; (L"[ももも]猫[]け[2.5]犬象()aA b  B(2012年01月24日)猫猫__@(H23)_猫(わんわん)犬犬あいう.txt"
wxRegEx cktext(search);
wxString result;
if(cktext.Compile(search,wxRE_EXTENDED) == TRUE)
if( cktext.Matches(text,wxRE_NOTBOL))
result += cktext.GetMatch(text,count);

で、2件以上ヒットする場合はループにする必要があるかと次のようにしてみました。
409デフォルトの名無しさん:2012/02/02(木) 23:49:55.81
if(cktext.Compile(search,wxRE_EXTENDED) == TRUE)
{
wxMessageBox(L"正規表現です。");
if( cktext.Matches(text,wxRE_NOTBOL))
{
wxMessageBox(L"マッチ処理に入りました");
count = cktext.GetMatchCount();
wxMessageBox(wxString::Format("%d",count));
for (size_t i=0 ; i < count ; count--)
{
wxMessageBox(L"マッチループ処理に入りました");
result += cktext.GetMatch(text,count);
wxMessageBox(L"いったんすとっぷ1");
results -> SetValue(result);
wxMessageBox(L"いったんすとっぷ2");
}
results -> SetValue(result);
} else {
wxMessageBox(L"マッチ処理にヒットしませんでした。");
}
} else {
wxMessageBox(L"正規表現ではありません。");
}
実行しますと、「マッチループ処理に入りました」メッセージの後に、
faild in GetMatch() invalid match indexと表示されます。
wxMessageBox(wxString::Format("%d",count));
ここで1が帰ってくるのですくなくとも1件はヒットしていると思うのですが・・・・

考え方や、ソースのどこが間違っているのか教えてください。
410デフォルトの名無しさん:2012/02/03(金) 00:46:43.23
>>409
詰まったら詰まった現象を再現できる可能な限り短いコードを晒してくれ。
バグってる長いコードなんて誰も読みたくはない。

一応ヒントになりそうなコードは書いたが、
今回も残念ながらwxWidgets以前の問題だ。
正規表現に関してちゃんと勉強してくれ。

wxString regexText(L"\\[...\\](.)");
wxString text(L"[ももも]猫[]け[2.5]");
wxRegEx rx;
rx.Compile(regexText, wxRE_EXTENDED);

if (rx.Matches(text, wxRE_NOTBOL)) {
int n = rx.GetMatchCount();
for (int i = 0; i < n; ++i) {
wxMessageBox(rx.GetMatch(text, i));
}
}
411デフォルトの名無しさん:2012/02/03(金) 02:34:29.06
>>410
レスありがとうございます。

>詰まったら詰まった現象を再現できる可能な限り短いコードを晒してくれ。
>バグってる長いコードなんて誰も読みたくはない。
次からそのように心がけます。

>今回も残念ながらwxWidgets以前の問題だ。
>正規表現に関してちゃんと勉強してくれ。

もう一度、正規表現のコンテンツを読みます。

コードを書いてくれてありがとうございます。
参考にします。

しばらく時間がかかりそうですが、うまくいきましたら報告にきます。
ありがとうございました。
412デフォルトの名無しさん:2012/02/03(金) 12:24:05.07
>>409
> for (size_t i=0 ; i < count ; count--)
count-- っておま
413デフォルトの名無しさん:2012/02/04(土) 00:41:55.82
>>412
--ってあまりよくないようなので、i++に変更しました。

wxString regexText(L".?");
wxString text(L"abc123");
wxRegEx rx;
rx.Compile(regexText,wxRE_ADVANCED);
if (rx.IsValid()==TRUE)
{
if (rx.Matches(text)) {
int n = rx.GetMatchCount();
for (int i = 0; i < n; ++i) {
wxMessageBox(rx.GetMatch(text, i));
}}}

上記コードでコンパイルしたところ、faild in GetMatch() invalid match indexというのはでなくなりました。
((count--)と実行していた行で、エラーが発生していました。)

最短一致 .?を期待しています。 このソースだとaだけが表示されて、forを抜けてしまいます。
.?なので、全ての文字の1文字か0文字で、一文字が検索されると認識しています。

私の認識では、6回メッセージが表示されると思っているのですが、この考えは間違っているのでしょうか?
a,b,c,1,2,3と 一文字ずつメッセージが表示されると思っているのですが・・・

それとも正規表現の場合、一つの文字列から検索する場合には一回のみしか検索しないのでしょうか?
ただ、GetMatchCountでヒットした回数と内容を覚えているような気もします・・・

正規表現もこれであっているかの自信もないのですが、どこに間違えがありますか?
教えてください。
414デフォルトの名無しさん:2012/02/04(土) 02:27:28.32
>正規表現の場合、一つの文字列から検索する場合には一回のみしか検索しないのでしょうか?
その通り。
むしろ前回の状態を記憶するとどうして思ったのかがよくわからない。

>GetMatchCountでヒットした回数と内容を覚えているような気もします
覚えてない。
1が返ってきたなら「この正規表現にマッチした集合は1つ」という意味しかない。

>正規表現もこれであっているか
あってる。
415デフォルトの名無しさん:2012/02/04(土) 12:58:33.95
>>414
レスありがとうございます。

>むしろ前回の状態を記憶するとどうして思ったのかがよくわからない。
http://www.adras.com/RegEx.t11993-147-1.html
このようなページを時々見かけまして、一回の検索で、reEmail.GetMatch(email, 1);のように複数
書いているので、見つかったものは全部読めると思っていました。

>覚えてない。
>1が返ってきたなら「この正規表現にマッチした集合は1つ」という意味しかない。
なるほど、一つしか見つかっていないのですね。

>あってる。
了解です。

疑問なのですが、"(raw)(H24.2.4)北海道で撮影しました。"
という文字列を正規表現で検索した場合に、"北海道で撮影しました。"という文字列に
変換したい場合には、wxRegExを使用する場合には、以下の流れになるのでしょうか?

1・ \(.*?\)で、上記文章を最短一致で検索
2・ (raw)が検索にかかるので、これを削除。
3・ 削除後の文字列"(H24.2.4)北海道で撮影しました。"を新規で、wxStringに格納。
4・ \(.*?\)で再度最短一で検索。
5・ (H24.2.4)が検索にかかるので、これを削除。
6・ 削除後の文字列"北海道で撮影しました。"を新規で、wxStringに格納。

wxRegExで最短一致で検索した場合に複数一致する場合があった場合。
マッチした部分の削除・置き換えを行いたい場合はこのような流れにするしかないのでしょうか?
教えてください。
416デフォルトの名無しさん:2012/02/04(土) 13:59:31.73
スレ違い
417デフォルトの名無しさん:2012/02/04(土) 16:35:13.66
>正規表現
スレチだから詳しく書く気はない。

"北.+で.+た"
文字コードの問題はあるが、この正規表現は
"北海道で撮影しました"にも"北陸で撮影しました"にもマッチする。で、
"(北.+)で.+た"
とすると、全体がマッチした上で、北で始まり「で」で終わる文字列が
部分集合としてキャプチャされる。

>wxRegExのお話
GetMatchでindexを指定すると、0番目にマッチした全体が入り、
1番目以降はこの部分集合が順に入る。
例だとGetMatch(text, 1)で「北陸」か「北海道」が返ってくる。
たぶんその辺を理解してないんだろうなぁと思ったので
410で "\\[...\\](.)" ってわざわざキャプチャ入れたサンプルにしたのに・・・


>()で囲まれた部分を消去したい
wxString text(L"(raw)(H24.2.4)北海道で撮影しました。");
wxRegEx rx(L"\\(.*?\\)", wxRE_ADVANCED);
rx.ReplaceAll(&text, L"");
wxMessageBox(text);
418デフォルトの名無しさん:2012/02/05(日) 01:18:16.61
>>416 417
>スレチだから詳しく書く気はない。
すいません。

>とすると、全体がマッチした上で、北で始まり「で」で終わる文字列が
>部分集合としてキャプチャされる。

キャプチャという用語を知りませんでした。
正規表現に関して、コンテンツよんでいたつもりのようでした。
で、gogleで調べたところたくさん記載しているサイトがありました。

>たぶんその辺を理解してないんだろうなぁと思ったので
>410で "\\[...\\](.)" ってわざわざキャプチャ入れたサンプルにしたのに・・・
一度だけ、その正規表現で検索したときに、マッチカウント2回表示されました。
で、エラーもでなくなったので、コードが正常なのでそういう風になっているのかと
軽く考えていました。

本来は自分で考えることだと思いますが、消去したいコードを書いてくれてありがとうございます。

正規表現の書き方を完全に理解しないとやりたいことができませんので、一旦正規表現をしばらく調べます。
キャプチャ・・・かなりすっきりしました。

本当にありがとうございました。
419デフォルトの名無しさん:2012/02/06(月) 17:29:11.83
最新の2.8を使ってるが勝手にメモリリークしていくな
しかもデバッグDLLがコンパイルすら出来ないからテスト出来ないし
中身を作り替えたとか言ってたがものすごい劣化してるな
420デフォルトの名無しさん:2012/02/23(木) 01:19:16.26
GlassFishの質問てここでいいのかな。
421デフォルトの名無しさん:2012/02/24(金) 03:27:42.33
no
422デフォルトの名無しさん:2012/03/17(土) 10:54:20.81
>>246
>なんでいつも質問した後は簡単に見つかるんだろう…
安心しろ
それはRubber Duckingと言って有名なテクニックだ
http://www.aoky.net/articles/john_graham_cumming/talking_to_porgy.htm
423デフォルトの名無しさん:2012/03/18(日) 06:42:47.35
wxPythonで使える俺俺モジュールの作り方を教えてくだされ
424デフォルトの名無しさん:2012/03/23(金) 11:08:49.75
サイザーage
425デフォルトの名無しさん:2012/03/23(金) 11:24:00.67
426デフォルトの名無しさん:2012/04/30(月) 23:02:22.27
hoshu
427デフォルトの名無しさん:2012/05/07(月) 23:39:02.10
wxFormBuilderで出力したコードで日本語が文字化けすると思ったら
BOMなしUTF8とVSの問題だった
428デフォルトの名無しさん:2012/05/19(土) 11:47:34.43
Windows, Linux環境で使えるアプリを作っているのだが
Windowsの場合はバイナリを配布すればいい
Linuxの場合はソース互換だからソースを配布するべきなんだよな?
429428:2012/05/19(土) 11:51:05.86
あとwx2.9をFedora15 x86_64でビルドしてインストールしたんだが
なぜか実行時にwxCSConvでコケる。同じ症状の方おまへんか〜?
この現象はwx2.8では起きてない。

(gdb) backtrace
#0 0x000000000079c785 in wxCSConv::DoCreate() const ()
#1 0x000000000079d7bd in wxCSConv::wxCSConv(wxFontEncoding) ()
#2 0x000000000079dacd in wxGet_wxConvLocalPtr() ()
#3 0x00007ffff3a79018 in _GLOBAL__sub_I_strconv.cpp () from /usr/local/lib/libwx_baseu-2.9.so.3
#4 0x0000003c4400e2b6 in call_init.part.0 () from /lib64/ld-linux-x86-64.so.2
#5 0x0000003c4400e393 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#6 0x0000003c440016ca in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#7 0x0000000000000001 in ?? ()
#8 0x00007fffffffe815 in ?? ()
#9 0x0000000000000000 in ?? ()
430デフォルトの名無しさん:2012/06/13(水) 22:49:56.47
EVT_CLOSE に対して Close(True) しても終了出来ません
431デフォルトの名無しさん:2012/06/25(月) 07:17:22.37
432デフォルトの名無しさん:2012/07/04(水) 17:16:02.11
433デフォルトの名無しさん:2012/07/05(木) 16:29:10.99
434デフォルトの名無しさん:2012/07/05(木) 16:30:39.73
435デフォルトの名無しさん:2012/07/08(日) 23:42:42.45
>>430
EVT_CLOSEのハンドラの処理では終了処理した後event.Skip(false);
Closeを呼ぶとまたハンドラが呼ばれる
436デフォルトの名無しさん:2012/07/09(月) 07:12:24.08
http://wxpython.org/docs/api/wx.CloseEvent-class.html
You should check whether the application is forcing the deletion of the window
using CanVeto(). If it returns False, you must destroy the window using wx.Window.Destroy.
If the return value is True, it is up to you whether you respond by destroying the window or not.
For example you may wish to display a message dialog prompting to save files or to cancel the close.
437デフォルトの名無しさん:2012/07/13(金) 19:00:38.12
ソースに
  const char sjis[3] = {0x88, 0xa2, 0x00};
  wxString s(sjis, wxCSConv(wxT("CP932")));
  cout << s.mb_str(wxConvUTF8) << endl;
という部分があるとリンク時に下のようなエラーになります。

"hoge.sln" (Rebuild target) (1) ->
(hoge:Rebuild target) ->
  hoge.obj : error LNK2001: 外部シンボル ""class wxMBConvUTF8 & wxConvUTF8" (
?wxConvUTF8@@3AAVwxMBConvUTF8@@A)" は未解決です。
  hoge.obj : error LNK2001: 外部シンボル ""public: static unsigned int const
wxStringBase::npos" (?npos@wxStringBase@@2IB)" は未解決です。
  ..\hoge.exe : fatal error LNK1120: 外部参照 2 が未解決です。

何が足りないのでしょう?
438デフォルトの名無しさん:2012/07/13(金) 20:37:03.69
ヘッダファイルの読み込みかライブラリのリンクを行ってない

VC++なんて捨ててMinGWでやろうぜ!
MinGW + EclipseCDTで環境用意すればいい
439デフォルトの名無しさん:2012/07/13(金) 20:49:50.67
どのライブラリが足りないのか判らないんで
どのライブラリに含まれているかを教えろ
440デフォルトの名無しさん:2012/07/13(金) 21:49:44.49
441デフォルトの名無しさん:2012/07/14(土) 23:52:18.18
c++とwxWidgetsを勉強中です。
わからないことがあるので教えていただけませんか。

void functestFrame::OnButton2Click(wxCommandEvent& event)
{
wxString str1 = L"まっぎょ";
functestFrame::wxStringfunc(&str1);
}
void functestFrame::wxStringfunc(wxString* str)
{ wxMessageBox(*str);}

4-10はコンパイルと実行できました。

void functestFrame::OnButton3Click(wxCommandEvent& event)
{
wxArrayString temp1;
temp1.Add(wxT("ぽけもん"));
functestFrame::wxArrayStringfunc(&temp1);
}
void functestFrame::wxArrayStringfunc(wxArrayString *arraystring)
{
for (int i=0 ; i< *arraystring.GetCount() ; i++)
{*arraystring.Item(i);}
}
コンパイルエラーがでます。
C:\Users\x\Desktop\functest\functestMain.cpp||In member function 'void functestFrame::wxArrayStringfunc(wxArrayString*)':|
C:\Users\x\Desktop\functest\functestMain.cpp|169|error: request for member 'GetCount' in 'arraystring', which is of non-class type 'wxArrayString*'|
C:\Users\x\Desktop\functest\functestMain.cpp|170|error: request for member 'Item' in 'arraystring', which is of non-class type 'wxArrayString*'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 1 seconds) ===|

wxstringと同じ方法をしているつもりなのですが、どのようにすればコンパイルができるのでしょうか?
442デフォルトの名無しさん:2012/07/15(日) 11:07:19.04
>>441
ちょっとしたコードを書いてみた
http://pastebin.com/KCE8eyDe

コンパイルが通らない原因

wxArrayStringの通常変数とポインタ変数の違いがわかっていない
C++では実体に対しては「.」でアクセス、ポインタ変数に対しては「->」アロー演算子でアクセスする
参考:http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/13-03.html

× arraystring.GetCount();
○ arraystring->GetCount();


あと関数の入り口で「wxArrayString *arraystring」と宣言されているならば
その関数内部では「*arraystring」ではなく「arraystring」でアクセスする
「*」をつけてしまうと「arraystring」のポインタのポインタになってしまう

void functestFrame::wxArrayStringfunc(wxArrayString *arraystring)
{
  for (int i=0 ; i< *arraystring.GetCount() ; i++)
   {*arraystring.Item(i);}                   ← ここもいまいち何をしようとしてるかわからん
}
443デフォルトの名無しさん:2012/07/15(日) 11:14:03.55
あと細かいことを言うと文字列の宣言を以下のようにしているようだが

wxString str1 = L"まっぎょ";

せっかく用意されているので「wxT」マクロを使った方がいい

wxString str1 = wxT("まっぎょ");

これでどのような環境でも日本語が変数に入れられるはず
444デフォルトの名無しさん:2012/07/15(日) 21:32:47.77
>>442
ありがとうございます。
サンプルをコンパイルして、実行できました。

通常変数と、ポインタ変数ですか。
リンク先を読んで理解します。

すみません、あと一点教えてください。

wxStringは、通常変数? wxArrayStringは、ポインタ変数?を利用しているというころでしょうか?

下記マニュアルをどのように調べればよいのでしょうか?
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx368.htm
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx32.htm

445デフォルトの名無しさん:2012/07/16(月) 05:30:47.00
>>444
>wxStringは、通常変数? wxArrayStringは、ポインタ変数?を利用しているというころでしょうか?

C/C++ではクラスや変数の宣言時に実体を宣言するかポインタで宣言するか決められるので
その質問はそもそもちょっとポイントがずれている

【ポインタ】
例えば
wxButton *btn1 = new wxButton(panel, wxID_BUTTON1, wxT("ボタン1"));

はwxButtonクラスをポインタ変数で宣言している
*btn1内のクラスメソッドをいじるには「*btn1->GetLabel();」と書く必要がありますよ、と
普通は大きなクラスはポインタ変数でインスタンスを作って宣言したほうが良い

【実体】
wxString myTestStr;
myTestStr = wxT("テスト文字列");
myTestStr.IsEmpty();  ← 空文字であるかどうか調べてる

>下記マニュアルをどのように調べればよいのでしょうか?

もうお気づきかもしれないが
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx368.htmに載っているのは
wxStringという「クラス」についてのリファレンス
wxString::Hogehoge のように「::」がくっついた後半部分がそのクラスが使用出来るメソッド(関数)

myTestStr.IsEmpty();  ← wxStringのIsEmptyというメソッドをつかっている

自分が欲しい機能をクラスリファレンスで探し、クラスを宣言してどのように使えるかは
メソッド部分を見れば良いということ。
446デフォルトの名無しさん:2012/07/16(月) 07:23:17.68
DLLよりもstaticの方が配布サイズ小さくなるな
447デフォルトの名無しさん:2012/07/16(月) 10:56:52.47
逆でわ?
448デフォルトの名無しさん:2012/07/16(月) 11:06:12.02
DLLリンクで作るともちろんexeは小さくなるけど
DLLも一緒に配布するとなるとでかくなるって意味
449デフォルトの名無しさん:2012/07/16(月) 11:08:34.14
そりゃあんたのプログラムの規模が小さいだけでわ?
450デフォルトの名無しさん:2012/07/16(月) 11:12:44.68
いや先入観無しで聞いてくれ
最初はそう思ってたんだが
確かにDLLリンクで作るとexeはめっちゃ小さい
しかし実際そこそこの規模のプログラム書いて
staticで作ってみて出来たexeが
(前者のexeに必要なDLLを合わせたサイズに比べると)
意外と小さい
451デフォルトの名無しさん:2012/07/16(月) 11:15:19.52
exe だけ配布汁!
452デフォルトの名無しさん:2012/07/16(月) 11:22:57.42
そりゃDLLはwxWidgets全部入りだしな
453デフォルトの名無しさん:2012/07/16(月) 12:51:54.82
規模によるとしか言いようがない
454デフォルトの名無しさん:2012/07/16(月) 12:57:22.32
MFC 最強ですねわかります
455デフォルトの名無しさん:2012/07/16(月) 13:25:13.34
DLLはwxWidgetsのシンボル全部入ってるけど、
staticリンクだと本体が使うシンボルだけ.aから
引っ張ってくるんだから、そうなるのは当たり前
456デフォルトの名無しさん:2012/07/16(月) 14:12:18.33
規模によるとしか言いようがない
457デフォルトの名無しさん:2012/07/16(月) 14:13:00.02
DLL ってなんのためにあるんだっけ?
458デフォルトの名無しさん:2012/07/16(月) 14:13:47.36
ワロタ
459デフォルトの名無しさん:2012/07/16(月) 14:34:56.55
wxWidgetsで作ったexeが一個(あるいは少数)しかないときはそうなるのは当たり前。
DLLのメリットが生きるのはOS等のようにexeが無数にあってさらに共通部分(API)が多い場合。
趣味でやってるならSTATICでいいんじゃね?
460デフォルトの名無しさん:2012/07/16(月) 14:56:37.82
めずらしくwxWidgetsスレが伸びている・・・
461デフォルトの名無しさん:2012/07/16(月) 15:55:58.62
規模によるとしか言いようがない
462デフォルトの名無しさん:2012/07/16(月) 15:56:38.27
2.9.4 出たからな
463デフォルトの名無しさん:2012/07/16(月) 16:19:03.02
2.9.4 はまだ Development だよね。

いつ Stable になるんだよ、まったく。
464デフォルトの名無しさん:2012/07/16(月) 16:28:29.73
馬鹿には無理
465デフォルトの名無しさん:2012/07/16(月) 17:57:49.06
馬鹿には無理さんは帰って、どうぞ
466437:2012/07/16(月) 19:32:54.08
事故解決しました。
リンカ設定ではディレクトリで vc_dll の方を指定していたのですが、
PreprocessorDefinitions に WXUSINGDLL が抜けていたため、
static link しようとしてシンボル未解決になっていたようです。
467デフォルトの名無しさん:2012/07/16(月) 19:53:09.82
468デフォルトの名無しさん:2012/07/16(月) 19:55:20.02
そうそう。
それです。
469デフォルトの名無しさん:2012/07/17(火) 23:59:29.64
>>445
レスありがとうございます。
>>その質問はそもそもちょっとポイントがずれている

ポインタ渡し、参照渡しを調べていたのですが、勘違いしていたようです。

int,charなどの型の場合・関数の場合・クラスの場合と大体は似ているようですが、
クラス内の機能を使用するときには、->を使わないとだめなことがなんとなくわかりました。

void functestFrame::OnButton2Click(wxCommandEvent& event)
{
wxString str1 = wxT("まっぎょ");
functestFrame::wxStringfunc(&str1);
}
void functestFrame::wxStringfunc(wxString* str)
{ wxMessageBox(*str);
str -> Last();}

教えてもらったとおりやると、コンパイルと実行ができ、str.Lastとやればコンパイルエラーがでました。

間接参照演算子の*strの使い方で勘違いしていました。
あくまで、データをみるだけで、クラス等のpointer渡しの場合かつその機能を使う
場合は、->を使うんですね。

ありがとうございました。
470デフォルトの名無しさん:2012/07/18(水) 09:07:55.01
全然違うw

C++の初心者用入門本読んで勉強汁
471デフォルトの名無しさん:2012/07/18(水) 13:24:00.41
wxWCharBuffer の使い方が良く判りません。
472デフォルトの名無しさん:2012/07/23(月) 08:38:27.68
過疎
473デフォルトの名無しさん:2012/07/23(月) 13:34:00.85
過疎かあ
474デフォルトの名無しさん:2012/08/10(金) 14:24:37.30
わからないことがあるので、教えてください。

http://fossies.org/unix/misc/wxWidgets-2.9.4.tar.gz:a/wxWidgets-2.9.4/utils/helpview/src/client.cpp
のソースの中で、149行目と150行目の : は何という演算子で、どのようなことをしているのでしょうか? 
149 MyFrame::MyFrame(wxFrame *frame, const wxString& title)
150 : wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize( 200, 100 ) )

149行目は、コンストラクターというのはなんとなくわかりますが、その後の演算子?がなにをしているのかが
わかりません。

検索しても、スコープ演算子はでてくるのですが、: 一個だけの演算子の意味がでてきません。

試しに、150行目に該当する部分をコメントアウトしてみると、ビルドは通りますが、実行しても何も表示されません。

{}の中に、 wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize( 200, 100 ) );を追加してビルドして
実行しても何も表示されません。






475デフォルトの名無しさん:2012/08/10(金) 14:33:22.20
すいません、リンク先の内容が質問したい内容と同じではありませんでした。

実際は、C:\wxWidgets-2.9.3\samples\sockets\client.cppの内容をビルドしながら理解しようとしています。

client.cpp
// frame constructor

MyFrame::MyFrame() : wxFrame((wxFrame *)NULL, wxID_ANY,
_("wxSocket demo: Client"),wxDefaultPosition, wxSize(300, 200))

ここのコンストラクタの後の、: の演算子?であっているのかどうかも不明なのですが・・・
これは何をしているのでしょうか?

476デフォルトの名無しさん:2012/08/10(金) 14:58:02.41
>>475
MyFrameは多分継承したクラスなので、基底クラスであるwxFrameのコンストラクタを呼び出している。
477デフォルトの名無しさん:2012/08/10(金) 14:59:37.21
あげちゃった・・・。Orz
478デフォルトの名無しさん:2012/08/10(金) 15:15:07.17
>>476

教えてくれてありがとうございます。
継承と基底クラスを調べてみます。
479デフォルトの名無しさん:2012/08/10(金) 16:12:34.61
若き日のヴィドゲンシュタインがよみがえったように
480デフォルトの名無しさん:2012/08/10(金) 16:21:56.40
連結グラフ G=(V,E) と重み d:E->R+が与えられたとき 最小木を求めよ。
481デフォルトの名無しさん:2012/08/14(火) 17:06:28.44
演算子?ではありませぬ
482デフォルトの名無しさん:2012/08/28(火) 18:53:02.77
初期化リストじゃね?
483デフォルトの名無しさん:2012/08/31(金) 17:18:28.13
wxStaticBitmapに透過png画像を指定して描画しても、
透過になってくれてないようなのですが、
単にwx.BITMAP_TYPE_PNGで読んだものを貼るだけじゃ駄目なんでしょうか?
484デフォルトの名無しさん:2012/08/31(金) 18:43:26.98
wxInitAllImageHandlers() の呼び忘れや
png を作成したソフトが原因で正常に透過処理されないとかかなあ
サンプルのimage参考にするといいと思うよ
485デフォルトの名無しさん:2012/08/31(金) 22:09:21.20
wxPython in action の翻訳版が・・・
http://www.slideshare.net/ryanvan/wxpython-in-action
486デフォルトの名無しさん:2012/08/31(金) 23:26:46.41
スライド565ページって、出版じゃないのかー。
それでも俺は原書を選ぶぜ。
487デフォルトの名無しさん:2012/08/31(金) 23:48:10.30
webはスライドだけど
savefileボタン押したら
普通にPDFが落ちて来た
488デフォルトの名無しさん:2012/09/01(土) 02:49:55.50
・wxAuiPaneInfoで、一度設定したCaptionをCaptionVisibleのtrue, falseで切り替えたいけど
なぜか反映されん、なんでだぜ

wx 2.9.4使ってみた

・GTK環境 wx2.8でSetSizer呼んだ後Fit呼ぶと異常終了するバグが2.9.4では直ってた
・同じくGTK環境 wxListctrlでwxLIST_AUTOSIZEしても、自動でカラムの幅が調整されない
(なんかメーリス見たらwxPythonのロビンさんが「まだ直ってないの?」みたいなこと書いてた。誰か直して。)
489デフォルトの名無しさん:2012/09/01(土) 04:53:40.84
GTKは糞
490デフォルトの名無しさん:2012/09/05(水) 19:33:35.92
GTK+ は多段タブも実現できんのだな
WindowsにできてGTKにできんことが結構見えてきた

ミゲルさんもこんなこと書いてるし、Linuxのデスクトップはダメだな
http://www.yamdas.org/column/technique/linuxdesktopj.html
491デフォルトの名無しさん:2012/09/06(木) 09:29:27.19
>>489
またおまえか
巣に帰れ
492デフォルトの名無しさん:2012/09/06(木) 09:57:24.07
何度でも言うよ
欠かさず言うよ
GTKは糞
493デフォルトの名無しさん:2012/09/06(木) 17:47:43.41
>>492
おっさんなにやってん?
494デフォルトの名無しさん:2012/10/15(月) 03:49:13.19
eNprdGhEhnH6XMi8RgcFfQj71L1t6+FS
Cvr6jXc0G/c3BgLhfriwvl5No4NejUJz
LpIZQVwwPY0OQOkaBSBnDlRujgKYC4ZQ
ZfoKYGVzkkEcDYX4xjnxmo0OzXUKU/L6
1jadbDo7bfP0uVwwA8FqG4MgjH01YAMa
A7kgNND1LQtgroC6Kb4xDiyr1BiAAjP1
9JpzFQBRXmeP
495デフォルトの名無しさん:2012/10/24(水) 22:55:14.82
大量削除の危機を生き延びたんだな
496デフォルトの名無しさん:2012/11/01(木) 21:43:39.40
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
497デフォルトの名無しさん:2012/11/17(土) 01:59:11.60
hosh
498デフォルトの名無しさん:2012/11/18(日) 17:34:28.86
wxWidgetsって、gtkを呼び出す抽象的なレイヤになるの?
499デフォルトの名無しさん:2012/11/18(日) 18:00:39.95
OSとかbuildしたときの設定による
Windows版なら今は直接Win32API呼んでるはず
500デフォルトの名無しさん:2012/11/19(月) 00:34:29.96
>>498
抽象的なレイヤって言い方が引っかかるけど
どのプラットフォームでも同じコードで動くよ
501デフォルトの名無しさん:2012/11/19(月) 02:31:32.83
gtkを呼び出す抽象的なレイヤなんてないよ
502デフォルトの名無しさん:2012/11/20(火) 14:03:35.35
wxGtkって何なんだ?
503デフォルトの名無しさん:2012/11/20(火) 14:05:16.89
具象的
504デフォルトの名無しさん:2012/11/20(火) 16:40:02.72
gtkをwxWidgetのバインディングで呼出してんだから抽象的じゃないの?
具象的だと日本語おかしくね?
505デフォルトの名無しさん:2012/11/20(火) 16:46:58.65
gu
taite
ki
506デフォルトの名無しさん:2012/11/22(木) 21:38:02.68
>>505
はいはいワロス
507デフォルトの名無しさん:2012/11/22(木) 23:26:03.48
>>506
ひでー
508デフォルトの名無しさん:2013/01/10(木) 03:31:25.47
>>492
何度も言うよ
残さず言うよ
だろ
>>493
中途半端なつっこみするなら黙ってろよムズムズする
509デフォルトの名無しさん:2013/01/10(木) 07:36:12.49
何度でも言うよ
欠かさず言うよ
GTKは糞
510デフォルトの名無しさん:2013/01/10(木) 16:50:22.28
マイナーGUIスレを見たけど、以前はFOXが人気だったんだね
まだ息してるのかな
511デフォルトの名無しさん:2013/01/10(木) 16:53:16.15
今はもう、QtかWxWidgetsの二択にしか見えない。気のせい?
512デフォルトの名無しさん:2013/01/11(金) 08:37:58.62
FortranプログラムのGUIシェルをwxWidgetsで作ろうとsampleのexecを改造しているけれどよくわからない。
いい本ないでしょうか。
最近wxPythonの本が出ましたがパイプまでは書いていないので…
513デフォルトの名無しさん:2013/01/11(金) 09:01:20.21
eNprdGhEhnH6XMi8RgcFfQj71L1t6+FS
Cvr6jXc0G/c3BgLhfriwvl5No4NejUJz
LpIZQVwwPY0OQOkaBSBnDlRujgKYC4ZQ
ZfoKYGVzkkEcDYX4xjnxmo0OzXUKU/L6
1jadbDo7bfP0uVwwA8FqG4MgjH01YAMa
A7kgNND1LQtgroC6Kb4xDiyr1BiAAjP1
9JpzFQBRXmeP
514デフォルトの名無しさん:2013/01/13(日) 12:10:17.65
64bit版MinGWでwxWidgetsコンパイルしてるけど
作ったバイナリが起動すらしないので死にそう
515デフォルトの名無しさん:2013/01/14(月) 01:59:27.93
コンパイルできた
64bitネイティブアプリや、どや
516デフォルトの名無しさん:2013/01/15(火) 01:35:39.03
windows7を使用しています。

ttp://wiki.wxwidgets.org/Beech:Using_common_dialogs
を参考に拡張子が、csvとtxtのファイル名のみを取得しようとしています。

wxDir::GetAllFiles(dir , &filename ,wxT("*.txt"));
wxDir::GetAllFiles(dir , &filename ,wxT("*.csv"));
filespecが一つのときは指定拡張子のみ取得できます。

wxDir::GetAllFiles(dir , &filename ,wxT("*.csv;*.txt"));
2個指定すると何も取得されません。

指定方法が悪いと思うのですが、どのようにすればいいのでしょうか?
教えてください。
517デフォルトの名無しさん:2013/01/15(火) 06:14:19.90
518デフォルトの名無しさん:2013/01/15(火) 06:31:29.95
分からないならレスしないでください
519デフォルトの名無しさん:2013/01/15(火) 17:15:14.30
>>517
レスありがとう。
一つしかサポートされないのですね。

ありがとうございました。
520デフォルトの名無しさん:2013/01/16(水) 15:50:20.31
なんで
ttp://wiki.wxwidgets.org/Beech:Using_common_dialogs
を参考にすると
wxDir::GetAllFiles(dir , &filename ,wxT("*.csv;*.txt"));
が出てくるんだろ
基地外か
521デフォルトの名無しさん:2013/01/16(水) 23:31:49.99
wxWidgetsを使おうとしてる時点でオカシイのだ(・∀・)
522デフォルトの名無しさん:2013/01/17(木) 18:18:55.83
童貞乙
523デフォルトの名無しさん:2013/01/19(土) 07:42:35.24
この道はいつか来た道♪ああ そうだよあかしやの花が咲いてる
524デフォルトの名無しさん:2013/01/20(日) 02:49:05.26
windowsで変な抽象レイヤなんて触るなら、c#使った方がマシ
525デフォルトの名無しさん:2013/01/21(月) 20:07:51.79
wxRubyでWindowsのイベントを捕まえたいのですがどのようにすれば出来ますか?
C++なんかだとMSWWindowProcをオーバーライドすることで出来るみたいですが
wxRubyには見あたらないような・・・
526デフォルトの名無しさん:2013/01/21(月) 23:44:55.73
Ruby を Windows で使う人って()
527デフォルトの名無しさん:2013/01/21(月) 23:59:56.58
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://toro.2ch.net/test/read.cgi/tech/1155031689/
528デフォルトの名無しさん:2013/01/23(水) 01:57:17.09
>>521
MFCを直に触りたくないとき、他に候補なんてある?
529デフォルトの名無しさん:2013/01/23(水) 04:51:35.91
Qt
530デフォルトの名無しさん:2013/01/23(水) 07:01:30.47
CLX, GTK+, Qt, Tk, FLTK, FOX

C言語/C++ベースおよびマルチ言語ベース
ウィジェット・ツールキット - Wikipedia
531デフォルトの名無しさん:2013/01/23(水) 07:03:10.89
Agar
CEGUI
GLUI
Juce
Ultimate++
Visual Component Framework (VCF)
YAAF
532デフォルトの名無しさん:2013/01/30(水) 12:24:11.63
MFCならWindowsのみで動けばいいんだろ

WTL
OWLNext
533デフォルトの名無しさん:2013/01/31(木) 05:40:10.73
このひとまた変な本出してるな
ttp://www.amazon.co.jp/dp/4877832890/
このひとの他の本酷かったから買うつもり無いけど
534デフォルトの名無しさん:2013/02/28(木) 14:11:47.04
またバグを発見してしまった

http://docs.wxwidgets.org/stable/wx_wxinputstream.html#wxinputstreamlastread

wxInputStream::LastRead
size_t LastRead() const

LastReadをlinuxで使うと常に0で返ってくる。
6年前に修正されてるはずだけどbranchに入ってないからバグったまんまですかVZさん。。。
535デフォルトの名無しさん:2013/02/28(木) 14:13:49.27
536デフォルトの名無しさん:2013/02/28(木) 14:15:06.81
そうか、 2.8のブランチには入ってるけど2.9には反映されてないのか、どちらにせよだめぽ
537デフォルトの名無しさん:2013/03/01(金) 00:54:34.59
wxInputStreamなんて使わんから
538デフォルトの名無しさん:2013/03/01(金) 01:16:17.90
馬鹿には無理
539デフォルトの名無しさん:2013/03/01(金) 08:18:29.29
wxWidgets は正規表現とか、
文字コードの変換がいまいち信用出来ないので、
window のフレームワークだけに使って、
基本的なロジックは boost とかで済ますのが正解。
540デフォルトの名無しさん:2013/03/16(土) 15:59:13.75
wxwidgetsのListCtrlのカラムに直接描画したいんだけどどうしたらいい?
具体的には、ダウンローダなどによくあるようなダウンロード状況を表す
横棒のグラフに%が表示されてるような奴なんだけど
541デフォルトの名無しさん:2013/03/16(土) 16:03:03.35
馬鹿には無理
542デフォルトの名無しさん:2013/03/31(日) 11:08:01.89
ググったら>>64がヒットした。
x64のgcc4.7以降でソースからコンパイルすると途中でcc1plusが止まった
x64のvc9じゃ止まらない。更新途絶えてるから修正期待するのは無理か
543デフォルトの名無しさん:2013/03/31(日) 13:02:54.41
>>64
>>542

共有ライブラリもしくはモノリシックライブラリをビルドする場合、公式のMinGWだとメモリを使い果たしてしまう
TDM-GCCに切り替えた上で CXXFLAGS='-fno-keep-inline-dllexport' を付けて configure実行するよろし

これはwxWidegts側のバグと言うよりもMinGWのバグだ
544デフォルトの名無しさん:2013/04/01(月) 01:17:29.35
>>543
あらゆるオプションくっつけてもダメだった
FLTKはvcでもgccでも問題なかったんだけどな、これgccじゃなくてmingw側の問題なのか
545デフォルトの名無しさん:2013/04/01(月) 01:21:48.05
wxWidgetsってVisualStudio2012で動く?
546デフォルトの名無しさん:2013/04/01(月) 05:07:51.79
>>545
普通にVS2012でビルドして使ってるよ
547デフォルトの名無しさん:2013/04/01(月) 07:42:14.94
昨晩発見、mingw-w64-dgnってトコのパッチ当てたらx64MinGWでもビルド出来た。
gccはTDM4.7.1、時間が無いのでconfigureのオプションくっつけて無いけど一発で通った

具体的には、textentry.cppの#include <shlguid.h>を削除するだけ
548デフォルトの名無しさん:2013/04/04(木) 14:07:26.83
ハードディスクのMBR領域をバックアップしたいんだけど
どうやってプログラム書いたらいいかな

Linuxのときは/dev/sdaを開いて読むだけだったけど
Windowsとコード一緒にできない
549デフォルトの名無しさん:2013/04/04(木) 14:19:00.69
共通の方法は無いかって話?
550デフォルトの名無しさん:2013/04/04(木) 15:10:10.41
dd.exe のソース見ると良い
551デフォルトの名無しさん:2013/04/04(木) 15:49:15.97
そうするわ
でもパスカルわかんねーんだよな・・・
552デフォルトの名無しさん:2013/04/04(木) 16:02:05.02
wxWidgets 関係の話?
553デフォルトの名無しさん:2013/04/09(火) 09:13:04.65
wxPythonなんですがベジエ曲線を書くにはどうすれば良いですか?
554デフォルトの名無しさん:2013/04/09(火) 18:52:10.99
描画系クラスならwxDC使えばいいんじゃないかなあ
http://docs.wxwidgets.org/2.8/wx_wxdc.html
555デフォルトの名無しさん:2013/04/10(水) 11:56:17.56
556デフォルトの名無しさん:2013/06/24(月) 15:12:38.36
Latest Development Release: 2.9.4
Current Stable Release: 2.8.12
Previous Stable Release: 2.6.4
http://www.codeproject.com/Articles/11515/Introduction-to-wxWidgets
557デフォルトの名無しさん:2013/06/26(水) 18:58:08.93
Mac OSX LionだとwxWidgets 2.8 がビルドできない・・・
wxWidgets 2.9ビルドするとダイナミックリンクライブラリが一部作成されない・・・
Mac PortのwxWidgets-devをダウンロード するのが一番良さげ

あとMac OSXでpthreadをバイナリにリンクさせたらいきなり実行ファイルが落ちやがる
罠多すぎだろあのOS
558デフォルトの名無しさん:2013/06/26(水) 19:01:52.04
559デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
wxWidgets-2.9.5では>>429で言ってたバグが直ってるぞ、やったぜ
560デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
wxってlispで使えますか?
561デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
馬鹿Lisperには無理
562デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
lispなんて使ってかっこつけやがって
563デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
みなさんお世話になりました
明日で2ch終了らしいので
今のうちに最後のご挨拶をしておきます
564デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
wxWidgetsのコミッタのVadim ZeitlinがC++11でwxWidgets書いてるぞ

wxWidgets and C++ 11
http://wxwidgets.blogspot.com/2013/08/wxwidgets-and-c-11.html
565デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
時既におすし
566デフォルトの名無しさん:2013/09/06(金) 17:26:06.71
567デフォルトの名無しさん:2013/09/06(金) 23:08:20.72
>>566
昔から何度も提唱されてるブラウザによる全てのGUIの描画ですか
Googleは達成できるか
568デフォルトの名無しさん:2013/09/11(水) 00:44:38.34
Firefoxって知ってる?
569デフォルトの名無しさん:2013/09/20(金) 22:19:19.81
mozillaに出来なくともgoogleになら出来る
570デフォルトの名無しさん:2013/10/10(木) 10:11:38.40
wcSVG
571デフォルトの名無しさん:2013/10/16(水) 23:19:09.83
3.0.0-RC1
572デフォルトの名無しさん:2013/10/17(木) 08:33:10.45
wxD
573デフォルトの名無しさん:2013/10/17(木) 12:18:17.29
>>572
どうしてるんだろうな
そのプロジェクト...
574デフォルトの名無しさん:2013/10/20(日) 16:58:10.15
wxTcl
575デフォルトの名無しさん:2013/11/05(火) 22:48:07.34
3もRC2まで行ってるし、次は今月中に正式版出るかな
576デフォルトの名無しさん:2013/11/05(火) 23:10:06.75
出たとしたらLinuxのパッケージにwx-3.0が出て使えるようになる
楽しみ
577デフォルトの名無しさん:2013/11/13(水) 21:36:52.45
3.0.0キテタ━━ヾ(゚∀゚)ノ━━!!
578デフォルトの名無しさん:2013/11/14(木) 22:26:30.66
おいおい3.0だぞ?出たんだぞ?なんでこんなに盛り上がんないんだよ…
579デフォルトの名無しさん:2013/11/14(木) 23:36:17.18
メインの機能追加がUnicode対応だからなぁ
今までも別に日本語使えなかったわけではないし
580デフォルトの名無しさん:2013/11/14(木) 23:52:35.30
何言ってだこいつ
unicodeは前から使えてるっての

所感
・Mac向けビルドの安定化
・wxwebviewが全ポートで使える
→ ネットワーク接続して、html, Javascriptの解釈可能に
・aui系のバグ修正と見た目の品質向上
・c++11, clang対応
・その他即死系のバグ修正

間違ってたらすまん
とりあえず2.9で出てたバグは直ってるはず
581デフォルトの名無しさん:2013/11/15(金) 00:03:58.47
あと>>364で出てたUTF-8以外の文字列からの変換とかどうなったんだろ
うまく変換できてるなら嬉しいけど

その他にもクラスは2.8の時より増加してるよね
582デフォルトの名無しさん:2013/11/15(金) 00:55:39.31
MinGW gcc + wxWidgets 2.8.12で作っていたプログラムを3.0.0で作り直したら、
ウィンドウリサイズ時のwxStaticText、wxCheckBox、wxListBoxのフリッカーが見るに耐えんレベルになった。
かと言ってSetDoubleBufferを使うとリサイズがモタつく上に、何故かwxRadioBoxの枠線が消えるんだよなー。
仕方ない、一つ一つwxEVT_ERASE_BACKGROUNDを潰す作業を初めるか…。
583デフォルトの名無しさん:2013/11/15(金) 03:59:07.98
gcc4.8で動くなら使う
x86_64-w64-mingw32じゃ、2.9はとうとうビルドさえ無理だった
584デフォルトの名無しさん:2013/11/15(金) 04:14:31.91
4.8だとやっぱりcc1plusが停止した、しかも2.9と同じファイル
公式から落としてきたライブラリ使ってもリンクに失敗
4.7ならライブラリのビルドもリンクも問題なし
585デフォルトの名無しさん:2013/11/15(金) 05:11:08.20
あ、やっぱ出来た
パラレル無しでビルドするか>>543
CXXFLAGS='-fno-keep-inline-dllexport'
をつけると大丈夫みたい、後者だと1度止まるけど再ビルドすれば通るしサンプルもビルド出来た
586デフォルトの名無しさん:2013/11/15(金) 06:44:39.98
連投失礼、>>584-585は見なかった事にしてね
当方の環境、win7 64bit msys上からビルド、gccは4.9、静的リンクでビルド

configureにCXXFLAGS="-fno-keep-inline-dllexport"をつけてもevent.cppで止まる
その時あらためてmake CXXFLAGS="-fno-keep-inline-dllexport"としてビルドすると通る

gcc4.8だと2.9はビルドでこけるしリンクも失敗するってのは国内外でよく見かけたし、実際俺も
あきらめてたけど…ひょっとして2.9もこの方法で通ったのかなあ。

でも、なぜかサンプルのimage.exeだけ強制終了した(ビルドは可能)
587デフォルトの名無しさん:2013/11/15(金) 07:29:00.37
VCでやったほうが実行速度速くなるんじゃないの
588デフォルトの名無しさん:2013/11/15(金) 07:40:36.25
VC++?知らない子ですね…
589デフォルトの名無しさん:2013/11/15(金) 07:53:20.59
損してると思うよ
590デフォルトの名無しさん:2013/11/16(土) 00:14:03.66
constexprも使えないコンパイラは要らないんですよ
591デフォルトの名無しさん:2013/11/16(土) 00:58:40.41
メタプログラミングって奴でしょ?
何が何だかサッパリ分からないよー。
つまり俺にはまだ早い代物だという事は承知してるが、
どういう用途で使うものなのか教えてほしい。
592デフォルトの名無しさん:2013/11/16(土) 03:33:03.68
wxと同時に浸かって委員会
593デフォルトの名無しさん:2013/11/16(土) 03:39:24.39
GCC3xの頃はvc++の方が速かった気がするけど、4.6から急激に速度が向上した気がする
あくまで自作プログラムでの話だけどね
ただ、gccでビルドされる様々なテストプロブラム見てるとvc++でビルドって安全性って意味
でヤバいんじゃないかって思っちゃうの
594デフォルトの名無しさん:2013/11/16(土) 04:27:47.92
>>591
実行時の計算オーダーを減らす機能。事前計算機能だね。
コンパイルタイムにできるだけ計算して結果を出しておくことで実行時の計算量を減らす。
ネットの変人がそれでレイトレーシングやったりしてる。
C++14のやつはそれなりに簡単だよ。
595590:2013/11/16(土) 09:47:07.37
>>590はちょっと冗談気味だが
正直VC++はC++とは言えない
C++の機能を最大限活かす/楽しむにはgccやclangを使うべきだと思います
会社でプログラム書けと依頼されたらもしかしてVC++使うかもしれないけど
596デフォルトの名無しさん:2013/12/28(土) 16:23:57.98
chrome のブックマークバー、 IE のお気に入りバーのようなコントロールクラスを探しています。
全てのアイテムが編集可能でアイコンとテキストが表示されて
そのアイテムの値のテキストを編集できるメニューを作りたいのですが
最適なコントロールクラスはどれか教えてください。

wx.Menu を使おうと思ったのですが、
右クリックやコンテキストメニューのイベントが Bind しても呼び出されず苦戦しています。

wx.ListCtrl を使った場合は右クリックのイベントは受けられるのですが、
左クリックのイベントが wx.EVT_COMMAND_LEFT_CLICK のみで
これは MS Windows のみと書いてあるのでできたら使いたくありません。
これらのイベントについても誤りがあれば教えて欲しいです。

環境は wxPython 2.8-msw-unicode です。
よろしくお願いします。
597デフォルトの名無しさん:2013/12/28(土) 17:54:40.37
>>596
理想の実装になるかわからない&C++しかわからないが
wxMenuをそのまま使うのが良いと思います

実装の骨子
・メニューの項目一つ一つにwxWindowID ( enum )を振る
・wxWindowIDはwxCommandEventで起動するようにしておく
・上記のwxCommandEventを処理する関数はenumをswitch文で処理する
・wxCommandEventはEVT_MENU_RANGEで定義しておく(enum値が 1000~1200の場合反応する関数を作るなど)

アイテムを編集可能にするために
・EVT_UPDATE_UIをwxMenuに設定しておき、ユーザーがメニューの項目を触ったら更新を実施

右クリック
・wxのConnectとかBindでwxMouseEventをくっつければいいと思う

-------------------------------------------------------

上記をやろうとすると、ユーザーが設定した項目でループを回して常に更新かける
感じになるんじゃないでしょうか。

wxMenu *menu = new wxMenu;
wxMenu *foo  = new wxMenu;

for ( ユーザーが設定した数だけループ ) {

foo->Append(wxID_HOGEHOGE_RANGE + i , wxT("ユーザー設定項目1"));
foo->Connect(); // 右クリックイベントを定義しておく
}
598596:2013/12/29(日) 12:00:00.67
>>597 レスありがとうございます。

wxMenu に対して Connect/Bind を試してみたのですが、
クリックイベントは wxEVT_MENU または wxEVT_MENU_RANGE だけが呼び出されました。

LEFT_UP, RIGHT_UP, COMMAND_LEFT_UP, COMMAND_RIGHT_UP, CONTEXT_MENU のイベントを試しましたが、
こちらは EVT_MENU の有無にかかわらず呼び出されませんでした。

試したソースコード : http://codepad.org/S9vtw4yX

wxEVT_MENU の際に右クリックか左クリックかわかれば処理を分岐できるのですが、
wxCommandEvent でクリックしたボタンの情報の取得方法がわかりません。

wxWindow::PopupMenu では wxMenu を参考にして GUI を作り出すようですが、
そこですでにイベントが途絶えているように思えてしまいます。
ウィンドウハンドルも得られないようだし、
ポップアップメニューにイベントを追加することはサポートされていないように感じます。

wx.ListCtrl でも思ったことなのですが、
wx.CommandEvent 系のイベントを使うコントロールクラスでは
wx.MouseEvent 系のイベントは関連付けられないのでしょうか?
599デフォルトの名無しさん:2013/12/29(日) 12:26:46.93
>>598
う〜ん、メニュー上での右クリックは悲しいことにできなさそうね

[wx-users] Trapping wxMouse events over wxMenus
https://groups.google.com/d/msg/wx-users/xAGPwk-f9Ao/0BGV9JD55L4J

この会話の中で、Vadimさん(wxWidgetsのコミッタ)が無理やでとか言ってる
メニューの項目の中で右クリックするとイベントはメニューのほうに行ってしまう
から、そのイベントをつかむのは無理だと。
で、それはWindowsとGTKのネイティブ実装がそうなっているから。

> Ideally, I would like to be able to left-click and
> right-click WITHOUT the menu disappearing.
This is impossible under the two main platforms: MSW and GTK. Menus grab
the mouse when popped up (down?) and so all mouse events go to them.
600デフォルトの名無しさん:2013/12/29(日) 12:34:09.46
いや、ちょっと違うか
メニューの右クリックイベントは掴めるけど
その時呼び元のメニューの項目が消えるといってるのか

その解決策としてはwxMenuを使わずに
menuのウィジェットを自分でエミュレートするしかないとのこと
601デフォルトの名無しさん:2013/12/29(日) 13:16:30.36
>>599-600
ありがとうございました。
wxMenu を流用できないのは残念ですが、
これで踏ん切りがつけたので、 wxListCtrl を使ったものを試そうと思います。

引き続き、wxListCtrl のような wxControl 派生に対して
wxMouseEvent 系のイベントをつける方法を求めていますので
何か参考になることがありましたらよろしくお願いします。
602デフォルトの名無しさん:2014/01/27(月) 14:20:14.73
了解
603デフォルトの名無しさん:2014/01/27(月) 14:35:57.41
>>601 です。 >>596 について進展したので参考になればと思い報告します。

メニューアイテムの上で右クリックしてポップアップメニューを表示することが可能なクラスが wxPython にありました。
wx.lib.agw.flatmenu がまさにぴったりのクラスでした。
RIGHT_UP のイベントはありませんが、 FlatMenuItem::SetContextMenu(FlatMenu) で >>596 でしたいことが簡単にできます。
自作のために PopupWindow あたりを調べているときに見つけました。

また何かありましたらよろしくお願いします。
604デフォルトの名無しさん:2014/02/26(水) 17:32:22.79
サンプルが多すぎて逆にわからないのですが、
ランタイム時にGUIパーツを生成消滅させることって可能ですよね?
例えばユーザが読み込んだファイルによってボタンの数を変化させるなど
605デフォルトの名無しさん:2014/02/26(水) 17:48:08.47
マジレスすると
出来ますよ
606デフォルトの名無しさん:2014/02/26(水) 18:02:12.58
ありがとうございます
関連するサンプルなどありましたら教えていただけると幸いです
607デフォルトの名無しさん:2014/02/26(水) 18:06:08.80
きっと君のHDD(SSD)に既に入ってるよω
608デフォルトの名無しさん:2014/02/26(水) 18:19:55.82
そうなんですよね〜でもsample多くてどっから見ればよいか、という感じです
まあできるということがわかればとりあえず見て回ります
609デフォルトの名無しさん:2014/02/26(水) 18:34:00.97
チュートリアルで最初の方から見ればすぐ出ると思う。
610デフォルトの名無しさん:2014/02/26(水) 18:38:10.36
デモ実行してみて自分の欲しい機能と似たものを見つけたら「ソースを見る」をクリック。
611デフォルトの名無しさん:2014/02/26(水) 18:44:29.66
すいません、見てるものが違うかもしれないので確認させてください
チュートリアルとは何を指してますか?
デモはdemosフォルダの中にあるプロジェクトですよね?「ソースを見る」とはなんでしょうか?
612デフォルトの名無しさん:2014/02/26(水) 18:48:03.88
ごめん。
見てるものが違った。
wxPython の方見てた。
613デフォルトの名無しさん:2014/02/26(水) 18:53:20.95
wxPythonのDemo見て目星を付けて
wxPythonのソースを参考にwxWidgetsでCソース書くのもあり
614デフォルトの名無しさん:2014/02/26(水) 19:08:22.51
なるほど
wxPythonでコードを書いたものがC++に直接変換できたりしたら便利ですね
wxGladeみたいに
615デフォルトの名無しさん:2014/02/26(水) 20:20:43.75
なんか久しぶりにwxスレが伸びてるぞ、新規ユーザー大歓迎
ボタンとかテキストエリアの動的な生成は、wxPanelとかwxSizerを使った簡単なサンプルを作ったら理解できると思う
言葉で説明するよりコード書いたほうがよいけど一応書いとく

例えばボタンを生成・削除しようとする場合
親Panelをparent, 子panelをchildとすると

1. ウィジェットの生成:parentをnewして、必要な分だけchildをnew
child = new wxPanel(parent, …);
...

2. ウィジェットの削除:parent.DestoryChildren();
この関数で子ウィジェットを全部きれいに削除できる

説明の意味がわからなければ、まずは適当なチュートリアルサイトに行くべし
おすすめ
http://zetcode.com/gui/wxwidgets/
616デフォルトの名無しさん:2014/02/26(水) 20:22:35.51
>>614
慣れたら直接C++で書けるから多分コンバータは需要無いよ
617デフォルトの名無しさん:2014/02/26(水) 20:29:50.32
>>615
詳しくありがとうございます
拝見致します

>>616
wxGladeも要りませんかね?
フローはwxGladeで枠を作って機能をC++で書く感じになるのかと
618デフォルトの名無しさん:2014/02/26(水) 20:30:17.32
そのくらい wx は良く出来てるね。
619デフォルトの名無しさん:2014/02/28(金) 21:18:50.52
Qt以下の品質。gtkならcで書けた。
620デフォルトの名無しさん:2014/03/01(土) 00:37:16.59
そらQtのほうがメジャーやろ、死ね
621デフォルトの名無しさん:2014/03/01(土) 01:40:12.84
どっちも1992年頃にできた。OSSといえども商業的な成功がコミュニティ形成の鍵。
それ以外はGood Oldを懐かしむロートルか宗教的価値観に支えられているだけ。
622デフォルトの名無しさん:2014/03/01(土) 01:51:22.19
GUI比較スレってなんだよね・・・
比較的な話ってここで展開してもよいものやら
というかwxWidgetとQtどっちも使ってる人っているのか
623デフォルトの名無しさん:2014/03/01(土) 02:28:31.91
世の中のアプリケーションはQtかAwt/Swingが採用される流れ。
直交性ならgtk。サクッと安定したものを書くならtk。
トイプログラムならSDL+OpenGL。生きるとは残酷なことである。
624デフォルトの名無しさん:2014/03/01(土) 12:13:44.67
バイナリサイズでかいですな
VC2010でサイズ最適化オプションかけてもHelloWorldで5MB...
これはもうどうしようもない感じ?
625デフォルトの名無しさん:2014/03/01(土) 12:23:48.03
どうしようもないっす
ベース部分(wxStringとかwxWindowとか)の定義が容量食ってるから?ではないかという疑惑
626デフォルトの名無しさん:2014/03/01(土) 12:27:18.78
うーんなるほど
ランタイムで色々判断出来るような設計なんですかねえ
627デフォルトの名無しさん:2014/03/01(土) 12:32:32.69
そうですねwxWidgetsはRTTIの仕組みが活かされてるみたいなドキュメントはどっかで見た
たぶんwxWidgetsの中核であるwxWindowクラスはそんなんばっかしなんだろう
628デフォルトの名無しさん:2014/03/05(水) 12:40:46.24
ファイル操作系が異様にやりにくい
wxString dir_name("some directly name");
dir_name.Traverse(some_traverser,wxString(""),flags);
でディレクトリたどりながらファイル抽出できるかなとおもったが
flags = wxDIR_FILES
だとそのディレクトリの中身”のみ”探す
flags = wxDIR_DIRS
だとその下の”全ての”階層のディレクトリを抽出する
wxDIR_DEFAULT
だとその下の”すべての”ファイルを探す
なんでこんな仕様なんだ
629デフォルトの名無しさん:2014/03/05(水) 12:45:32.18
ああわかった
ディレクトリが見つかった場合のみその下も探す、ということなんだな
するとファイルのみだと当然下なんぞ無いからそれ以下を探すことはなく
ディレクトリのみ、とすると下にもいけるから最下層まで探そうとするわけか
うーん
630デフォルトの名無しさん:2014/03/05(水) 12:55:52.46
連投失礼
Traverserクラスを継承してそのOnDir関数の返り値で制御すればいいということでした
631デフォルトの名無しさん:2014/03/11(火) 15:51:27.09
浮動小数点を扱えるsliderってデフォルトではなさそうですか?
632デフォルトの名無しさん:2014/03/11(火) 17:23:40.57
たとえば 0 - 100 を 10 で割ると
0.0 - 10.0 のレンジになります
633デフォルトの名無しさん:2014/03/11(火) 17:30:20.25
やっぱそんな感じなんすね
最大値最小値現在値ラベル表示が便利だなーとおもったんですが、小数点付きでやろうと思ったら
自分でラベル付けるしかなさそうですね
634デフォルトの名無しさん:2014/03/15(土) 21:45:40.12 ID:w4oGcJBI
右側のボタンを押したら左側のパネルを再描写させたい、など
あるイベントから(親でない)ほかのイベントを誘発させたい時ってあると思うのですが
その辺に関する記事てどっかにあります?
635デフォルトの名無しさん:2014/03/15(土) 23:13:55.37 ID:eHN/5w2/
>>634
そのへんはイベント処理の領域になりますね
wxWiki見るしかない感じ

イメージとしては
Sample::LeftPanelRedraw(wxCommandEvent& event);
というイベント関数のIDがID_LeftPanelRedrawであった場合

そのイベントは
wxCommandEvent e(wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, ID_LeftPanelRedraw));
LeftPanelRedraw(e);
で呼べる
636デフォルトの名無しさん:2014/03/15(土) 23:39:19.87 ID:w4oGcJBI
>>635
了解です、参考にさせていただきます
637デフォルトの名無しさん:2014/03/21(金) 11:44:27.13 ID:hjbpSh7I
glcanvasを使ってパネルを描写し、ドラッグに反応するようにしたのですが
ドラッグ中に、ポインタがパネルの範囲外に出た時に、反応が止まってしまいます

sampleのdragimagではドラッグ中であれば範囲外でもイベントが取れるようですが
sampleのopengl/penguinだと取れないようです
マウスイベントの接続は両者ともEVT_MOUSE_EVENTSで行っているので
何が違って取れているのかわかりません
その辺の事情、どなたかご存知ないですか?
638デフォルトの名無しさん:2014/03/21(金) 12:58:58.01 ID:hjbpSh7I
わかりました
wxWindowBase::wCaptureMouse()を呼び出すと以降座標とイベントが取得されるようです
639デフォルトの名無しさん:2014/03/23(日) 17:51:04.60 ID:cY3NJQQl
はい。知ってますよ。
640デフォルトの名無しさん:2014/03/23(日) 19:26:21.87 ID:0loqh5rV
いや、知らないです
641デフォルトの名無しさん:2014/05/12(月) 21:36:09.61 ID:d288LkW9
クロスプラットフォームの開発環境について調べてるんですが、wxWidgetsの
GUIは外観とかは各プラットフォームのものが使われるんですか?それとも
独自のテーマになってしまうんでしょうか?
642デフォルトの名無しさん:2014/05/12(月) 21:48:19.14 ID:N4i3m2/R
>>641
各プラットフォームのものが使われます
つまりWindowsならWIN32、LinuxならGTK、MacならCocoa
それぞれの外観になります

対してQtやTk、JavaのSwingなどは独自のテーマになります
643デフォルトの名無しさん:2014/05/12(月) 21:58:07.29 ID:KhXbSVtN
Qtってそうだったんだ
644デフォルトの名無しさん:2014/05/12(月) 22:57:11.37 ID:d288LkW9
>>642
ありがとうございます。他の環境まで概括してくださるとは助かりました。
645デフォルトの名無しさん:2014/05/13(火) 02:25:29.32 ID:mUTDx2p/
>>641
敢えてプラットフォームのを使わず
テーマ選ぶ方法もあったはず
646デフォルトの名無しさん:2014/05/25(日) 10:10:57.42 ID:Wcl6d7YS
てす
647デフォルトの名無しさん:2014/06/03(火) 09:02:12.18 ID:va6vQ78Z
648デフォルトの名無しさん:2014/06/04(水) 21:33:25.19 ID:EBZlr/6D
いまこのスレ開いたら、>>646にあったはずの有益な書き込みが消えている…
貼っておこう

> 646 名前:デフォルトの名無しさん [sage]: 2014/05/23(金) 01:42:23.54 ID:NdcsMWjh
> wxFormBuilder 3.4.2betaがリリースされていたので試してみたら、
> wxWidgets3.0ベースのGUI描画になったおかげか、2.8をベースに作っていたレイアウトがごっそり狂った。
> これから3.0で作る分にはいいと思うけど、2.8で作る分には3.4.0betaで止めておいた方が良いかも。
649デフォルトの名無しさん:2014/06/05(木) 01:15:41.59 ID:/T91KtMA
なんと、板移転したときに消えたのかもしれないね。
650デフォルトの名無しさん:2014/06/19(木) 12:54:27.42 ID:sMGAuaVR
wxWidgetsを使って作られたプログラムの一覧ってあったりするのかね?
とりあえずAudacityは知ってる
651デフォルトの名無しさん:2014/06/19(木) 19:37:20.57 ID:Brdb8B0I
652デフォルトの名無しさん:2014/06/19(木) 19:41:04.43 ID:sMGAuaVR
おーありがとう
後で見て回る
テンプレにあってもいいじゃないかな?
653デフォルトの名無しさん:2014/06/19(木) 20:07:59.88 ID:gduOxxnf
車の再発見
654デフォルトの名無しさん:2014/06/19(木) 22:56:02.45 ID:Brdb8B0I
655デフォルトの名無しさん:2014/08/24(日) 18:20:53.22 ID:Gtnn2j9y
wxWidgetsで、フォームを閉じる処理をして実際に閉じるまでの間に発生するイベントとかある?
.NETで言うところのOnClosingみたいな感じで。
656デフォルトの名無しさん:2014/08/25(月) 02:12:21.61 ID:OTL7uAT+
OnClose
OnVeto
657デフォルトの名無しさん:2014/08/25(月) 14:23:49.85 ID:IQl9g11m
>>656
d
おかげで作業が進みました。
658デフォルトの名無しさん:2014/08/26(火) 17:09:00.43 ID:QEgdFK7f
Windows で、
CrossBlock + MinGW + wxWidget
で最も簡単な GUI アプリを基本プロジェクトで作成してみたところ、

MyTest.exe のサイズ:736KB
(wxWidgetのDLL) wxmsw28u_gcc_custom.dll のサイズ : 15.9MB
MyTest.exe のメモリ使用量 : 7,732KB // TaskManagerの表示

となった。

この基本アプリは、HelpでAboutでメッセージ・ボックスが表示できる
ようになっているが、メニュー項目をクリックしてから実際にそれが
出るまで数秒かかる。実験したのはそこそこ速いマシンと速いWindows
での事。
659デフォルトの名無しさん:2014/08/26(火) 17:09:45.00 ID:QEgdFK7f
ただし、遅いのは最初の一回だけ。
一度でも表示すると後は速い。
660デフォルトの名無しさん:2014/08/26(火) 17:56:51.72 ID:QEgdFK7f
Mailer の Thunderbird-Portable なんかもマルチプラットフォーム対応
だけど、起動がかなり遅い。これも巨大な dll を読み込んだりしてる
からかな。

起動やメニュー操作が遅くなるのはマルチプラットフォーム化する代償
として負わされるのかも知れん。

こういうツールキットで軽快なアプリを作るのは難しいのかもな。
661デフォルトの名無しさん:2014/08/26(火) 19:14:34.45 ID:OmJCXozv
小規模の自作ソフトでwxWidgetsをスタティックリンクしない理由が分からん
わざわざ合計バイナリサイズを大きく、速度も遅くする理由がどこにあるのだろう
662デフォルトの名無しさん:2014/08/26(火) 21:27:38.25 ID:QEgdFK7f
>>661
なるほど、スタティックリンクにすれば、起動後になってからユーザーの
命令に対する応答が遅れる事はなくなるかもしれない。
起動が遅くなるだけで済むんなら、そっちの方がストレスが少ないかも。
663デフォルトの名無しさん:2014/08/26(火) 21:50:56.10 ID:JtVIC4MG
ある程度規模が大きくなるとスタティックリンクだと初回起動が遅すぎになので
dllにモジュールを分割してやったほうがいい
起動時のメモリへのロード時間はどうしようもないのでスプラッシュをつけてごまかす
664デフォルトの名無しさん:2014/08/26(火) 22:39:34.76 ID:QEgdFK7f
CrossBlockでは、monolithic タイプのライブラリをビルドしてから使う
ようになってるんだけど、それも遅い原因なのかな。

でも起動後にユーザー入力に対するレスポンスが遅いのはどう説明すれば
いいんだろう?

普通の Windows の仕様だと原則、起動時に全ての DLL をロードする。
LoadLibrary()を使えば動的にロードすることも可能は可能だけど、
それをする必要は旧OSでサポートしてなかった新OSのDLLをロードする
ような場合は、多言語化のサポートなど。

なるほど、多言語化のせいかも。_("xxx") みたいなのがあったから、
gettext を使ってる。それでリソースを動的ロードしているのか。
665デフォルトの名無しさん:2014/08/27(水) 04:40:25.51 ID:IfBPvyzm
何度かアプリ起動しているうちにWindowsのFetchが学習してくれて
DLLとか先読みしてくれるようにならないのだろうか
666デフォルトの名無しさん:2014/08/27(水) 06:47:58.33 ID:J2peHUgZ
>>665
それはなる。
・ディスクの内容は、メモリにキャッシュされる。
・同じDLLは、全てのアプリで物理メモリが共有されると聞いたことがある。

# >>664 は、CrossBlockではなく、CodeBlocksだった。スマン。

それより、wxWidget 本家のソース配布に入っている samples を
Windows の mingw32 でビルドしてみたところ、全然遅くなかった。

・アプリの起動は速い。
・起動後のメニューコマンドやユーザー入力に対するレスポンスも速い。
・Aboutダイアログも瞬間ではないが、0.3秒程度で、Windows Nativeアプリ
 でも、その程度の遅さはある場合があるので遜色ない。

CodeBlocks で作ったものが遅い原因は今のところ謎。やはり monolithic な
ライブラリを使用しているからか。
667デフォルトの名無しさん:2014/08/27(水) 07:54:18.52 ID:X38Kg7Ty
>>666

># >>664 は、CrossBlockではなく、CodeBlocksだった。スマン。

なんだと思ったらわりと素人じゃねえかおい

>CodeBlocks で作ったものが遅い原因は今のところ謎。やはり monolithic な
>ライブラリを使用しているからか。

monolithicってのはwxWidgetsのモジュール全部入りのDLL作るという意味なので遅くて当然
(実際試したことないので遅いというのは初めて知ったが…)

普通は ./configure --prefix=/mingw --enable-shared みたいに指定してビルドするから
モジュールごとに分割されたDLLが作成される
Windows上で開発する時はMinGW + NTEmacs/eclipse CDTの環境がおすすめ
668デフォルトの名無しさん:2014/08/27(水) 09:58:52.27 ID:J2peHUgZ
>>667
最後の段落:多分、wxWidgets 本体を MInGW32 用のビルドする際は、
configure は使えない気がする。
CodeBlocks のQuickなんたらRefの説明では、いきなり、
make するように支持されていた。しかも、-fno なんたら dll-export
みたいなオプションを付けろと指示。これは、MinGW32のバグで、
付けないと最後のldの段階でldがクラッシュする事をたまたま発見。


ところで話は変わって聞いておきたいのですが、 eclipse では
wxWidget のイベントを書くようなときに

・BEGIN_EVENT_MAP に自動的に一行マクロを挿入してくれて
・*.h にもメンバ関数宣言を書いてくれて
・*.cpp にも5行くらいの関数定義本体の雛形を書いてくれ

たりしますか?
669デフォルトの名無しさん:2014/08/27(水) 10:01:06.29 ID:J2peHUgZ
つまり、イベント・ハンドラを追加したとき、

BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow)
EVT_PAINT (wxListMainWindow::OnPaint)
EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse)
EVT_CHAR (wxListMainWindow::OnChar)
EVT_KEY_DOWN (wxListMainWindow::OnKeyDown)
EVT_KEY_UP (wxListMainWindow::OnKeyUp)
EVT_SET_FOCUS (wxListMainWindow::OnSetFocus)
EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus)
EVT_SCROLLWIN (wxListMainWindow::OnScroll)
EVT_CHILD_FOCUS (wxListMainWindow::OnChildFocus)
END_EVENT_TABLE()

とか、クラスを書くとき

IMPLEMENT_DYNAMIC_CLASS(wxListMainWindow,wxScrolledWindow)

見たいなものの自動生成があるとうれしいんですが、そういう IDE
はありません?
670デフォルトの名無しさん:2014/08/29(金) 11:13:03.59 ID:AEJEOYpd
wxWidgetsの問題点の1つは、プログラムのサイズが大きくなる事。
特に静的リンクしたときに顕著。

Windows は、VC++ にて、
ac1rd: CUI の Win32 と printf() を使ったもののリリース・動的リンク版が 16KB程度。
    puts() を使えばもっと小さく出来る。
ac1rs: CUI の Win32 と printf() を使ったもののリリース・静的リンク版が 40KB程度。
    puts() を使えばもっと小さく出来る。
ag2rd: GUI の MFC の 基本的な MDI アプリがリリース・動的リンク版で 36 KB 程度。
ag2rs: GUI の MFC の 基本的な MDI アプリがリリース・静的リンク版で 332 KB 程度。


wxWidgets 2.8.12 の samples では、
bc1rd: CUI の console.exe がリリース・動的リンク版で 138KB
bc1rs: CUI の console.exe がリリース・静的リンク版で 863KB
bc1dd: CUI の console.exe がデバッグ・動的リンク版で 184KB

bg2rd: GUI の keyboard.exe がリリース・動的リンク版で 293KB
bg2rs: GUI の keyboard.exe がリリース・静的リンク版で 2,924KB
bg2dd: GUI の keyboard.exe がデバッグ・動的リンク版で 492KB

ただし、bc1xx は、アプリ本体のプログラムが複雑なことをしているようなので、
もっと小さく出来る可能性があり。
671デフォルトの名無しさん:2014/08/29(金) 19:04:31.75 ID:GS9LyL7J
その説明にac1だの何だの自分以外分からない定義を使う必要があったのだろうか
672デフォルトの名無しさん:2014/08/29(金) 19:07:59.00 ID:AEJEOYpd
今から見るとそうかも。
a: Windows Native or MFC
b: wzWidgets
c: CUI
g: GUI
r:release, d:debug
d:dynamic link, s:static link
673デフォルトの名無しさん:2014/08/30(土) 00:17:55.46 ID:S/CtHe8u
>>668

>最後の段落:多分、wxWidgets 本体を MInGW32 用のビルドする際は、
>configure は使えない気がする。

なにいってんだCodeBlocksのドキュメントにそう書いてあるだけで
基本autotoolsで作られたソースはconfigureでビルドできるぞ
実際自分はWindows上のmingw32/64、LinuxのクロスビルドからのMinGWでconfigure使ってる

なぜMakefileでやれという指示なのかというと、そのほうが簡潔で保守しやすいからだ
あとGNU MakeじゃないMakeでもビルドできるようにしたいとかいう微妙なこだわりが有る場合も有る

>>669
エディタの補助機能を使うべきだ、Emacsなら矩形範囲選択で一気に書ける
ソースのひな形自動生成機能は知らんなあ
674デフォルトの名無しさん:2014/08/30(土) 00:21:29.81 ID:S/CtHe8u
>>670
MinGWビルドでバイナリをストリップしたやつとか比較しないのか
675デフォルトの名無しさん:2014/08/30(土) 07:56:49.02 ID:pUv0T+7B
>>674
Stripに詳しくないので、言っている意味が分からない。

Stripって Release 用に Build した Binary に対して行っても
サイズダウンできたりするの?
676デフォルトの名無しさん:2014/08/30(土) 07:58:19.03 ID:pUv0T+7B
>>674
Stripに詳しくないので、言っている意味が分からない。

Stripって Release 用に Build した Binary に対して行っても
サイズダウンできたりするの?
677デフォルトの名無しさん:2014/08/30(土) 08:15:51.54 ID:hpIa4Qjb
日本語インライン入力の対応ってまだなの?
というか予定自体なくて諦めた方がいい?
wxWidgets使ってるEditraってエディタにそろそろ移行できるかなと
思って試してみたら、未だにインライン入力できない
678デフォルトの名無しさん:2014/08/30(土) 08:19:53.34 ID:pUv0T+7B
>>674

小さくなりますた!!


Relese, 動的リンク
/wxWidgets-2.8.12/samples/keyboard/gcc_mswdll/keyboard.exe

strip 前:299,808 bytes
strip 後:124,430 bytes

Relese, 静的リンク
/wxWidgets-2.8.12/samples/keyboard/gcc_msw/keyboard.exe

strip 前:2,993,255 bytes
strip 後:1,887,758 bytes

strip 後も、*.exe が正常に起動することを確認済み。
679デフォルトの名無しさん:2014/08/30(土) 08:22:26.84 ID:pUv0T+7B
>>673
>エディタの補助機能を使うべきだ、Emacsなら矩形範囲選択で一気に書ける

詳しく:
680デフォルトの名無しさん:2014/08/30(土) 11:51:11.86 ID:RJxcDZkh
馬鹿には無理
681デフォルトの名無しさん:2014/08/30(土) 12:02:34.82 ID:S/CtHe8u
スタンド・アローン・コンプレックスと化した馬鹿には無理さんオッスオッス

>>679
cua-modeでググって
http://qiita.com/yyamamot/items/7efcbfdcccdb5fa45ebe

例えばイベントテーブルとかはこれでザクッと一気に書ける
もちろん個々のwxWindowIDとメソッド定義は書かなくてはいけないが
クラス名とマクロ定義は同じ文字列の繰り返しなのでだいぶ楽になる
682デフォルトの名無しさん:2014/08/30(土) 13:53:01.64 ID:pUv0T+7B
>>681
あー、そういう風に沢山のイベントを一気に書きたいんじゃなくて、
開発段階で徐々にイベントを追加して行く際に、

1. *.h のクラス内にメンバ関数宣言
2. *.cpp に EVENT MAP
3. *.cpp に メンバ関数定義の本体

の三箇所にコードを書くのが面倒ということなんだわ。
683デフォルトの名無しさん:2014/08/30(土) 14:33:49.98 ID:S/CtHe8u
>>682
それは自分で作らないと無さげですねえ
684デフォルトの名無しさん:2014/08/30(土) 19:11:57.66 ID:5dlfaubU
wxFormBuilderでしかGUIとイベントを設計できない俺には何言ってるのかさっぱりわからんぜよ……
685678:2014/08/31(日) 15:54:21.95 ID:X+I89xFV
wxAUI のデモ・アプリ wxauitest.exe のサイズは、1,417,216 bytes。
スタンドアロンのアプリで、環境変数からパスを完全に消去しても起動
できた。つまり、ライブラリはDLLを使わずに静的リンクされている。
wxAUIはFloating & Dockingのできる強力なGUI。

>>678 に示した keyboard.exe はキーボードから押されたキーの値を
表示するだけで、上記アプリよりずっとシンプルなのにも関わらず、
1,887,758 bytes と 470,542 bytes も大きい。

理由は不明。
686デフォルトの名無しさん:2014/08/31(日) 15:56:18.96 ID:5rh0udnx
そんなことしなくても
DLLの依存関係調べるツールあるのに
687デフォルトの名無しさん:2014/08/31(日) 16:01:12.95 ID:5rh0udnx
ちなみにwxWidgetsで作った一番小さいexe探したら65kbのがあった
688678:2014/08/31(日) 17:34:23.46 ID:X+I89xFV
Windows実行形式であっても、コンパイラが、MinGW32 と VC++ でサイズに
大幅な違いが出てくるのかな?
689678:2014/08/31(日) 17:41:03.82 ID:X+I89xFV
>>687
それは DLL 版だよ。絶対に。
690デフォルトの名無しさん:2014/08/31(日) 19:56:13.33 ID:F1QgxQvq
>>685
実行ファイルの関数テーブルに何が入っているか nm で確認したら少しはわかるかもね

>>688
大幅とは行かないかもしれないがVC++はWindowsのみをターゲットにしているから
基本的にコンパイル後のバイナリサイズは MinGW > VC++ だよね
691デフォルトの名無しさん:2014/08/31(日) 20:18:05.13 ID:da+aRwUf
CodeBlocks + MinGW32 で、
wxWidgets の Monolithic、ASCIIライブラリ, 静的リンク で
最も簡単な Frame Based な GUI を作成してみたら、
2,073,600 バイトよりは小さくならなかった。

wxWidgets のライブラリは、
-Os
-ffunction-sections
-fdata-sections
でコンパイルし、
-Wl,--gc-sections -s
でライブラリ化した。その時のコマンド:

mingw32-make -j2 -f makefile.gcc CPPFLAGS="-MD -MP -DHAVE_W32API_H
-D__WXMSW__ -DNOPCH -DwxDEBUG_LEVEL=0 -DNDEBUG" CFLAGS="-mthreads
-fmessage-length=0 -ffunction-sections -fdata-sections -fno-builtin
-Os" CXXFLAGS="-mthreads -Wno-ctor-dtor-privacy -fmessage-length=0
-ffunction-sections -fdata-sections -fno-builtin -Os
-fno-keep-inline-dllexport" LDFLAGS="-Wl,--subsystem,windows
-Wl,--gc-sections -s -mthreads -mwindows"
BUILD=release UNICODE=0 SHARED=0 MONOLITHIC=1


CodeBlocks でアプリのリンクのオプションにも、
-Wl,--gc-sections -s
は付けてある。
692デフォルトの名無しさん:2014/08/31(日) 20:27:38.74 ID:da+aRwUf
ちなみに、Unicode 版より ASCII 版のほうが小さくなることを確認済みである。

[Compiler settings - #defines]
が、標準では、
__GNUWIN32__, __WXMSW__, WXUSINGDLL, wxUSE_UNICODE, WX_PRECOMP
となるところを:
__GNUWIN32__, __WXMSW__
だけとし、

[Search Directories] の Compiler, Linker, Compiler
の、gcc_dll の部分を、gcc_lib に変えた。

アプリにリンクするリンクライブラリとしては、上記で作成した Monolithic
ライブラリだけでは足りず、以下が必要であった。Win32のimport libraryは、
ライブラリを動的リンクする場合はライブラリのDLLが行っているので必要ない
が、ライブラリを静的リンクする場合は、アプリが直接リンクする必要がある
ため必要となるのは理解できる。libwxpng, libwxjpeg, libwxtiff, libwxzlib
が必要となった理由は不明。

libwxmsw28 // これが wxWidgets の monolithic ライブラリ本体。
libwxpng
libwxjpeg
libwxtiff
libwxzlib
libuuid // Win32 の import library
libcomctrl32 // Win32 の import library
libwinspool // Win32 の import library
liboleaut32 // Win32 の import library
libole32 // Win32 の import library

ちなみに、wxWidgets を動的リンクする場合は、ここが、libwxmsw28
だけで済む。
693デフォルトの名無しさん:2014/08/31(日) 20:33:24.61 ID:da+aRwUf
誤:[Search Directories] の Compiler, Linker, Compiler
正:[Search Directories] の Compiler, Linker, Resource Compiler

誤:Win32のimport libraryは、ライブラリを動的リンクする場合はライブ
  ラリのDLLが行っているの
正:wxWidgets ライブラリをアプリに動的リンクする場合は
  wxWidgets ライブラリの DLL 部分が Win32 の import library の
  リンクを行っているの
694デフォルトの名無しさん:2014/08/31(日) 20:45:44.37 ID:0aT2mco7
サイズはどうでもよくないか。exeを使う側としては速度では?
あとコア、主要のライブラリのビルドから、ダイナミックリンクを徹底してOSに丸投げしたら小さくなるだろ。
695デフォルトの名無しさん:2014/08/31(日) 20:48:05.22 ID:ks+4W1rG
完全テンプレートライブラリにしたら軽くなるんだろうか
696デフォルトの名無しさん:2014/08/31(日) 20:58:57.78 ID:da+aRwUf
>>694
でも wxWidgets がやっていることの割にはリンクされるバイト数が多すぎる
感じがする。
基本、Win32をラッピングしているだけなのだから、2MBも必要ない。
697デフォルトの名無しさん:2014/08/31(日) 21:00:34.83 ID:ks+4W1rG
ラッピングしてるだけじゃなくマルチプラットフォームのために徹底した抽象化をしてるんでしょ
とソースも読まず推測
698デフォルトの名無しさん:2014/08/31(日) 21:04:00.35 ID:da+aRwUf
>>697
でもソースを呼んでみたら、たとえば、wxListCtrl なんかは、
Win32 の LIST CONTROL をそのまま使っていた。
DrawRect()などで書いているわけではない。
ただし、wxGenericListCtrl だったかは、DrawRect()みたいなグラフィック
関数で独自に描画していた。が、それは、Windows版では簡単には使えない
という噂を聞いたが。
699デフォルトの名無しさん:2014/08/31(日) 21:06:47.60 ID:da+aRwUf
>>697
wxWidgets の基本設計は、Widgetは、OS nativeの物を使うが、
どんなサイズであっても対応できるように Sizer で Layout を
コントロールする、という物。

なので、抽象化はサイズと配置程度で済むはずなのだが・・・。
700デフォルトの名無しさん:2014/08/31(日) 21:09:35.31 ID:F1QgxQvq
>>696

>>697の言ってることが正しい。

---------------------
    wxWidgets
---------------------
Win32 | GTK | Cocoa etc...
---------------------

wxWidgetsは通常のGUI用ライブラリに一枚レイヤを重ねた形になるので
型情報・関数テーブルの情報だけで結構容量食う

>>692
ASCIIモードでビルドするのはやめておいたほうがいい
日本語使えないし

というかなぜMonolithicビルドにこだわるのか…
普通にconfigureからビルドしてdllごと配布したほうが立ち上がりは早い
701デフォルトの名無しさん:2014/08/31(日) 23:57:56.42 ID:da+aRwUf
wxWidgets の samples で ListCtrl 関連を見てみたが、ヘッダを
ドラッグしようとしてもドラッグできないので、ドラッグによる列の入れ替
えは出来ないようだった。

実は、Win32 の LIST CONTROL は、

・マウスドラッグによる自動的な列の入れ替えをした際、どこにどの列が
 行ったかを掌握するには注意が必要。動作を知るには基本的に実験を必要
 とする。
・第1カラムを削除すると第2カラム以降を削除した時とは同じとは言えない
 奇妙な動作をする。奇妙な動作と言ったがバグに近い。

こういった辺りがどう処理されているか知りたかったのだが、サンプルでは
故意か偶然か、全くそこに触れていないようだった。
702デフォルトの名無しさん:2014/08/31(日) 23:59:28.64 ID:da+aRwUf
wxWidgets の samples で ListCtrl 関連を見てみたが、ヘッダを
ドラッグしようとしてもドラッグできないので、ドラッグによる列の入れ替
えは出来ないようだった。

実は、Win32 の LIST CONTROL は、

・マウスドラッグによる自動的な列の入れ替えをした際、どこにどの列が
 行ったかを掌握するには注意が必要。動作を知るには基本的に実験を必要
 とする。
・第1カラムを削除すると第2カラム以降を削除した時とは同じとは言えない
 奇妙な動作をする。奇妙な動作と言ったがバグに近い。

こういった辺りがどう処理されているか知りたかったのだが、サンプルでは
故意か偶然か、全くそこに触れていないようだった。
703デフォルトの名無しさん:2014/09/01(月) 00:00:47.70 ID:X69OanmZ
>>700
>wxWidgetsは通常のGUI用ライブラリに一枚レイヤを重ねた形になるので
>型情報・関数テーブルの情報だけで結構容量食う

オイラはコンパイラの基本部分に詳しいが、それだけで1MBなどには
ならない。
704デフォルトの名無しさん:2014/09/01(月) 00:06:51.19 ID:X69OanmZ
>>694
諦めることも手かも知れないけど、やっている事の規模とサイズとの
ギャップに納得がいかない人もいるはず。

wxWidgetsはラッピング・ライブラリの一種。

8bit時代、16bit時代を知る人にとって、Widget 程度が64KBを超える
事があってはならない。どういうプログラミングをしたら2MBにもなる
のか。
705デフォルトの名無しさん:2014/09/01(月) 01:16:10.03 ID:7Pg7L2PA
>>703
>>704
一理あるのでちょっとメーリングリストを探ってみたり
まず、wx/wx.hがいろいろなヘッダファイルを事前にincludeしているので
それがバイナリサイズの増加の一因になっているらしい

[wxMSW]: why EXE-files are so large?
https://groups.google.com/d/msg/wx-users/psTmm3nB6AU/9j6-4ir95-gJ
706デフォルトの名無しさん:2014/09/01(月) 07:25:22.06 ID:X69OanmZ
>>591 のライブラリを samples/keyboard にも使ってみたら、
keyboard.exe のサイズを 1,619,968 にまで縮小することに成功した。
コンパイラは MinGW32 のまま。
条件は:release, 非UNICODE(ASCII), SHARED=0(静的リンク), MONOLITHIC = 1

どうやら MONOLITHIC であるかどうかは最終 exe サイズには関係してないらしい。
ライブラリと言うのは集めてもばらしても、最終 exe のリンク結果には影響を
及ぼさない事が基本なので、元々当たり前なことなのだが。



[samples/keyboard]
$ mingw32-make -f makefile.gcc BUILD=release UNICODE=0 SHARED=0 MONOLITHIC=1


[samples/keyboard/makefile.gcc の修整]
-------------------------------------------------------------------------------------
$(OBJS)\keyboard.exe: $(KEYBOARD_OBJECTS) $(OBJS)\keyboard_keyboard_rc.o
     $(CXX) -o $@ $(KEYBOARD_OBJECTS) $(__DEBUGINFO) $(__THREADSFLAG)
-L$(LIBDIRNAME) -Wl,--subsystem,windows -Wl,--gc-sections -Wl,-s -mwindows
$(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p)
$(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p)
-lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG)
$(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) $(__CAIRO_LIB_p)
-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32
-loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32
--------------------------------------------------------------------------------------

上記は original の makefile.gcc に、
-Wl,--gc-sections -Wl,-s
を追加しただけ。
707デフォルトの名無しさん:2014/09/01(月) 07:31:05.33 ID:X69OanmZ
誤:>>591
正:>>691
708 【大吉】 :2014/09/01(月) 07:40:36.83 ID:zQucGkuf
wxWidgets の samples で ListCtrl 関連を見てみたが、ヘッダを
ドラッグしようとしてもドラッグできないので、ドラッグによる列の入れ替
えは出来ないようだった。

実は、Win32 の LIST CONTROL は、

・マウスドラッグによる自動的な列の入れ替えをした際、どこにどの列が
 行ったかを掌握するには注意が必要。動作を知るには基本的に実験を必要
 とする。
・第1カラムを削除すると第2カラム以降を削除した時とは同じとは言えない
 奇妙な動作をする。奇妙な動作と言ったがバグに近い。

こういった辺りがどう処理されているか知りたかったのだが、サンプルでは
故意か偶然か、全くそこに触れていないようだった。
709デフォルトの名無しさん:2014/09/01(月) 07:45:41.49 ID:X69OanmZ
>>694
>あとコア、主要のライブラリのビルドから、ダイナミックリンクを徹底してOSに丸投げしたら小さくなるだろ。

>>692」で示した Win32 import library は、Windows のシステム DLL
をリンクするための小さなライブラリ。例えば、
libcomctrl32 をリンクしていても、実際は、comctrl32.dll が動的リンク
される。libcomctrl32.a は、MinGW32 が用意している import library で:

/xxx/CodeBlocks/MinGW/lib/libcomctl32.a # 86,428 bytes
C:/WINDOWS/system32/comctl32.dll     # 617,472 bytes

のように、windows/system32 の comctrl32.dll を動的リンクするための
呼び出し部分だけを提供する小さなライブラリ。
710デフォルトの名無しさん:2014/09/01(月) 08:18:53.15 ID:1emh7fCQ
map出力して何がリンクされてるか見れば?
711デフォルトの名無しさん:2014/09/01(月) 14:09:14.38 ID:X69OanmZ
MONOLITHIC の値が違うと別の *.o が作成されることが判明。
以下は、SHARED=0(静的リンク)の場合の、MONOLITHIC が 0 と 1 の場合。

CORELIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
  $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
  $(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
  $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \
  $(__MSLU_DEFINE_p) $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include \
  $(____CAIRO_INCLUDEDIR_FILENAMES) -W -Wall -DWXBUILDING -I..\..\src\tiff \
  -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib -I..\..\src\regex \
  -I..\..\src\expat\lib -DwxUSE_BASE=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \
  -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)

MONOLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
  $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
  $(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
  $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \
  $(__MSLU_DEFINE_p) $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include \
  $(____CAIRO_INCLUDEDIR_FILENAMES) -W -Wall -DWXBUILDING -I..\..\src\tiff \
  -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib -I..\..\src\regex \
  -I..\..\src\expat\lib -DwxUSE_BASE=1 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \
  -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
712デフォルトの名無しさん:2014/09/01(月) 14:13:21.84 ID:X69OanmZ
違いは、-DwxUSE_BASE の部分で、
 MONOLITHIC = 0 の場合 : -DwxUSE_BASE=0  // #define wxUSE_BASE 0
 MONOLITHIC = 1 の場合 : -DwxUSE_BASE=1  // #define wxUSE_BASE 1
となっている。

例えば、/xxx/src/msw/dc.cpp は、同じソースに対し make に渡すオプションに応じて
以下の2種類の *.o ファイルが作成される。
1つ目は、MONOLITHIC=0の時に作られ、2つ目は、MONOLITHIC=1の時に作られる。

ifeq ($(USE_GUI),1)
$(OBJS)\corelib_dc.o: ../../src/msw/dc.cpp
  $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif

ifeq ($(USE_GUI),1)
$(OBJS)\monolib_dc.o: ../../src/msw/dc.cpp
  $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif

ソースを見ると、wxUSE_BASE の値に応じて場合分けされている箇所が多数ある。
つまり、MONOLITHIC の 0 と 1 の違いは単に *.o ファイルの集め方の問題では無い。
コンパイル時点のソース自体が変更されるのである。故にリンク後の*.exe のサイズ
が変わって来ても不思議は無い。これは驚くべきことである。
713デフォルトの名無しさん:2014/09/01(月) 15:21:49.13 ID:M8Jh9ISi
別に驚くほどのことじゃ無いけど
714デフォルトの名無しさん:2014/09/01(月) 16:14:53.94 ID:X69OanmZ
>>713
コンパイルオプションまで変えてしまって何をやっているかと言うこと
なんだよ。ライブラリの集め方だけの問題じゃないって事なんだ。

ライブラリの動作が変わってしまい、MONOLITHIC が 0 と 1とで結果が違うことに
悩まされる可能性もある。

単にライブラリのオブジェクトの集め方(含み方)の問題では無いとすると、MONOLITHIC
オプションの意味はいったい何かと言う問題になる。


また、最終EXEが大きくなる理由として、アプリが使ってないオブジェクトを
非常に基本的なライブラリの一部が参照している可能性がある。
そしてそのオブジェクトが別のオブジェクトを勝手に参照して・・・という
事が続いて最終EXEのサイズが肥大化してしまっているのかも知れない。
715デフォルトの名無しさん:2014/09/01(月) 16:33:12.36 ID:X69OanmZ
http://wiki.wxwidgets.org/WxWidgets_Build_Configurations

「MONOLITHIC=1 :
 Packages all libraries in a single file.
 (Note: do not combine this option with a static build.)」

とあった。static build の時は、MONOLITHIC=1 にするな、と
書かれている・・・。
716デフォルトの名無しさん:2014/09/01(月) 16:49:54.89 ID:zU7EZBBQ
いったい何を目的として何を検証しているんだ?
717デフォルトの名無しさん:2014/09/01(月) 17:12:16.45 ID:bPa0tOdz
このライブラリを使うなとなる。
718デフォルトの名無しさん:2014/09/01(月) 17:31:47.05 ID:X69OanmZ
>>717
そういうわけではない。
719デフォルトの名無しさん:2014/09/02(火) 13:46:25.35 ID:TmMSlGm8
configure を試してみたら、configureのヘルプ通りには行かなかった:

・以下、xxx = wxWidgets-2.8.12 とする。/xxx/ に configure スクリプトがある。

・configureを使用するために、単なるcmd.exeではなくcygwin環境が必要であった。

・cygwinを起動する際、cygwin に入ってからの PATH が、
 (MinGWのbin) : /usr/local/bin/ : /usr/bin/ : (Winからのbin)
 の順になるようにした。

・カレントを /xxx/ にして configure した。configure の引数には少なくとも

・--build=i686-pc-mingw32 --host=i686-pc-mingw32 --target=i686-pc-mingw32
 を指定し、例外, rtti, regex, zlib, jpeg, png, tiff は無効にするオプション
 を設定した。他にも無効にしたものも多い。大量に及ぶので スクリプトに記述した。

・Makefileが普段の /xxx/build/msw/ ではなく、/xxx/ に作られた。

・/xxx/samplesのサブディレクトリにあるMakefileが書き換えられた。

・setup.h が、
 /xxx/lib/wx/include/msw-ansi-releasw-static-2.8/wx
 /xxx/lib/wx/include/msw-ansi-releasw-2.8/wx
 の二箇所に作成された。元々各所にあるが、例としては
 /xxx/include/ws/msw や /xxx/lib/gcc_lib/msw/wx にある。 

・/xxx/ で make[ret] してみた。

・途中で例外を有効にするように言われたので有効にした。
720デフォルトの名無しさん:2014/09/02(火) 13:46:50.57 ID:TmMSlGm8
・regex, zlib, jpeg, png, tiff は全て無効にしていたにも関わらず、
 src/regex, src/zlib, src/jpeg, src/tiff にしかない *.h ファイルが見つから
 ないエラーとなった。。
 そこで、Makfileを直接修整して、CPPFLAGS に -I 指定によって、上記ディレクトリ
 を最後尾に追加した。

・make には成功した。

・/xxx/ に大量の *.o ファイルが作られ、*.a は /xxx/lib/ に作られた。
 /build/msw から make した場合は、/xxx/lib/gcc_lib に作られるのと対照的
 である。

・/xxx/samples/console で make してみたら、成功した。

・「プロシージャエントリポイント _gxx_persolanity_v0 が
  ダイナミック リンク ライブラリ libstdc++-6.dll から見つかりませんでした。」
  のメッセージボックスが出て起動できず。

・Makefileを書き換えて、LIBS の最後に -lstdc++ を書いても症状は治まらない。
721デフォルトの名無しさん:2014/09/02(火) 13:48:11.36 ID:TmMSlGm8
・regex, zlib, jpeg, png, tiff は全て無効にしていたにも関わらず、
 src/regex, src/zlib, src/jpeg, src/tiff にしかない *.h ファイルが見つから
 ないエラーとなった。。
 そこで、Makfileを直接修整して、CPPFLAGS に -I 指定によって、上記ディレクトリ
 を最後尾に追加した。

・make には成功した。

・/xxx/ に大量の *.o ファイルが作られ、*.a は /xxx/lib/ に作られた。
 /build/msw から make した場合は、/xxx/lib/gcc_lib に作られるのと対照的
 である。

・/xxx/samples/console で make してみたら、成功した。

・「プロシージャエントリポイント _gxx_persolanity_v0 が
  ダイナミック リンク ライブラリ libstdc++-6.dll から見つかりませんでした。」
  のメッセージボックスが出て起動できず。

・Makefileを書き換えて、LIBS の最後に -lstdc++ を書いても症状は治まらない。
722デフォルトの名無しさん:2014/09/02(火) 16:41:02.66 ID:TmMSlGm8
console.cpp の中身を printf() だけを使う4行の main() 関数だけに
書き換えてみたら問題なく起動して普通に文字列が表示された。

なので、MinGW 環境の問題ではなさそう。
723デフォルトの名無しさん:2014/09/02(火) 17:12:10.67 ID:TmMSlGm8
wxPrintf()だけを使った console 版 hello world が、static link
で 96,468 bytes で済んだ。

ところが、wxString を使った場合、作成した exe を実行しようとすると
>>721 後半で書いたメッセージ・ボックスが出て起動できない。
724デフォルトの名無しさん:2014/09/02(火) 17:17:49.98 ID:DoCZo715
libstdc++がダイナミックリンクになってるだけだろ。
725デフォルトの名無しさん:2014/09/02(火) 17:44:29.48 ID:TmMSlGm8
>>724
ダイナミックライブラリであるところの
 libstdc++-6.dll
は既に読み込めているんですわ。
「libstdc++-6.dll から見つかりませんでした。」
の「から」がそれを表している。

なお、configureを使わずに、build/msw から build したライブラリだと
wxStringとwxPrintfだけを使ったconsoleアプリは、静的リンクでも
451,584 バイトで済むことが判明。こちらはちゃんと起動できる。
726デフォルトの名無しさん:2014/09/02(火) 19:04:52.66 ID:DoCZo715
パスが通ったところに互換性のない別バージョンのdllがあるんだろ。
mingwだとsjljとdw2の2種類あるから。
727デフォルトの名無しさん:2014/09/02(火) 19:56:42.14 ID:TmMSlGm8
MinGW/bin を

i686-pc-mingw32-g++ と MinGW/bin/g++ は別物らしくコンパイラのサイズ
(作ったプログラムのサイズではなく変換機のサイズ)がそもそも違う。

また、前者では、リンク段階で何もエラーを出さないが、
後者では、ちゃんと、_gxx_persolanity_v0 や _Unwind_Resume が
undefined reference というエラーになる。
728デフォルトの名無しさん:2014/09/02(火) 20:00:33.47 ID:TmMSlGm8
>>726
最初、xxx dw2 yyy.dll が見つからない、と言うメッセージ・ボックス
が出たのだが、そのdllを検索すると MinGW/bin にある事が分かって、
そこにパスを通したらそのメッセージ・ボックスは出なくなった。

その代わりに >>721 のメッセージ・ボックスが出るようになった。
729デフォルトの名無しさん:2014/09/02(火) 20:55:48.58 ID:TmMSlGm8
結論的に言うと、自分のローカルにMinGW32 の別バージョンが沢山あった。
サンプルのコンパイルに使われたのと同じMinGW32のbinだけをパスに
設定してからサンプルを起動すると実行できるようになった。
実行結果も問題ない。実行ファイルはstripするとサイズが小さくなったが、
>>691のライブラリをリンクした物よりも大きくなってしまった。

[wxStringを使った最小な cui program のサイズ]

>>691 のwxライブラリ使用時 : 451,584 bytes
 コンパイラは CodeBlocks付属のMinGW

・configureしたwxライブラリ使用時 : 547,342 bytes
 コンパイラは cygwinにインストールしたMinGW

[wxFrameを使った最小な gui program のサイズ]

>>691 のwxライブラリ使用時 : 1,611,264 bytes
 コンパイラは CodeBlocks付属のMinGW

なお、今回は、>>719-720 のような不具合を回避するため、RegExや、png,jpeg,tiff,zlib
などはconfigureで有効にしておいた。そうすると>>720の最初のヘッダファイル問題は
消えたので、何か良いことがあるかと思ったから。ただし、様子を見るとそれは必要なかった
かも知れない。サイズ縮小のためには disable にすべきかも。
730デフォルトの名無しさん:2014/09/02(火) 21:12:01.59 ID:WV3CuJcS
よかったな
-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
にすればlibstdc++とスタティックリンクできるかもな
731デフォルトの名無しさん:2014/09/02(火) 22:46:11.97 ID:TmMSlGm8
cygwin版のMinGWと、cmd.exe 版のMinGWって結構違うような気がしてきた。
Makefileなんかもcygwin版だと/cygdrive/c/xxx/yyy/zzz の形式になっている
のに対し cmd.exe版は c:\xxx\yyy\zzz になっているらしい。
また、コンパイラに -I 指定したパスなんかも同様の違いがあるらしく、
configureが作ったMakefileは、cygwin版MinGW用で、
cmd.exe版のMinGWでは、#inclde "wx/setup.h" のパスが探せなかったり
する。

build, host, target の指定は、全て mingw を指定していたのだから、
cygwinが入り込む余地は無かったはず。これは、configure.inか、
Makefileのどちらかを自前で修整する必要がありそう。

さらに、makeが(?)
process_begin: CreateProcess(NULL, sh xxxxxx, ...) failed.
というエラーを出すことがあり、その原因を探る必要もある。
732デフォルトの名無しさん:2014/09/02(火) 22:56:33.59 ID:RsSqk3ed
もう完璧にスレ違いだな
733デフォルトの名無しさん:2014/09/02(火) 22:56:38.09 ID:TmMSlGm8
cygwin版のMinGWと、cmd.exe 版のMinGWって結構違うような気がしてきた。
Makefileなんかもcygwin版だと/cygdrive/c/xxx/yyy/zzz の形式になっている
のに対し cmd.exe版は c:\xxx\yyy\zzz になっているらしい。
また、コンパイラに -I 指定したパスなんかも同様の違いがあるらしく、
configureが作ったMakefileは、cygwin版MinGW用で、
cmd.exe版のMinGWでは、#inclde "wx/setup.h" のパスが探せなかったり
する。

build, host, target の指定は、全て mingw を指定していたのだから、
cygwinが入り込む余地は無かったはず。これは、configure.inか、
Makefileのどちらかを自前で修整する必要がありそう。

Makfileの / を \ で置換して、/cygdrive/x/ を x:/ にしてみたら結構
行ける。途中、pch でファイルにアクセス拒否で書き込めないと言われるが、
もう一度 make すると、何事も無かったように続行する。
734デフォルトの名無しさん:2014/09/02(火) 22:57:58.06 ID:TmMSlGm8
>>732
wx アプリのサイズダウンの仕方関連なんだけど。
735デフォルトの名無しさん:2014/09/02(火) 23:40:17.26 ID:wgXgojMH
作ったバイナリのサイズなんてwxWidgetsのビルド方法によって大きく変わるうえ、
最終的に使い物にならないライブラリの出来上がりとなるのが目に見えている
本当に必要なものだけを炙り出すつもりなら止めはしないが、どう考えても徒労でしかないと思うぞ
736デフォルトの名無しさん:2014/09/02(火) 23:47:28.37 ID:r9jqoPj2
正直wxWidgetsのバイナリサイズの話以外はほとんど既出だし
CygwinとMinGWの仕様の違い、クロスコンパイラのターゲット、configureの基本
それらの件に関しては自分のブログにでも書いていてほしい
737デフォルトの名無しさん:2014/09/02(火) 23:54:47.98 ID:r9jqoPj2
まあ一応上から目線でコメントしとくと

>>725
libgccの存在に関して勉強不足、>>726の言うとおりdllの種別が2種類ある
DLLにするよりもlibgccだけスタティックリンクしたほうがいいが、libtoolにかませるのが
割と面倒なので一緒に配布したほうが楽、まぜこぜにするとか初心者くさい

>>727
クロスコンパイラとネイティブコンパイラを混同している

>>731
もうネット上で一万回は言及されたであろうCygwinとMinGWのファイルパスについて
述べているが無駄なのでやめてほしい、てか環境を混ぜるな
738デフォルトの名無しさん:2014/09/03(水) 00:12:32.54 ID:RSu3l9Ti
>>737
最後の段落について。

・cygwin版のMinGW ---> ファイル名はUnixライクな /cygdrive/c/xxx/yyy/zzz 形式だが、
             出来た実行ファイルはcygwinが無くても動作する。
             ユーザー・プログラムからは主にWin32 APIを使う。

・cmd.exe版のMinGW ---> 何もかも Windows 用。ファイル名もDOS式、
             出来た実行ファイルは Windows のみで動作。
             ユーザー・プログラムからは Win32 API を使う。

・cygwinのgcc    ---> cygwin環境で動く実行ファイルを作成する。
             ユーザー・プログラムからはUnix系関数を使う。
739デフォルトの名無しさん:2014/09/03(水) 00:20:01.40 ID:qMd+w6/O
>>738
スレ違いだ、こっちでやれ
Cygwin + MinGW + GCC 相談室 Part 7
http://peace.2ch.net/test/read.cgi/tech/1357019230/

あとMinGWはcmd.exeではなくminttyから使うべきだ
さっさとネットで資料を探す作業に戻るんだな
740デフォルトの名無しさん:2014/09/03(水) 00:37:00.57 ID:kYvXCnau
ちなみに c:\cygwin\bin と c:\cygwin\usr\local\bin にパスを通せば、
cmd.exe からでも cygwin のコマンドが実行できるようになる。
gccもlsもmakeも。ここでbashを起動すればcygwin環境になる。
741デフォルトの名無しさん:2014/09/03(水) 08:47:34.91 ID:VnTCGwbS
久しぶりに2ちゃん観に来たら
wxのスレめっちゃ野比てて嬉しい
742デフォルトの名無しさん:2014/09/03(水) 14:50:56.74 ID:kYvXCnau
wx のソースを修正したら、wxString() を使った最小サンプルが、
静的リンクしても 70KB で済むようになった。

PATHには、MInGW/bin しか設定せずにテストしているので、wx の DLL
がリンクされている可能性は無く、間違いなくスタンド・アローンの
プログラム。

ちなみに、wx のソースを修正しなければ、451,584 バイトになってしまう。
>>729 に書いたものとほぼ同じプログラムだから。
743デフォルトの名無しさん:2014/09/03(水) 15:05:09.35 ID:SXoWEkGr
wxというよりgccとライブラリのお話で伸びている
744デフォルトの名無しさん:2014/09/03(水) 16:58:33.04 ID:3zk9T5qQ
>>742
dllの依存関係すらまともに調べられないのか
dependency walkerとかobjdumpとか使え
745デフォルトの名無しさん:2014/09/03(水) 17:02:39.87 ID:SXoWEkGr
mingw入ってるならlddコマンドでもいける>依存動的ライブラリ
746デフォルトの名無しさん:2014/09/03(水) 18:30:34.52 ID:kYvXCnau
ただ、パス設定を空にして起動できるかどうか見るのも1つの確実な方法。
747デフォルトの名無しさん:2014/09/04(木) 03:37:02.91 ID:FQO1vG1R
性格悪いな。
コンピュータ・ソフト関連の人って。
748デフォルトの名無しさん:2014/09/04(木) 17:23:39.03 ID:FQO1vG1R
GUIアプリのサイズ縮小を試みていたが、断念するかも知れない。
749デフォルトの名無しさん:2014/09/04(木) 18:46:24.22 ID:Sd68Xi30
△性格が悪い
○無駄が嫌い
◎無駄な事をしてる奴が嫌い
750デフォルトの名無しさん:2014/09/05(金) 15:14:57.29 ID:PbioWCRT
>>749
何も悪いことをせず、自分にも害を与えない人を嫌うのが性格が悪いんだよ。
751デフォルトの名無しさん:2014/09/05(金) 15:46:20.79 ID:JjYqHkIR
公園の蚊を駆除するのに外側からじゃなくて内側から始めるとかが無駄
自分にも危害が及ぶので嫌
752デフォルトの名無しさん:2014/09/05(金) 17:37:07.79 ID:MynIP2yf
>>749>>750
言われた側が一方的に立場が悪くなるという効能は興味深いと思う
言ったもん勝ちという現象は絶対にあるのだ
>>751
生死にかかわる難しい判断を
「無駄なこと」に無理やりおしこめた詭弁
物事を矮小化させる効果もある
753デフォルトの名無しさん:2014/09/05(金) 18:18:43.88 ID:NH0YjWIH
>>751
正直言って、今回のこととの関連も分からない。
それ以前に外側から、内側から、ということの意味が全く分からない。
まるで会話ロボットが生成した文書のようだ。

>>752
この文書も意味不明。人間が書いたとは思えない全く理解できない文書だ。
754デフォルトの名無しさん:2014/09/05(金) 22:33:12.96 ID:Mt1E1+r6
俺の大好きなwxWidgetsスレがめちゃんこ糞スレになって泣きそう
755デフォルトの名無しさん:2014/09/05(金) 22:52:37.72 ID:rFI2iHSs
案の定あらし化したか
これ以上触れないで放っとくの推奨
756デフォルトの名無しさん:2014/09/10(水) 10:22:55.86 ID:8Y3LAJyJ
wxWidgets って、GTK をバックエンド(port to)に使うことも出来るらしい
ね(wxGTK)。

上位のツールキットが、下位のツールキットに被さっているってことか。

X11 を直接バックエンドに使うのともまた違うのかな?
757デフォルトの名無しさん:2014/09/10(水) 18:37:52.75 ID:/KH51cxp
      \       ヽ           |        /        /
          \      ヽ               /      /
‐、、         殺 伐 と し た ス レ に 鳥 取 県 が ! !      _,,−''
  `−、、                  __/\            _,,−''
      `−、、              _|    `〜┐         _,,−''
                      _ノ       ∫
                  _,.〜’        /
───────‐     ,「~             ノ    ───────‐
               ,/              ` ̄7
                |     島 根 県     /
           _,,−'   ~`⌒^7            /    `−、、
        _,,−''            丿            \,      `−、、
 ,'´\           /  _7       /`⌒ーへ_,._⊃         /`i
 !   \       _,,-┐    \    _,.,ノ          r‐-、、      /   !
 ゙、   `ー--<´   /      L. ,〜’             ゙、  >−一'′   ,'
  y'  U      `ヽ/     /            ヽ      ヽ '´     U   イ
                                ____
         /      __        |       \____\
    ___/__ / ̄    ____|____ \ \____\
       //ヽ   /___         /|\       \ \____\
     / / ヽ  / /__     /  |  \       \_______
   /  /   / /   /     /    |    \          |    \
  /   /  / /  _/   __/      |      \__      |     \  ̄―_
758デフォルトの名無しさん:2014/09/11(木) 00:33:29.51 ID:na3nzgh2
>>756
X11は組み込み向けのportなので一般的には使われないよ(メンテされてるかもよくわからん)
Linuxでの使用の際はGTKベースと思っていた方がいい
つまりwxWidgetsのクラスやメソッドでコードを書いてLinux上でビルドするとGTKアプリができる

最近はwxQtというwxWidgetsからQtをバンドルするイカれたプロジェクトが本流にマージされたようだが…
759デフォルトの名無しさん:2014/09/11(木) 07:34:16.28 ID:BpRRpzGv
wxQtってなんかメリットあるの?
760デフォルトの名無しさん:2014/09/11(木) 20:49:49.06 ID:na3nzgh2
>>759
目的は、Qtベースのデスクトップ(KDE)でもwxWidgetsアプリを使うためとか
(→まあKDE上でGNOMEアプリを使うツールもあった気がするのだが…)
あとQtをバンドルすることでAndroid対応も果たしていた(実用性は不明)
761デフォルトの名無しさん:2014/09/12(金) 10:47:54.87 ID:w24nfmYL
wxWidgetsで、POPUP Menu (Windows では、Context Menu が正式名称かも)を作る場合、
どうしてますか?

特に、CodeBlocksなどのIDEで行う場合の最良の作法が知りたいです。
自分は、基本的な wxSmith の使い方が分かったところです。
762デフォルトの名無しさん:2014/09/12(金) 11:29:17.36 ID:vSDiSYyP
MenuItem作って
SubMenu作って
AddItem
763デフォルトの名無しさん:2014/09/12(金) 11:47:23.49 ID:S8WOzChk
>>762
それは手作業の場合ですよね。
そこの部分は対した手間ではないですが、
イベント・ハンドラを*.cpp, *.h, EVENT_TABLEの全てに書くのが面倒で。
764デフォルトの名無しさん:2014/09/12(金) 11:47:52.57 ID:vSDiSYyP
765デフォルトの名無しさん:2014/09/12(金) 12:20:43.41 ID:k4huCAJU
>>764
これ、今ちょうど数秒前に見終わったところだった。

これ見てると、

1. wxSmithでwxFormをエディット中に、「MenuBar」ではなく「Menu」ボタンを押して
 「要素」を追加する。
  そうするとwxSmithの上辺に要素のアイコンが並んでいる末尾に新しいアイコンが追加される。
2. 追加したMenu要素に名前を付ける。
3. wxFormの中に既に配置してあったwxPanelに対して、マウス右UPイベントに対応するハンドラを追加する。
4. そのハンドラの中に、手作業で PopupMenu()関数の関数呼び出しを書き、
  その引数に2.でMenuに付けおいた名前を書く。

こここまでは大した手間じゃない。

その後が問題で、EVENT_TABLE の「自動的にwxSmith が作成する範囲」の外側(直後)に、
POPUP MENUのMENU項目数分だけ、手作業で Connect() 関数を書いている。メニュー項目が7個だと、
Connect()関数も7個書く。それぞれ、MENU項目に付けた ID_xxxx の値と、対応する自前の
イベント・ハンドラの関数名を引数に指定して。


最後の部分が知りたかった事で、POPUP MENUの作り方としてはかなり面倒な方法に属する。
766デフォルトの名無しさん:2014/09/12(金) 12:28:57.27 ID:ylwL1QX/
馬鹿には無理
767デフォルトの名無しさん:2014/09/12(金) 14:27:34.99 ID:8yVPY0Zt
7個のメニュー項目にイベント結びつけるのに7行コード書くのって、そんな突出して面倒か?
768デフォルトの名無しさん:2014/09/12(金) 15:27:57.79 ID:mqgnzDe4
>>767
それは、「EVENT_TABLE」の箇所だけの話で、実際は、*.h に
メンバ関数宣言を7つ書き、*.cpp に
Zzzz Ccccc::OnXxxxx( Yyyy *pYyyy )
{
return Qqqqq;
}
みたいなの(4行)を 7 つ書く必要がある。

少なくとも (1+1+4)*7 = 42 行だ。
769デフォルトの名無しさん:2014/09/12(金) 16:36:39.60 ID:ylwL1QX/
IBみたいなのを期待したら駄目
770デフォルトの名無しさん:2014/09/12(金) 19:11:10.85 ID:cDGrnlyB
なんで今更wxSmithなんだよ古臭いな
なんでイベントテーブル使ってんだよ古臭いな
黙ってwxFormBuilder使ってみろよメッチャ簡単で笑えるぞ
771デフォルトの名無しさん:2014/09/12(金) 19:15:42.12 ID:nAjxttHn
>>770
IDEとの組み合わせは?

IDEがサポートしていなくてもいけるんだろうか?
772デフォルトの名無しさん:2014/09/12(金) 19:26:00.24 ID:cDGrnlyB
>>771
ちんまい個人用ツールしか作った事が無いから大規模プログラムでどうなるかは分からんが、
俺はwxFormBuilderでGUIデザインし、VisualStudioでコード書いてる。
GUI部品を追加したくなったら、いつでも追加編集できる。
もちろんイベント追加も問題ない。
VSでコード書きつつGUIエディットしても、VSにフォーカスを移したら勝手に読み込み直してくれる。

今まで書いたコードがGUI生成時に消去される事も無い。
これにはちょっと条件があるけどな。
773デフォルトの名無しさん:2014/09/12(金) 19:30:56.63 ID:nAjxttHn
>>772
POPUP MENU を作る時、EVENT_TABLE を使わずに何か良い方法で
やってくれるのかな?
774デフォルトの名無しさん:2014/09/12(金) 19:38:30.73 ID:RfUl3Wi+
wxFormBuilderかあ
もはやクロスプラットフォームでGUIがGUIでデザインできるのか(しかもフリーソフトウェア)
775デフォルトの名無しさん:2014/09/12(金) 19:39:02.29 ID:nAjxttHn
VSは、外部エディタでソースを編集した場合、VSに戻ると自動的に再ロード
してくれる機能がある事は知ってる。これは昔からある機能。
776デフォルトの名無しさん:2014/09/12(金) 20:52:41.52 ID:cDGrnlyB
>>773
凝りに凝ったメニューは知らんが、ポップアップメニューの作成および
メニュークリック時のイベント生成なんかは全部wxFormBuilder上で出来る。
従来のイベントテーブルでも生成してくれるし、Connect関数を使ったイベント生成も出来る。
今はConnectも古くてBindがトレンドらしいが、詳しくは知らない。

http://www.dotup.org/uploda/www.dotup.org5309542.zip.html
参考までに、wxFormBuilderのみで作ったサンプルコードを添付する。
自分で書いたのはmain.cppとthis->Close();だけ。
VS2013 + wxWidget3.0.1でビルド確認済。
777デフォルトの名無しさん:2014/09/13(土) 07:40:07.50 ID:CAfEAxmE
>>776
これは、どうやって作ったの?
生成されたコードも参考にはなるけど、wxFormBuilder上での操作方法が
知りたい。
778デフォルトの名無しさん:2014/09/13(土) 16:39:39.92 ID:JrIr4YUs
>>777
説明がめんどくさいから、wxFormBuilderでこの「wxMenuTest.fbp.」を開いて確認してくれ。
あとは適当に触ってれば理解できるだろ。
http://www.dotup.org/uploda/www.dotup.org5310926.zip.html

適当にGUIを作ったらF8キーでメインクラスを生成して、
その後F6キーでサブクラスを生成すればいい。

あとは添付した「main.cpp」みたいなコードを書いてビルドすれば目出度くGUIプログラムの完成だ。
779デフォルトの名無しさん:2014/09/13(土) 17:37:50.07 ID:dXOJBgge
レイアウトやイベントの仕様が
前もって分かって一発で決まるようなものならいいけど
そうでない場合は細かいテクが必要になるんだよなぁ
VB,delphi,VisualStudio他のポトペタとは違って
基本クラスや継承クラスの生成コードは
上書きしちゃってよしなにしてくれないから目視マージが必要になる
で、それならxrcでいっかなとなったりとね
あとは最近のバージョンでは修正されてるかも知らないけど
splitter > panel > sizer > xxx
の深いネストが嫌いだったな
バグだよね
780デフォルトの名無しさん:2014/09/13(土) 18:03:46.11 ID:iQniTJEB
>>778
出来れば言葉で説明していただけるととても有難いんだけれども。
781デフォルトの名無しさん:2014/09/13(土) 18:20:32.24 ID:iQniTJEB
>>776
MyProject1MyFrame1.cpp に、

void MyProject1MyFrame1::m_button1OnButtonClick( wxCommandEvent& event )
{
  // TODO: Implement m_button1OnButtonClick
  this->Close();
}

と類似の行が沢山あるけど、this->Close() 以外は、wxFormBuilder が自動生成したとのことで Ok ?

>>779
>基本クラスや継承クラスの生成コードは
>上書きしちゃってよしなにしてくれないから目視マージが必要になる
>で、それならxrcでいっかなとなったりとね

この辺りとの関連が知りたい。自分で書いたコードが勝手に上書きされて消されてしまうということ?
782デフォルトの名無しさん:2014/09/13(土) 18:22:33.01 ID:iQniTJEB
そもそも wxFormBuilder って、人間が書いたコードと「マージ」や「アペンド」する機能は全くなくて、
デザイナのテキスト領域に表示されるコードをコピペして使う程度の事しかできないのかな?
783デフォルトの名無しさん:2014/09/13(土) 18:27:14.64 ID:lhtCGruO
xrcはwxFormBuilderだとwxRibbonとかで生成に抜けがあるよね
これ自体はそのうちなおるだろうけど、案外使われてないのかなxrc
784デフォルトの名無しさん:2014/09/13(土) 18:54:43.70 ID:iQniTJEB
class MyFrame1 : public wxFrame {・・・};
class MyProject1MyFrame1 : public MyFrame1 {・・・};

となっていて、

http://stackoverflow.com/questions/8255753/how-to-add-personal-code-into-wxformbuilder-generated-class



・build your frame/panel in formbuilder
・generate inherited class
・implement your handling code in inherited class
・make changes to form/panel in wxFormbuilder ->
 will only affect generated class, not inherited class

の最後の行と矛盾するね。

wxFormBuilder は、MyFrame1 は書き換えるが、それを継承した所の MyProject1MyFrame1 は、最初の
一回しか書き換えない(というよりユーザーが指示しないと生成しない)、ということらしいから。
785デフォルトの名無しさん:2014/09/13(土) 18:57:59.23 ID:iQniTJEB
つまり、>>781 のイベント・ハンドラにおいて、this->Close(); の外側の部分も手作業で
書くしかないのではなかろうか?

そして、対応する *.h ファイルの中に、同じ関数のメンバ関数宣言も手作業で追加するしかないのでは?
786デフォルトの名無しさん:2014/09/13(土) 19:05:46.06 ID:lhtCGruO
実装の中身以外は何一つ手では書かないっていうなら、wxWidgetsは投げ捨てて
QtCreator有するQtか、C++ Builderあたりを使うしかないよ。
wxFormBuilderはIDEじゃないし。
787デフォルトの名無しさん:2014/09/13(土) 19:07:33.52 ID:iQniTJEB
>>786
QtCreator では、それが出来るのかな?
788デフォルトの名無しさん:2014/09/13(土) 19:09:46.08 ID:o7tow4WW
XRC最強なんですけど
789デフォルトの名無しさん:2014/09/13(土) 19:18:48.99 ID:JrIr4YUs
>>785
言葉通りに受け取ってくれればいい。
本当に「this->Close();以外書いてない」んだ。
つまり関数実装部は全て自動生成される。

つーか試してくれよ。
これだけ御膳立てしたんだからさ。
790デフォルトの名無しさん:2014/09/13(土) 19:23:58.85 ID:iQniTJEB
>>789

大体、答えが分かった。

つまりあなたは、wxFormBuilder に MyProject1MyFrame1 を生成させて、
this->Close();
を追加したんだ。


そいういうやり方だと、ボタンやメニュー項目を一つ増やす度に、手作業で、また、
this->Close();
を自分で書かなきゃならない。

それが、>>779 の意味だね?

だとすれば、this->Close(); の部分は、実践的には、もっと長くなるのだから、
物凄く面倒で、なおかつ危険が伴う作業になるね。
791デフォルトの名無しさん:2014/09/13(土) 19:27:26.32 ID:iQniTJEB
>>790

>そいういうやり方だと、ボタンやメニュー項目を一つ増やす度に、手作業で、また、
>this->Close();
>を自分で書かなきゃならない。

ここの部分を補足すると、その時に追加したボタンやメニュー項目に対するハンドラだけ
でなく、既に存在していたボタンやメニュー項目に対する全てのハンドラの中身を手作業で
コピーする必要があるということになる。

ボタンやメニュー項目の個数をN とすると、O(N^2) の作業時間が必要になるね。
792デフォルトの名無しさん:2014/09/13(土) 19:44:06.05 ID:JrIr4YUs
>>790
> そいういうやり方だと、ボタンやメニュー項目を一つ増やす度に、手作業で、また、
> this->Close();
> を自分で書かなきゃならない。

そこらへんに少しコツがあってな。
自動生成された部分を一切変更しない限りにおいて、
後から機能追加して再度サブクラスを生成した時、以前書いた部分は削除されない。
つまり今回の例では「this->Close();」は消えずに残る。
逆に言えば「// TODO〜」コメントの削除や編集すら許されないという事なんだけどな。

これが守られなかった場合、同名の(空の)関数が別に生成される。
この場合は旧関数から新関数へのコピペおよび旧関数の削除の手間が生じるが、
いずれにせよ一度書いたものが消える事は無い。

ヘッダファイルにおいても同様であり、
//// end generated include と
/** Implementing MyFrame1 */ の間、それと
//// end generated class members 以降の行に書いた内容は削除されない。
安心して機能追加できる。
不安だったら再生成する前にバックアップ取っておけばいい。

問題があるとすれば、コードのインデントが全て消える事。
Eclipse等開発環境のコードフォーマッタで解決するが、3.4.0beta時点では
インデント維持されてた筈なんだ。なんで維持されなくなったんだ?
俺の見落しか仕様かバグか。
793デフォルトの名無しさん:2014/09/14(日) 06:35:44.14 ID:wTwol/0w
なるほど、wxFormBuilderも新規出力(全書き換え)しかできないわけではないという
ことなの?

どうやるのかな?
794デフォルトの名無しさん:2014/09/14(日) 06:44:15.89 ID:wTwol/0w
あと、EVENT TABLEが古いと言ってる人がいたけど、Connect()がそれに置き換わっただけ
だからね。使う側から目線では(抽象的な意味では)変わってない。配列で静的に持っているか、
関数で登録するかの違いに過ぎないから。
795デフォルトの名無しさん:2014/09/14(日) 07:18:40.80 ID:wTwol/0w
以下によると、wxSmith には、TOP LEVEL RESOURCE を2つ以上作成する方法が見つからないらしい。
いったん、1つのTOP LEVEL WINDOW を作ると、全てがそのウィンドウの子供になってしまう。
POPUP MENU や、メインウィンドウに付随する1群のダイアログは、作るのが難しいらしい。
それに対して、wxFormBuilderは、2つ以上の TOP LEVEL RESOURCE を作ることが出来る、
と主張している。


http://forums.codeblocks.org/index.php?topic=15742.0

It's one of reasons why I have switched from wxSmith to wxFormBuilder.
I haven't found how can I create more than one "top level" resource in my XRC file using wxSmith.
Once I created a top level window, everything needed to be a child of this window.
Create a set of popup menus? Forget it. Create a set of dialogs along with your main window? Forget it.
wxFormBuilder allows more than one top level resource.
Moreover, wxFormBuilder can create only a XRC file - well, it creates a code, too,
and you can paste parts of the code in your own code.

I am curious what I have missed. I am a "XRC user", too.
796デフォルトの名無しさん:2014/09/14(日) 10:11:50.71 ID:pzVlR1Le
お前が返信に時間かかってるのは煽るための文言を探してくるためか?
これだけ御膳立てしてやっても自分では一切手を動かす気は無いんだから、
呆れを通り越して笑いすら出てくるわ。俺はお前の保護者じゃねえよ。
英文は読めるみたいだからソフトの使い方が分からない筈があるまいに。

>>793
こんな問いに答える気はもう無い。理由は上記の通りだ。
今まで以上に噛み砕いた説明は俺には出来ないし、
そもそも手を動かしていれば既に理解している筈の内容ばかりだからな。
F8とF6からクラス選んで名前付けてコード生成すら出来ん奴が本当にプログラム書けるのか?
無理しないでVSやMonoでC#あたり使ってればいいんじゃないか?
そっちの方がずっと楽だぞ。

>>794
それ書いたのは俺だが、利用上はそれだけの違いでは済まないという事も
英文読んだなら理解できてるはずだろ。煽るためのネタにはならんぞ。
柔軟性は高いに越した事はなかろうよ。
もちろんその機能が自分にとって役立つかどうかは別問題だ。
797デフォルトの名無しさん:2014/09/14(日) 12:57:54.21 ID:wTwol/0w
>>796
誰も悪気がやってやってるわけじゃない。
あなたが勝手にそう取ってるだけだよ。
798デフォルトの名無しさん:2014/09/14(日) 19:26:47.68 ID:P8BkuFbg
>>791
それは難癖だよ
継承側で動的バインドという
他と同じ手法を取ればいいだけの話だから
手間はおんなじだよ

>>792
その癖やコツをつかむのに
試行錯誤したりソースを読み解く必要性があるのが辛いんだよね
正味な話不安で信用ならない
手動目視でDiffるか
PEGでも使って自前で書いたほうが楽
799デフォルトの名無しさん:2014/09/14(日) 19:52:29.25 ID:wTwol/0w
>>798
前半意味不明です。
800デフォルトの名無しさん:2014/09/14(日) 20:11:08.81 ID:P8BkuFbg
>>799
> ここの部分を補足すると、その時に追加したボタンやメニュー項目に対するハンドラだけ
> でなく、既に存在していたボタンやメニュー項目に対する全てのハンドラの中身を手作業で
> コピーする必要があるということになる。

電卓とか参考になると思うよ
801デフォルトの名無しさん:2014/09/15(月) 08:45:18.98 ID:7daUusVM
>>800
ならないと思う。
全てのボタンを一気に wxFromBuilder で作ってからイベントハンドラの
コードを手作業で書けば問題は表面化しないから。

そうでなくて、実際のプログラミングでは、機能追加のたびにボタンを追加して行く
ような作業が必要となる。

その時に上書きされてしまうかどうかがポイント。
802デフォルトの名無しさん:2014/09/15(月) 10:58:47.94 ID:WIy8nvhC
xrcでFA
803デフォルトの名無しさん:2014/09/15(月) 19:07:00.41 ID:LoW0dSpU
だから「ソフトの様式さえ守っていれば」書いたコードが消去されるような事は無いと何度言えば分かってくれるんだ。
試してないのが丸判りだ。ほんっっっっっっとに口ばっかりだなお前は。
これで悪気が無いというんだから最悪だ。本当に本当に最悪だ。

そもそもwxFormBuilderで生成したイベント部に何十行も書くのか?
保守性考えたら、C++だったら別にクラスや関数作って、そっちに処理ブン投げて終わりじゃないか?
804デフォルトの名無しさん:2014/09/16(火) 00:01:13.35 ID:5MCxTvVt
>>803
全部自分で試さなきゃならないなら、人に聞く権利がなくなるじゃん。
試すのが時間がかかりすぎるから、誰かが試した結果が文書化されるん
だから。
805デフォルトの名無しさん:2014/09/16(火) 02:40:02.42 ID:JmUjnEhI
これは一緒に仕事できないタイプですわ
806デフォルトの名無しさん:2014/09/16(火) 02:41:50.55 ID:JmUjnEhI
自分はネット上に調べ物を書くときは自分が試した範囲のことしか書かないよ
妄想の実行結果で文句言ったりしないし、困難があれば自分で突破する
807デフォルトの名無しさん:2014/09/16(火) 09:52:32.15 ID:5MCxTvVt
「共助」という概念を知らないの?
「自助」しかしてはならないなら、掲示板の意味がほとんど無くなる。
808デフォルトの名無しさん:2014/09/16(火) 15:26:46.89 ID:5MCxTvVt
>>803
>そもそもwxFormBuilderで生成したイベント部に何十行も書くのか?
>保守性考えたら、C++だったら別にクラスや関数作って、そっちに処理ブン投げて終わりじゃないか?

これは駄目。

なぜなら、また、*.cpp と *.h に決まりきったコードを書く必要が出てくる
から。イベントハンドラ 1 つずつにこれを書く作業が大きなロスを
生む。
809デフォルトの名無しさん:2014/09/16(火) 22:49:04.68 ID:rQo1SAiX
>>804
共助?お前だけは言っちゃいかん言葉だ。
1から100まで他人に聞いてばっかじゃんかお前。
お前がスレの閲覧者に対して何か有益な事一つでも書いたか?
ぜ〜〜〜〜〜んぶ愚痴もしくは煽りじゃんか。

全部自分で試さなきゃいけないとか言ってるがよ。
そもそもお前、俺の言った事何一つ聞く気が無いだろ?
徹頭徹尾お前はコードが消える前提でしか話してない。
信じてるなら未だにコードが消えるなんて言ったりする筈が無いからな。
書かれた事を信じず、そのくせ試す気も無い奴が共に助け合う?笑わせんな。

あと、決まりきったコードを書く必要が出てきてはダメな理由がまるで分からん。
そもそも一度書いたら終わりなのに、なんでロスなんだ?
具体例をサンプルコードで挙げてくれないか。
共助とか抜かしてるんだから勿論やってくれるよな?
810デフォルトの名無しさん:2014/09/16(火) 22:56:48.49 ID:l7dE9nrH
>>809
もうほっとけよ。相手するだけ無駄だ。
811デフォルトの名無しさん:2014/09/16(火) 23:45:52.12 ID:5MCxTvVt
>>809
あんたが作ってるプログラムとは規模が違うからだよ。
812デフォルトの名無しさん:2014/09/16(火) 23:46:54.65 ID:JmUjnEhI
てか決まりきったコードを減らすためのテンプレート?
そのためのメタプログラミングでしょ
813デフォルトの名無しさん:2014/09/17(水) 00:02:45.14 ID:i4FG8Gei
>>812
はあ?
814デフォルトの名無しさん:2014/09/17(水) 00:51:45.07 ID:i4FG8Gei
>>809
中段、あんたの言っていることはある程度は分かるんだよ。
でも、wxSmith の方が遥かにドキュメントが充実している上に、
CodeBlocks に統合されており、元々の設計からしてwxFormBuilderの
ような勝手な新規上書き仕様にはなってない。

wxSmithではマージやアペンドは当たり前なんだよ。その上で、
POPUP MENU だけは、作り方が分かたなかったから詳しい人に
聞いてみたかったんだ。質問する側が、答える側の言っていることを
全部試すなんて期待すべきじゃないぞ。
815デフォルトの名無しさん:2014/09/17(水) 00:56:23.54 ID:i4FG8Gei
なんちゅうか、wxSmithは古いと勝手に決め付けて、wxFormBuilder
の方がいいという主張なんだから、どう良いかはあんたが説明すべき
でこっちに試せと言うのはお門違いなんだよ。

そもそもドキュメントが少なすぎる。試すしかないないなんて、
原始人レベルじゃないか。仕様は紙に書くのが基本だが、wxSmithの
場合は動画も多いからまだいいんだよ。wxFormBuilderなんて駄目
なんじゃないのか。進めている海外サイトもあるが、開発者本人が
書いているだけかも知れんから、信用すべきじゃない。
816デフォルトの名無しさん:2014/09/17(水) 20:01:28.47 ID:OwhU3Vur
wxFormBuilderがどう良いかはもう書いた。お前が理解しようとしてないだけだ。
あとはお前が試すだけなんだが、自分が知らない新しい技術を試す気が無い
臆病者には永久に理解する事は無理。だからもう何もやらなくていい。お前を諭す事は諦めた。

まだ「勝手な新規上書き」とか言ってるしな。しないって何度言わせるんだか。
なんで理解しようとしないんだ。正規のドキュメントじゃないからか。
同じ事を書いてる奴が俺以外にいないからか。
それとも2chの落書きは信用ならんと?だったらなぜここで質問なんかしたんだ。
wxSmithだろうが何だろうが2chの書き込みって時点で信用度は同じだろう。

なんのかんのグダグダ言っても、結局wxSmithに関する事以外は試す気が一切無いという事も良くわかった。
もうお前が俺を論破して俺が尻尾巻いて退散したって事でいいや。相手するのがバカらしくなった。
所詮お前はマニュアルがブ厚いだけで満足する好奇心の無い老害だって事もわかったし。
ついでに口だけプログラマで、ちょっとしたサンプルコードも書けない無能だって事もね。

「馬鹿には無理」
いい台詞だわ。今頃になってつくづく思うよ。
817デフォルトの名無しさん:2014/09/18(木) 06:03:45.56 ID:xGrJvmYs
自己紹介乙
818デフォルトの名無しさん:2014/09/18(木) 12:03:25.71 ID:jy/8T9ef
>>816
質問者に対して試さないから無能だなんて、なんて性格悪いの。
819デフォルトの名無しさん:2014/09/18(木) 12:08:26.46 ID:exm91MOI
だよな。ゆとり世代がメインストリームのご時世に
再質問する前に手を動かすなんて面倒なことしてくれるなんてかんがえるほうが愚か
820デフォルトの名無しさん:2014/09/18(木) 12:22:18.94 ID:bb7rxdqO
感情や思考を産み出しているのはあなた自身
怒るか怒らないかを決めるのもあなた自身
821デフォルトの名無しさん:2014/12/19(金) 20:18:18.31 ID:TVDdwTgk
mingw32でwxWidgets作ったら、それを使って作ったプログラムがwinspool.dllがないって怒られるんだよね。
ググったらlibwinspool.aのwinspool.dllをwinspool.drvにバイナリエディタで書き換えたら桶みたいなのがあって試したら動きやがんのな。
まあ、自分のパス通している所にwinspool.drvをwinspool.dll名義で置く方が安全かもしれんが。
822デフォルトの名無しさん:2014/12/19(金) 20:32:35.26 ID:rnHGXeI5
プログラミング未経験者も大歓迎
823デフォルトの名無しさん:2014/12/20(土) 10:21:06.56 ID:NupXv0Mp
>>821
今ならmsys2のpacman使えばwxWidgetsのバイナリがすぐ手に入る
自前ビルドはライブラリのデバッグするのでもないかぎり不要やで
824デフォルトの名無しさん:2014/12/20(土) 12:24:25.48 ID:e+FqSQyU
JaneCloneのひとかな
825デフォルトの名無しさん:2014/12/20(土) 12:43:19.97 ID:NupXv0Mp
正体ばらすのやめろや
826デフォルトの名無しさん:2014/12/22(月) 04:48:02.90 ID:+z5apoGR
自分でコンフィグ(config.h)いじってライセンスに問題ありそうなregexや必要ないコンポーネント除去したり
必要なものだけ自分のプロジェクトに含めて一緒にコンパイルしたほうが小さくなるし最適化よく効いていいで
827デフォルトの名無しさん:2014/12/22(月) 05:05:52.44 ID:BayKO7Ke
thx!
828デフォルトの名無しさん:2015/02/21(土) 05:55:29.37 ID:QWPWn37f
trunkのgcc5をビルドした
"これまでのgccでビルドしたwxライブラリ"はgcc5じゃ使えなくなるっぽい
自前ビルドのwxライブラリが"再配置が必要"とか言われて使えなかった
gccを4.9.2に変えたらビルド出来た

fltkも同じで、gcc5でfltkのライブラリ作り直したらビルド出来た
が、gcc5でビルドしたライブラリをgcc4.9で使うとビルド出来ない
ひょっとするとgcc5になるとほとんどのc++ライブラリ(特にguiのヤツ)はビルドし直しになるかもしれん
ググったらABIの仕様が変わるって書いてあるけどそのせいかしら
829デフォルトの名無しさん:2015/02/21(土) 07:34:22.52 ID:naHue2Us
情報ありがとう
830デフォルトの名無しさん
メジャーバージョン上がっちゃうとAPIレベルで変わっちゃうからしゃーないね
たぶんlibcとかglibとかも同じじゃないかな