11/01/23 20:59:01 .net
>サムネイルを作成する間ウィンドウがブロックしないよう、サムネイルの作成は別スレッドで行っている。
>(ただし、サンプルということで、排他制御は一切やっていない)
>
>イベントループのあるメインスレッドからのスレッド切り替えが円滑に行われるよう、
>メインスレッドではタイマーを使って定期的に Thread.pass している。
>
> Wx::Timer.every(100) do
> Thread.pass
> end
>
>これが必要になる理由については次のエントリでやる予定。
謎のコード
147:141
11/01/23 21:11:49 .net
>>142
べつに謝らんでもええよ
漏れは困ってへんから
148:デフォルトの名無しさん
11/01/23 21:38:27 .net
>>146
URLリンク(d.hatena.ne.jp)
ここのコメ欄の方が怖いぞ。
149:デフォルトの名無しさん
11/01/24 05:23:51 .net
Ruby使ってないから気にしない
150:デフォルトの名無しさん
11/01/27 23:54:02 .net
wxWidgetsでアニメ(not 動画ファイル。MNG or 連番PNGを想定)を表示したいのですが
単に表示されている画像をインターバルで書き換えていく方法だとフリッカーが出てしまいます
再描画と画像の書き換えの同期が取れていないためだと思いますが同期させる方法が判りません
何か良い方法があったら教えてください。よろしくお願いします
151:デフォルトの名無しさん
11/01/28 01:18:19 .net
ソース貼れ
152:デフォルトの名無しさん
11/01/28 23:04:25 .net
>>150
wxBufferedPaintDC使え。
153:150
11/01/30 00:53:07 .net
レスthx
>>152
なるほどそう言うのがあるのか。試してみます
154:デフォルトの名無しさん
11/01/30 16:14:40 .net
2.9.1が出てから音沙汰無いな
155:150
11/01/31 00:06:45 .net
>>152
フリッカーを無くせました。ありがとうございました
156:デフォルトの名無しさん
11/02/05 22:36:59 .net
>>154
URLリンク(wx.ibaku.net)
連日どんどん更新されてるけど音沙汰ない?
157:デフォルトの名無しさん
11/02/11 06:24:01 .net
前スレがやっと埋まったぽい。埋めた人お疲れさま。
158:デフォルトの名無しさん
11/02/11 23:54:18 .net
つうか次スレ立てるの早過ぎだろ
159:デフォルトの名無しさん
11/02/13 21:55:32 .net
このライブラリタダ?
160:デフォルトの名無しさん
11/02/18 08:33:59 .net
EVT_LEFT_DCLICK で bind して処理しようとすると
EVT_LEFT_UP EVT_LEFT_DCLICK が同時に来るみたいなのですが
EVT_LEFT_DCLICK だけ受け取るにはどうすれば良いでしょうか?
161:デフォルトの名無しさん
11/02/18 20:45:41 .net
>>160
wxMouseEventのLeftDClickで判別すればいいんじゃないの?
162:デフォルトの名無しさん
11/02/18 21:35:20 .net
GoogleIME使ってるんだが、TextCtrlで未変換文字列とか変換候補とかが表示されないのは仕様か?
MSIMEならちゃんと表示された
163:デフォルトの名無しさん
11/02/18 22:05:32 .net
>>162
ありがとうございます
試してみましたが
結局 EVT_LEFT_DCLICK に bind された handler 内では LeftDClick なのですが
同時に EVT_LEFT_UP に bind された handler も呼ばれてしまっていて
そっちでは LeftDClick じゃないとみなされるので区別出来ないんです ><
164:デフォルトの名無しさん
11/02/27 19:42:45.69 .net
wxApp の OnInit で wxFrame *frame = new wxFrame(hogehoge);
としたとき wxFrame を delete しないようですが
勝手に GC してくれるんでしょうか?
SetTopWindow(frame);
を実行したときとしないときでは違いますか?
165:デフォルトの名無しさん
11/02/27 20:07:52.06 .net
メモリ以外の資源の解放をGC任せにする男の人って
166:デフォルトの名無しさん
11/02/28 14:53:53.44 .net
>>164
wxWidgetsでは自分で解放すると返って二重解放になる。
URLリンク(www.wxwidgets.org)
FAQに書いてあるから今後はよく読もうな。
167:デフォルトの名無しさん
11/03/04 16:28:05.88 .net
主にwindowsで使っていますがlinuxでも同じソースで動くようにしたいです
wxStringで与えられたあるパス名がフルパスか相対パスかをwxWidgetsのクラス
(例えばwxFileName等)を使って判断出来ますか?
168:デフォルトの名無しさん
11/03/04 20:23:10.51 .net
>>167
wxFileNameにIsAbsoluteというのがあるけども。
それすら調べられないようだとwxに限らずプログラミングは厳しいと思う。
169:デフォルトの名無しさん
11/03/04 20:25:20.16 .net
ポインタ置いときますね。皆さん先刻ご存知かもしれませんが。
wxWidgets(wxstd.moの日本語版, ja.po)をお使いの皆様へ
URLリンク(suzumizaki.blog6.fc2.com)
170:デフォルトの名無しさん
11/03/04 20:34:43.27 .net
>>164
こっちも読んでおくといいよ。
二重開放以外にもdeleteがまずい理由があるようだから。
URLリンク(docs.wxwidgets.org)
171:デフォルトの名無しさん
11/03/04 21:31:47.32 .net
>>168
出来ました!!
ありがとうございました!!!
172:デフォルトの名無しさん
11/03/07 03:32:17.98 .net
wxListCtrl の
SetItem - GetItemText とか
SetItemText - GetItem とか
なんか変な対応してるみたいなんですけど
こんなもんなんですか?
他にも IsIconized とか IsShown とか
ドキュメント通りじゃなくて
めちゃくちゃな感じがするんですが
設計者ってパラノイア?
173:デフォルトの名無しさん
11/03/07 04:30:33.22 .net
馬鹿には無理
つ URLリンク(wiki.wxwidgets.org)
Get the String Contents of a "cell" in a LC_REPORT wxListCtrl
174:デフォルトの名無しさん
11/03/07 07:16:25.58 .net
>>173
出来ました!!
ありがとうございました!!!
175:デフォルトの名無しさん
11/03/07 11:00:32.39 .net
質問です
wxWidgetsにはMD5やSHAを計算してくれる関数はありますか?
176:デフォルトの名無しさん
11/03/07 11:32:42.63 .net
つURLリンク(wxwidgets-hash-md5.fyxm.net)
177:デフォルトの名無しさん
11/03/07 22:35:46.50 .net
>>175
176じゃないけど、MD5単品ならこういうのとか。
URLリンク(www.koders.com)
178:デフォルトの名無しさん
11/03/08 09:26:30.33 .net
>>178
ありがとうございます
とりあえず別のMD5ライブラリが見つかったのでそちらで間に合わせたのですが
ライセンスの問題とか考えると教えて頂いたもので置き換えた方が良いかも知れません
余力があったら後でご報告します
179:デフォルトの名無しさん
11/03/09 04:31:11.46 .net
wxHTTP::GetResponse が 200 とか 403 とかじゃなくて 0 を返すんですけどバグですか?
180:デフォルトの名無しさん
11/03/09 04:46:40.12 .net
つ URLリンク(wiki.wxwidgets.org)
181:デフォルトの名無しさん
11/03/09 05:29:32.87 .net
>>180
出来ました!!
ありがとうございました!!!
182:デフォルトの名無しさん
11/03/09 17:04:06.53 .net
文字コードの変換というか
変換出来ない文字が含まれているかどうかのチェック方法について質問です。
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:デフォルトの名無しさん
11/03/09 17:16:21.87 .net
むしろUTF-8のまま扱うかUNICODEにしてしまった方が良いのでは?
184:デフォルトの名無しさん
11/03/09 20:02:39.82 .net
>>182
wxStringOperations::IsValidUtf8String
185:デフォルトの名無しさん
11/03/10 08:17:32.00 .net
>>184
ありがとうございます。
今レス見たばかりなのでまだ試していませんが、
URLリンク(docs.wxwidgets.org)
を見ても wxStringOperations は見当たらず
ネームスペースかとも思うのですが、
こういったものはどうやって見つければ良いものですか?
186:デフォルトの名無しさん
11/03/10 08:25:43.01 .net
>>182
wxString::FromUTF8Unchecked
187:デフォルトの名無しさん
11/03/10 08:27:16.48 .net
>>185
URLリンク(trac.wxwidgets.org)
188:デフォルトの名無しさん
11/03/10 08:34:44.59 .net
>>186
ありがとうございます。
しかしそれは Valid じゃない UTF8 データが渡されたときの
動作は undefined だと書かれていますね。
結局事前に調べないといけないことにかわりないようです。
>>187
ありがとうございます。
中身を読んでも良く判りませんでした。
どういう意味でしょうか?
189:デフォルトの名無しさん
11/03/10 08:38:29.58 .net
ん?
「~」301C(E3809C)
はValidじゃないのか?
190:デフォルトの名無しさん
11/03/10 09:19:31.75 .net
問題なのはUTF-8として正しいかどうかじゃなくて
cp932に変換出来るかどうかってことなんだよな
そうなるとスレ違いかもな
191:デフォルトの名無しさん
11/03/10 13:58:57.41 .net
wxWidgetsって、けっこうS-JISの処理が弱いので、そこの部分だけはネイティブの処理にしたほうがいいかも
俺もアプリ作った事あるけど、S-JISに変換する部分だけはWideCharToMultiByte関数を呼ぶようにしたよ
192:デフォルトの名無しさん
11/03/10 16:16:13.99 .net
>>184
残念ながら使えませんでした。
193:デフォルトの名無しさん
11/03/10 16:24:05.27 .net
>>192
wxUSE_UNICODE_UTF8 を定義してないと使えないよ
つ URLリンク(docs.wxwidgets.org)
194:デフォルトの名無しさん
11/03/10 22:06:44.16 .net
みなさん色々とありがとうございます。
wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
のところで例外出して死ぬパターンと sjis_data が空になるパターン
それからちゃんと成功するパターンとがありました。
結局アクセスしていたサイトに広告が入っていて、
時間帯によって内容が変わるようなのですが、
どうも本体は UTF8 なのに広告部分だけ SJIS とか、
お粗末なサイトだったのが混乱した原因の一つでした。
195:デフォルトの名無しさん
11/04/19 00:00:08.70 .net
3.0マダー(AA略)
196:デフォルトの名無しさん
11/05/25 00:30:08.01 .net
サイザーage
197:デフォルトの名無しさん
11/07/02 23:25:00.75 .net
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:デフォルトの名無しさん
11/07/16 23:02:41.64 .net
GUI の配置は XML で定義出来るのが一番良いなあ
199:デフォルトの名無しさん
11/07/17 01:18:11.68 .net
それ何てXUL
200:デフォルトの名無しさん
11/07/17 22:48:55.64 .net
wxだってXRCがあるじゃまいか。
201:デフォルトの名無しさん
11/07/17 23:28:11.01 .net
誰も無いとは言ってないぞ
202:デフォルトの名無しさん
11/07/17 23:40:23.13 .net
後出しww
203:デフォルトの名無しさん
11/07/17 23:43:54.73 .net
ネタにマジレスww
204:デフォルトの名無しさん
11/07/18 05:50:22.06 .net
なんのこっちゃ。
205:デフォルトの名無しさん
11/07/28 23:53:32.75 .net
リストボックスのアイテムとして
ボタンやテキストボックスを表示できる?
206:デフォルトの名無しさん
11/07/29 04:32:53.10 .net
>>205
wxListBoxそのままでは無理。
テキストボックスだけでいいならwxEditableListBox使った方が早い。
それ以外でちょっとだけコントロールを付け足したいだけなら、
wxListBox継承してるwxCheckListBoxのソースが参考になると思う。
画像管理ソフトみたいなサムネリストが欲しいならwxThumbnailCtrl
って非公式コントロールが楽(古いので2.9系では若干修正が必要)。
URLリンク(wxwidgets.blogspot.com)
で紹介されてるマークアップがwxListBoxにも適用されると見た目を
いじるだけならすごく楽になるんだろうけどねぇ。
207:デフォルトの名無しさん
11/07/29 07:16:29.38 .net
>>206
ありがと
208:デフォルトの名無しさん
11/08/11 06:56:31.32 .net
自作のTestApp(wxWidgets製)は起動時に渡されたパスを読み込んで処理を
するとして、既に起動しているTestAppがあれば、そのTestAppにパスを引き
渡して自分は死ぬ(多重起動しない)、という動作をしたいです。
Winの場合、EnumWindowsでトップレベルウィンドウでTestAppを探し、
WM_COPYDATAをSendMessageで投げMSWWindowProcで受ける、
という方法を採っていますが、この辺のニーズは常にあるだろうし、
もっと楽なやり方があるんじゃないかと思ってます。
こういう方法の方が楽、とかありましたら教えてください。
と
209:デフォルトの名無しさん
11/08/11 10:26:43.62 .net
Mutex
210:208
11/08/11 20:27:39.52 .net
>>209
コメントありがとう。
でもMutexだと多重起動のチェックには使えるけど、
「既に起動している別プロセスへ任意のデータを引き渡す」
って処理には使えなく無いですか?
211:デフォルトの名無しさん
11/08/12 00:44:19.62 .net
・メモリマップファイル
・共有メモリ
・TCP/IP
・DDE/OLE/ActiveX
・ウィンドウメッセージ
好きなの使えばいいよ。普通は都合のいい方法を使って自分で作る。
wxならメッセージが一番楽だろう。
212:デフォルトの名無しさん
11/08/12 01:46:19.30 .net
つうか、二重起動防止するAPIが普通にあるだろ。
213:デフォルトの名無しさん
11/08/12 12:39:56.45 .net
>>210
元のをポップアップさせてあとのを閉じれば渡す必要なくね?
214:デフォルトの名無しさん
11/08/12 12:42:49.43 .net
一番簡単なのが欲しいなら作業ファイルにデータ書き込め。
いっそ多重起動もdir lockでやっとけ。
215:デフォルトの名無しさん
11/08/12 17:59:34.09 .net
wxMutex
URLリンク(docs.wxwidgets.org)
216:デフォルトの名無しさん
11/08/12 18:09:42.10 .net
wxSingleInstanceChecker
URLリンク(docs.wxwidgets.org)
217:208
11/08/12 21:25:55.39 .net
なんかいっぱい回答もらえた。ありがとうございます。
誤解を生んで申し訳ないんだけど、多重起動の禁止だけじゃなくて、
データを引き渡すってところまでがやりたいことなんです。
>>211
・メモリマップファイル
・共有メモリ
公式ドキュメントだけ読んで無いと思っていたんですが、
改めて調べたら5年前にパッチとして提出されてました。
「理由は言わないけど却下」と問答無用でRejectされてましたが、
普通に使えました(なんで却下されたんだろう……)
・TCP/IP
ちょっと大掛かりですが、確かにこれだとwxWidgetsのクラスのみで
クロスプラットフォームにいけますね。
・DDE/OLE/ActiveX
MSが意図しているアプリ間通信にはこれを使うべきなんですかね。
クロスプラットフォームからはかけ離れますが。
218:208
11/08/12 22:02:35.23 .net
・ウィンドウメッセージ
はい。最初に書いたとおり、これは把握済です。
ただ、全トップレベルウィンドウを調べるwxWidgetsの関数って
無いですよね?(MS側のAPIはあるけど)
>>213
・起動済アプリを殺して自分が前面に出る
タスクバーに収納されていたり表に出ていたり、というアプリにしているので、
起動済のアプリのそれらの状態を把握するのにちょっと手間がかかりますね。
表示状態のコピーが不要なら確かに比較的手っ取り早いですが。
>>214
・作業ファイルにデータ書き込み&排他制御
大量のデータ通信をアプリ間でやるわけじゃないので、
手っ取り早く汎用性も高くwxWidgetsだけで完結しますね。
しかもクロスプラットフォームで安定している。なるほど。
皆さん色々な案の提示、どうもありがとうございました。
219:デフォルトの名無しさん
11/09/02 20:17:08.41 .net
今更なんですが、C++でGUIを考えた場合、wxWidgetsとQTが候補に挙がりましたが
両者の比較を書いているサイトや記事などありましたら教えてください。
220:デフォルトの名無しさん
11/09/02 20:28:54.93 .net
自分はQt側のことは知らないんだが、こんなサイトがある
wxWidgetsのススメ
URLリンク(up-cat.net)
221:デフォルトの名無しさん
11/09/02 23:04:35.91 .net
いまは VC2010Express でも wxWidgets 使えて便利だわ
222:デフォルトの名無しさん
11/09/02 23:29:46.37 .net
2.9.2落としてきてVC2008でビルドしてたけど、これgdgdすぎ
スタティックライブラリはできたけど、DLL版は全然ビルドできないわ、サンプルはデバッグ
ライブラリ用になってるからいちいち直さないといけない&直しても同じリソースがどうたら
でビルドできんし、Qtにいくわ
223:デフォルトの名無しさん
11/09/03 00:34:44.80 .net
おいらはMinGWでMakefile作りながらGUI作ってるよ~ (^q^)
224:デフォルトの名無しさん
11/09/03 01:05:50.35 .net
ああ、早とちりすまん
結局添付されていたVC2008用のプロジェクトファイルがうんこで、VC6用の奴を変換して
ビルドしたらうまくいきましたわ
サンプルも同じでVC6用の奴を変換してビルドすると正常にビルドできました
悪口いってすまん、けどビルドできないVC2008用プロジェクトファイルって罠じゃないのか
225:デフォルトの名無しさん
11/09/03 10:36:44.01 .net
普通makefileの方使わない?
226:デフォルトの名無しさん
11/09/03 11:45:57.63 .net
nmakeしたらいきなりエラーで止まったし、ぐぐるとnmakeよりもVC++上でコンパイルする記事が多かった
ので、そうしてました。
お騒がせして申し訳ないついでに実は開発版の2.9.2をビルドしようとしてたみたいで、俺死にたい...
というより氏ね>俺
227:デフォルトの名無しさん
11/09/03 12:10:03.39 .net
VC使わないといけない理由があるんなら仕方ないけど
gccの方がすんなり行くんじゃないかなぁ。
228:デフォルトの名無しさん
11/09/03 18:49:10.70 .net
WinでgccというとMinGだよね?
たまたまVC入ってたからVCでやってたけど、MinGの方が捗るの?
229:デフォルトの名無しさん
11/09/03 20:59:18.77 .net
wxWidgetsの開発はLinuxのgccで行われてるだろうからMinGW+gccだと環境づくりが楽かも?
VCのことは知らないけどMinGWだと普通に2.9.2コンパイルできたし
コーディングの効率を考えるとVCのオートコンプリート機能が使えたら楽かもしれんが、たぶん出来んだろうしな
230:デフォルトの名無しさん
11/09/03 21:56:21.73 .net
winでわざわざMinGなんて使う必要ないよ。
VCでいい。
231:デフォルトの名無しさん
11/09/04 17:11:05.31 .net
MinGWだとEXEサイズ小さくなるかなと試してみたが、makeしてもlibができないなぁと1時間も
悩んでた、.aで正しいのにwww
アホすぎる俺
しかしwxWidgetsいいね、コントロールは揃ってるし、ドッキングもできる、開発版にすればリボンもどきも
使えるし、wxFormBuilder使えばGUIで画面組み立てられるし、とりあえず満足できる環境だし
232:デフォルトの名無しさん
11/09/04 19:07:07.57 .net
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:デフォルトの名無しさん
11/09/04 19:22:45.46 .net
>>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:デフォルトの名無しさん
11/09/04 19:51:43.28 .net
ちなみにgccは-sオプションをつけると結構ファイルサイズは小さくなる
235:デフォルトの名無しさん
11/09/04 19:52:42.86 .net
あ、既出だった
236:デフォルトの名無しさん
11/09/04 21:11:45.91 .net
>>233-234
アホな俺にわざわざありがとう!
もう1回試してみます!
237:デフォルトの名無しさん
11/09/04 22:39:22.73 .net
>>230
なるほど人によるなあ。
俺なら「わざわざVC使わんでも、MinGでいい」って発想になるわ。
238:デフォルトの名無しさん
11/09/04 23:30:54.03 .net
>>233
ライブラリも作成し直し、サンプルもビルドし直しましたがサイズは6621KBでした
あとDLL依存はとれないのですね
239:デフォルトの名無しさん
11/09/05 00:04:36.25 .net
>>237
同意。
UNIX文化的には、gccが「標準」でVCは「非標準」って認識だからなぁ。
自分で何か書く時とか、「自分はgccしか使わないけど、Win使いのためにVCもサポートしてやるか」ってレベル。
240:デフォルトの名無しさん
11/09/05 00:32:26.75 .net
結局どっちの文化に属してるかによって
何がデフォで何がわざわざなのかが違うってことで。
で、wxそのものがUNIX文化なんだよな。
241:デフォルトの名無しさん
11/09/05 12:01:41.27 .net
>> 238
サンプルはそのままビルドするとDLL依存になるとおもう。
cd samples
make "LDFLAGS = -static"
こんな感じでいかかでしょ。
242:デフォルトの名無しさん
11/09/05 19:03:01.60 .net
>>241
いや、自分でmakeファイルに-static直書きしたけど駄目でした
まぁ、なんか勘違いしてるか頭がアホなんて理解できてないだけでしょう
とりあえずVCでも問題ないのでVCでやります、いろいろありがとうございました
243:デフォルトの名無しさん
11/09/05 19:16:34.99 .net
>>242
がんがれ。
ただ、オープンソース系のライブラリを今後使っていくんなら
いずれにしてもgcc系の流儀とかも覚えておいた方がいいと思うよ。
244:デフォルトの名無しさん
11/09/06 00:10:08.28 .net
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:デフォルトの名無しさん
11/09/10 20:25:18.76 .net
質問お願いします。
URLリンク(www.dotup.org)
こういうよくある(名前、種類、ディレクトリ、サイズ)みたいなのを
表示したいんですがヴィジェットは何を使ったらいいでしょうか?
できれば画像のように名前のところの矢印みたいなのを付けたいのと
項目の順番をD&Dで入れ替えたり表示、非表示をポップアップメニューで行いたいです。
項目にはDBのカラムを割り当てたいと思っています。
246:デフォルトの名無しさん
11/09/10 20:38:38.06 .net
すいません、listctrlで出来そうですね。
なんでいつも質問した後は簡単に見つかるんだろう…
247:デフォルトの名無しさん
11/09/10 23:30:44.52 .net
age
248:デフォルトの名無しさん
11/09/11 23:37:25.34 .net
sage
249:デフォルトの名無しさん
11/09/20 23:30:06.13 .net
wxWidgetsのライセンスって何なの(L-GPL)?
これ使って書いたプログラムってソースコード開示する必要あるの?
教えてエロい人!!
250:デフォルトの名無しさん
11/09/22 08:11:29.04 .net
ゴメン、答えられるけどエロくない。
251:デフォルトの名無しさん
11/09/22 12:00:14.06 .net
インポ乙
252:デフォルトの名無しさん
11/09/22 18:59:22.32 .net
まあその質問はググッたらでてきそうだしな…
ところで組み込み用のwxWidgetsとかないんだろうか。
253:デフォルトの名無しさん
11/09/23 14:09:14.39 .net
>>249
試しにググッたら意外と出てこなかったので教えてやるでおじゃる
URLリンク(web.archive.org)
URLリンク(ms2.seesaa.net)
254:デフォルトの名無しさん
11/09/23 20:06:16.47 .net
情報古過ぎないか
255:デフォルトの名無しさん
11/09/23 21:55:11.24 .net
世界線は変わらなかった
256:デフォルトの名無しさん
11/09/23 22:27:50.66 .net
つうか本家のホームページに書いてあるがな。
257:デフォルトの名無しさん
11/09/23 23:34:52.13 .net
これですね
URLリンク(www.wxwidgets.org)
"wxWindows Licence"で配布されていて、
ソースコード開示の必要はないというのが一応の答えかな
258:デフォルトの名無しさん
11/09/24 22:07:43.51 .net
需要があるかどうか不明ですが。
wxWidgetsマニュアルにある Syntax of the builtin regular expression library の邦訳です。
拙作ソフト説明書の一部になっていますが、この頁の訳文に関してはご利用自由です。ただし独自訳多数。
URLリンク(h12u.com)
259:デフォルトの名無しさん
11/09/24 22:23:14.63 .net
>>258
乙です
てかwxWidgetsにも正規表現ライブラリあったんだな
260:デフォルトの名無しさん
11/09/24 23:40:22.99 .net
>>258
正格表現って初めて見たが、正則表現ではなくて?
POSIXブラケットのうち、[. .] [= =] [:<:] [:>:]とかって他のライブラリじゃほとんど見ないな。
[[=A=]]ってAやÄなどにマッチするんだっけ?
261:デフォルトの名無しさん
11/09/25 20:52:38.34 .net
>>260
ご指摘Thx. 直しておきました。どこで間違ったんだろう。
> [[=A=]]ってAやÄなどにマッチするんだっけ?
建前としてはそうなるはずだけど誰も実装してないとか何とか。よく知らないですが。
調べてみたら [. .] と [= =] の訳文はかなりおかしい気がしてきた。
262:デフォルトの名無しさん
11/09/26 21:03:37.52 .net
実は訳間違ってました[[=A=]]
ってかくと顔文字っぽい。
263:デフォルトの名無しさん
11/09/27 09:53:24.70 .net
POSIXって良く聞くけどなんですか?
264:デフォルトの名無しさん
11/09/27 20:16:50.72 .net
258です。訳文とかちょっと修正しました。ページ内部のリンクも増やした。
>>263
実は私もよく知らない。
265:デフォルトの名無しさん
11/09/27 23:02:57.78 .net
雲丹の標準規格じゃないの?
266:デフォルトの名無しさん
11/09/27 23:05:37.07 .net
URLリンク(ja.wikipedia.org)
POSIX(ポジックス パーズィックス、Portable Operating System Interface)とは、
異なる実装のUNIX OSを始めとする各種OSに共通のAPIを定め、移植性の高い
アプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定した
アプリケーションインタフェイス規格である。
267:デフォルトの名無しさん
11/09/28 21:35:43.22 .net
motifもIEEEが規格決めてたから、こっち使いましょうよ
268:デフォルトの名無しさん
11/09/29 14:42:15.49 .net
>>263
ザックリとでよければ「UNIX互換」くらいに考えておけば良い。
269:デフォルトの名無しさん
11/11/08 17:30:42.91 .net
CodeBlocks10.05とwxWigets2.8を使用しています。
勉強中です。
URLリンク(wiki.codeblocks.org)の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:デフォルトの名無しさん
11/11/08 17:42:09.03 .net
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:デフォルトの名無しさん
11/11/08 18:28:13.72 .net
>>269
最後の行
OpenDialog->Destroy();}
中括弧が全角になってるなあ
てかこれ全コードじゃないよね
272:デフォルトの名無しさん
11/11/08 20:52:59.24 .net
サンプルにある"dialogs"が参考になるんじゃないかな、
"File operations->Open files"というのがある。
273:デフォルトの名無しさん
11/11/08 21:01:42.80 .net
>>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:デフォルトの名無しさん
11/11/08 21:03:08.95 .net
{
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:デフォルトの名無しさん
11/11/08 21:04:37.12 .net
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:デフォルトの名無しさん
11/11/08 21:05:18.62 .net
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:デフォルトの名無しさん
11/11/08 21:06:07.61 .net
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:デフォルトの名無しさん
11/11/08 21:58:12.30 .net
連続投稿規制 5回でなるんですねが・・・
こんな感じです。
配列・ポインタなど、マニュアルを目を通したのですが、完全に理解していません。
とりあえず色々さわりながら理解していこうかと考えています。
>>272
ありがとうです。
sampleフォルダの中のですね。
当初この中を探したのですが、wxSmithでのプロジェクトがなかったのであきらめていました。
dialogs.cppの790行目からそれらしい記載があったので参考にしてみます。
ありがとうでした。
279:デフォルトの名無しさん
11/11/08 22:45:02.83 .net
迷惑な香具師だな
280:デフォルトの名無しさん
11/11/09 07:33:07.56 .net
>>278
長いときはcodepadとかideone使おうぜ・・
281:デフォルトの名無しさん
11/11/09 08:19:10.74 .net
会社から帰ったら考えてみるわ>>278
282:デフォルトの名無しさん
11/11/09 14:01:41.90 .net
>>280
そのような場所があるとは知りませんでした。
次からそうします。
スレ汚しすみませんでした。
あと、/sample/dialogs/dialogs.cppの該当部分を、コピペしただけで複数ファイルの選択と、表示ができました。
意味を調べながら理解していきます。
ありがとうでした。
283:デフォルトの名無しさん
11/11/09 17:58:05.53 .net
中学生か
まあがんがれや
284:デフォルトの名無しさん
11/11/22 02:03:10.37 .net
ubuntuでwxWidgetsの勉強中なのですが、samplesフォルダ内のサンプルソース(c++)をいくつか実行してみようと思い、付属のmakefile.cpp及びmakefile.unxをmakeコマンドで実行しようとするとコンパイルに失敗します。
端末より
g++ -c foo.cpp `wx-config --cppflags`
という形でコンパイルしてみてもエラーが出ます。
コンパイルに失敗したサンプルソースはlistbox.cppとlisttest.cppです。
なにかコンパイル時に指定しなければいけないファイルなどがあるのでしょうか?
どなたか教えてください
285:デフォルトの名無しさん
11/11/22 07:25:11.04 .net
wxをビルドしてインストした?
286:デフォルトの名無しさん
11/11/22 12:20:24.62 .net
>>284
エラーメッセージ貼ってよね!
287:284
11/11/22 16:11:40.78 .net
>>285
早速の返信ありがとうございます。
僕が変な勘違いをしてない限りwxはインストール済みだと思います。
>>1のリンクにある
wxWindowsで始めるC++ GUIプログラミング
URLリンク(www.h3.dion.ne.jp)
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
URLリンク(0xcc.net)
に書かれている簡単なソースや、自分で作った幾つかのソースは動きますので。
>>286
返信ありがとうございます。
今すぐにエラーを貼るのは難しいので、数時間後にまた貼らせて頂きます。
288:284
11/11/22 21:45:18.75 .net
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:デフォルトの名無しさん
11/11/22 22:33:02.64 .net
サンプルはどこから持ってきたやつなの?
インストールしてるwxWidgetsとサンプルのバージョンは同じ?
そもそもインストールはどうやってしたの?
パッケージから入れたの? それともソースからビルドしたの?
とまあ、気になる点はいろいろですが、
とりあえずパッケージからwxWidgetsの開発環境をインストールして、
同じバージョンのサンプルをコンパイルするのは、
最初に書かれてる方法で普通にできます。
ソースからビルドすれば付属してるサンプルも一緒にコンパイルしてくれるはずです。
290:デフォルトの名無しさん
11/11/23 00:13:32.17 .net
>>288
そのエラーメッセージは最初の方は含まれてる?
wxのincludeが読み込めてないように思える。includeのエラーが最初にないかい?
291:デフォルトの名無しさん
11/11/23 03:07:47.66 .net
>>288
makefile.gccはMinGW用のMakefileじゃなかったっけ?
make -f <対象のMakefile> でだいたい行けるはず
292:デフォルトの名無しさん
11/11/23 03:19:45.38 .net
そもそもLinuxでwxWidgetsやろうと思ったら
①wxWidgetsのソースダウンロード
②./configure <- 自分が欲しいオプション ->
③make && make install
④samplesフォルダにあるソースコードを「make」コマンドでコンパイル
で終わるはずなんだがなあ
293:デフォルトの名無しさん
11/11/23 07:52:23.63 .net
MinGWでwxWidgetsやろうとしたら面倒すぎて死んだ
294:デフォルトの名無しさん
11/11/23 15:36:30.36 .net
>>293
大丈夫、慣れたらできる(マゾ)
295:デフォルトの名無しさん
11/11/23 15:48:53.79 .net
>>284
しかもよく見たらコマンド間違えてるな
× g++ -c foo.cpp `wx-config --cppflags`
○ g++ -c foo.cpp `wx-config --libs` `wx-config --cxxflags` -o foo
ライブラリにリンクしてないから実行ファイルができてない可能性が
296:デフォルトの名無しさん
11/11/23 21:59:05.34 .net
>>293
wxDev-C++
URLリンク(wxdsgn.sourceforge.net)
みたいなのもあるから暇なときに試してみたら?
VC++でやるよりは楽かも…、しれません。
297:デフォルトの名無しさん
11/11/24 00:18:52.26 .net
devC++は好きで昔から結構使ってるけど
やっぱvc版インストしてvcの統合環境でやったほうがデバッグは楽だよ
使うまではdevCのパッケ導入が楽かも知れんけどw
(最近はc#が色々楽すぎるんでwx自体全然使って無いけど・・・)
298:デフォルトの名無しさん
11/11/24 06:38:20.30 .net
VC++2008EnterpriseEditionでやったらめちゃくちゃ簡単だった
299:デフォルトの名無しさん
11/11/24 14:16:50.31 .net
hosyu
300:284
11/11/28 13:24:44.41 .net
レスの間が開いてすみません。みなさん色々とアドバイスありがとうございます。
>>289
よくわからないうちからいろいろなサイトをまわって色々試してたせいで若干記憶が曖昧で申し訳ないのですが、インストールは確かパッケージから入れたと思います。
サンプルのバージョンが2.9.2なのですが、コンパイルエラーを見る限り、2.8のライブラリを読んでいるみたいなので、安定版と最新版を両方入れてたみたいです。
改めて2.8.12を公式から落としてきて、そのサンプルでコンパイルしてみたらうまくいきましたので、ご指摘の通りサンプルとwxWidgetsのバージョンが違ったみたいです。ありがとうございました。
>>290
エラーメッセージは先頭の部分でした。ありがとうございました。
>>291
そうみたいですね。makefile.unxでうまくいきました。ありがとうございました。
>>295
今まで下記サイトを参考に
URLリンク(0xcc.net)
% g++ -c hello.cpp `wx-config --cppflags`
% g++ -o hello hello.o `wx-config --libs`
というようにコンパイルしてたんですけど良くなかったでしょうか。
301:デフォルトの名無しさん
11/11/28 19:19:16.59 .net
>>300
> 今まで下記サイトを参考に
> URLリンク(0xcc.net)
>
> % 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:デフォルトの名無しさん
11/12/05 19:16:58.26 .net
LinuxでパッケージからwxWidgetsを入れた場合、setup.hはどこにあるのでしょうか?
wxUSE_ACCESSIBILITYを有効にしようと思ってファイル検索したら大量にかかったので幾つか内容を変更してみても有効にならなかったので。
303:デフォルトの名無しさん
11/12/05 19:26:14.75 .net
パッケージはバイナリしか入ってない、つまりオプションを切り替えるのは不可能では?
ソースからビルドした方がいいと思われ
304:デフォルトの名無しさん
11/12/05 19:31:56.85 .net
>>303
ありがとう。ソースから入れなおしてみる。
305:デフォルトの名無しさん
11/12/05 19:45:40.51 .net
>>302
Linuxでは通常はソースのパッケージが別に用意されてるよ。
ディストリによるけど後ろに-develみたいなのがついたパッケージ
を入れるとソースが入る。
306:デフォルトの名無しさん
11/12/05 21:19:08.30 .net
>>305
そのレスを見る前に入れなおしてしまった…教えてもらったのに申し訳ないです。
オプションの切り替えは結局setup.hをいじれば良いのでしょうか?
307:デフォルトの名無しさん
11/12/05 21:34:18.68 .net
>>306
./configure -h で付けられるオプションが見れるからやってみ、その中にwxUSE_ACCESSIBILITYも入ってるだろう
308:デフォルトの名無しさん
11/12/05 21:38:07.80 .net
$ ./configure -h | grep accessibility
--enable-accessibility enable accessibility support
あったあった。何に使うのかわからんけどどうぞ。
309:デフォルトの名無しさん
11/12/06 11:00:02.97 .net
>>307,308
何から何まですみません。
310:255
11/12/06 11:57:28.16 .net
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:デフォルトの名無しさん
11/12/06 14:11:37.79 .net
>>310
下のサイト
URLリンク(www14.ocn.ne.jp)
を見て、サンプルのソース実行して勉強してたんですけど、accessっていうサンプルをコンパイルして実行をしようとすると、
"This sample has to be compiled with wxUSE_ACCESSIBILITY"
というメッセージが出たので、
Windowsのみ本体のwxUSE_ACCESSIBILITYを1にする、とは書いてあったんですが、動いてないということはLinuxでも必要なのかと勝手に思い込んでこちらで聞いてみたんですが、やっぱりLinuxでは意味が無いんでしょうか…
312:311
11/12/06 14:27:45.09 .net
度々すみません。
こちらでもマニュアルを確認したら、accessはWindowsのみと書いてありました。
今度からはマニュアルを良く読んで、わからなかったらこちらで聞きたいと思います。
自分自身でもあんまりにゆとりすぎて反省してます…。
みなさん大変ご手数をおかけしました。
313:デフォルトの名無しさん
11/12/07 15:35:36.35 .net
ほとんどのゆとりにくらべたらまだましなほうだわ
314:デフォルトの名無しさん
11/12/07 19:17:24.24 .net
ゆとりはHSPとかC#に行くだろうからこっちには来ないだろうな
あとC++のGUIライブラリで有名で日本語ドキュメントがあるのはQtとかgtkだろうからさらにやる人は減る
最後にwxWidgetsは英語の知識とC++のオブジェクト指向がわかってないとできないから挫折する人も多いだろう
とゆとりが言ってみる
315:デフォルトの名無しさん
11/12/07 20:24:22.32 .net
wxWidgets > Qt >>> こえられないかべ >>> GTK
316:デフォルトの名無しさん
11/12/11 22:40:24.44 .net
wxWidgets > Qt なの?
317:デフォルトの名無しさん
11/12/15 13:37:15.62 .net
いわゆるビジュアルプログラミング言語は
生産性を改善するという触れ込みでありながら、事実上普及していない
何でかは知らんけど、同じ大きさのモニタに表示できる情報量で
テキストに負けちゃうからっていう説を聞いたことがあるような
318:デフォルトの名無しさん
11/12/16 01:32:59.64 .net
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
319:デフォルトの名無しさん
11/12/16 06:38:53.32 .net
下記のページ
URLリンク(docs.wxwidgets.org)
で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:デフォルトの名無しさん
11/12/16 13:32:13.51 .net
ver 2.8.12
include/wx/event.h
538: int GetSelection() const { return m_commandInt; }
554: int GetInt() const { return m_commandInt; }
321:デフォルトの名無しさん
11/12/22 01:35:21.75 .net
リストボックスの中に、入れ子でリストボックスを作りたいと思いマニュアルを見て、wxListBoxのメンバ関数であるCreate関数を利用すれば2段階リストが構成できるということまではわかったのですが、Create関数の使い方がいまいちわかりません。
お手数ですが、どなたか使い方を教えていただきませんでしょうか。
322:デフォルトの名無しさん
11/12/22 06:52:48.65 .net
了解
323:デフォルトの名無しさん
11/12/22 18:41:37.88 .net
wxRegExを使うため、wxregexライブラリをビルドし、成功しました。
しかし、いざプログラムで「wxRegEx」クラスを使おうとすると、「error C2065: 'wxRegEx' : 定義されていない識別子です」というエラーが出て、全く使えません。
思いつく方が居たらお願いします。
OS: Windows 7
wxWidgets: 2.9.1
コンパイラ: Visual C++ 2010 Express
324:デフォルトの名無しさん
11/12/22 18:52:26.42 .net
>>323
すいません、プリコンパイル済みヘッダを再作成してみたらうまくいきました。
スレ汚しすいません……
325:デフォルトの名無しさん
11/12/22 19:21:01.94 .net
MinGW勢はいないのか
どいつもこいつもマイクロソフトの犬だな
326:デフォルトの名無しさん
11/12/23 01:55:47.35 .net
mingwの時点でOSはWindowsなのに
>どいつもこいつもマイクロソフトの犬だな
とか書くのかよw
327:デフォルトの名無しさん
11/12/23 02:50:47.72 .net
確かにそうだな、ちょっとWindows捨ててくる
328:デフォルトの名無しさん
11/12/23 16:08:42.36 .net
wxWidgetsはWindows以外はおまけだろ。
Win32のラッパーとしての価値しかないと思っている。
329:デフォルトの名無しさん
11/12/23 16:11:37.68 .net
>>326
ナイス
330:デフォルトの名無しさん
11/12/23 16:12:34.17 .net
>>328
元々 wxWindows だからなぁ
331:デフォルトの名無しさん
11/12/24 17:54:24.54 .net
migw もなぁ…64bit対応がなぁ…
wxruby とか使いたくても使えないよ
しかしひとはビルドしろという
なんどでもビルドしろという
びるどしろー
332:デフォルトの名無しさん
11/12/25 00:36:14.77 .net
rubyるど
333:デフォルトの名無しさん
11/12/25 08:31:41.01 .net
MSWでwxListCtrlを使ってみたらDESELECTEDイベントが通知されないバグがあったので
クリックやキボード操作が行われる度に選択状態を自分でチェックしてDESELECTEDイベントを送るようにしたら
アイテムが1個の時に何故かマウスイベントが消し去られるバグまで出てきて
もう八方塞がりです
なにこれ馬鹿
334:デフォルトの名無しさん
11/12/25 12:00:56.99 .net
wxLC_VIRTUALの呪い
335:デフォルトの名無しさん
11/12/25 13:04:57.85 .net
そういうのってバグ報告できないのかな?
336:デフォルトの名無しさん
11/12/25 21:34:01.11 .net
馬鹿が使うと馬鹿っぽく振舞います
337:デフォルトの名無しさん
11/12/27 11:01:32.77 .net
明らかに開発陣はWindowsでテストしてないな
昔よりバグが悪化してるwww
338:デフォルトの名無しさん
11/12/27 12:10:40.98 .net
最近wxTreeCtrl使ってるけどイベント通知できんわ
仕様がわかってないだけかも知れんが、バグだったら報告しなきゃだな
339:デフォルトの名無しさん
11/12/27 16:48:41.14 .net
できるよ
340:デフォルトの名無しさん
11/12/27 19:07:54.63 .net
最新バージョンってバグ多いの?
これから使うか悩んでるので教えてださい。
341:338
11/12/27 23:00:49.89 .net
今日ちょっとwxTreeCtrlの全イベント試してみたが、特に問題なかった。環境はMSW(MinGW)
>>340
英語が多くてドキュメントがAPIリファレンスしかないのがある意味バグw
この前wxXMLをHTMLに使ったら一気にバグってワロタ(当たり前だけど)
それさえ超えればいいものだと思います
342:デフォルトの名無しさん
11/12/27 23:36:17.73 .net
自分の無能を環境のせいにすんなやぼけ
343:デフォルトの名無しさん
11/12/28 08:03:39.44 .net
バグとか明らかに仕様とは違う動きをしたりすることは多々あるけど
もともとネイティブAPIをラップしただけだから誤魔化せるかもしれない
結局のところネイティブレベルの知識とwxWidgetsの中身まで調べないといけないので時間はかかる
それでもネイティブコンパイル出来ないC#も嫌だし、MFCよりは遥かにましだけどw
ネイティブレベルのことをしたくてGUIも楽に作りたいって要求に答えてくれるものがないもんな
344:デフォルトの名無しさん
11/12/28 15:34:13.86 .net
>>341
英語なのはキツイけどほかに良いライブラリも見当たらないし我慢するw
>>343
バグがあるってのはちょっと残念だなぁ
ネイティブレベルの知識もそんなに無いし不安だ・・・
けど、大きなバグじゃないのなら少し使ってみようと思います。
345:デフォルトの名無しさん
11/12/29 15:13:49.10 .net
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
URLリンク(codevs.jp)
現在予選開催中
応募締切 2012.1.6 12:00
おもしろいことやっているじゃん。誰か今から参加しろよ。
346:本田
11/12/31 22:24:08.47 .net
>>340
URLリンク(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:デフォルトの名無しさん
12/01/01 00:03:23.71 .net
2.8もバグ多い
348:デフォルトの名無しさん
12/01/01 11:14:18.13 .net
サイザーage
349: 【大吉】 【683円】
12/01/01 12:26:18.78 .net
今年のおみくじは大吉を良く目にする
350: 【大吉】
12/01/01 13:38:44.46 .net
今年はwx使うことあるかなー
351:デフォルトの名無しさん
12/01/04 16:51:15.64 .net
wxWebViewって縦書きに対応してる?
352:デフォルトの名無しさん
12/01/05 01:29:02.25 .net
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'|
URLリンク(docs.wxwidgets.org)
ここを見るとメンバー関数と書いているようなのですが、何か考え違いをしていると思うのですが・・
教えてください。
353:デフォルトの名無しさん
12/01/05 01:32:45.50 .net
>>352
wxTextCtrlではなくwxTextFileとあるけように思える。
IDE使ったほうがいいんじゃない?
354:デフォルトの名無しさん
12/01/05 02:10:29.44 .net
>>353
レスありがとうございます。
リンクを間違っていました。 以下を参考にしました。
URLリンク(wxwindowsjp.sourceforge.jp)
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:デフォルトの名無しさん
12/01/05 02:31:38.99 .net
>>354
全体のコード見てないからなんとも言えないが、TextCtrlはprivateとかで宣言しないと外から触れんぞ
例
Frame.h
private :
wxTextCtrl* m_text;
Frame.cpp
// メソッド内にテキストコントロール配置
m_text = new (.....);
m_text->Hogehoge();
356:デフォルトの名無しさん
12/01/05 12:59:53.67 .net
>>355
レスありがとう。
int abc = TextCtrl1 -> GetNumberOfLines();
と書けば、エラーなくコンパイルできました。
本当にありがとうでした。
357:デフォルトの名無しさん
12/01/05 17:12:08.35 .net
>>356
それじゃあコンパイルできても内部処理書く段階で死にそうなのでアドバイス
第十三回-03 ドット演算子とアロー演算子
URLリンク(brain.cc.kogakuin.ac.jp)
あとこことかも役に立つ
●C++編(言語解説) トップページ
URLリンク(www.geocities.jp)
358:デフォルトの名無しさん
12/01/05 21:49:09.86 .net
>>357
ありがとうございます。
ゆっくり読みます。
359:デフォルトの名無しさん
12/01/06 15:41:25.76 .net
テキストファイルを読み込む時に、utf-8のファイルの場合はreadして読み込むことができます。
テキストファイルがsjisの場合、次のようなエラーメッセージが表示されます。
[Faild to convert file "z:\test.txt" to unicode
URLリンク(docs.wxwidgets.org)
URLリンク(docs.wxwidgets.org)
上記を読むと、wxConvAuto機能を使用すると自動的にコンバートしてくれるように記載されているように見えます。
それで、openするときに、wxConvAuto()を付け加えてみたのですがエラーがでます。
wxConvAutoは付けても、付けなくても同じ現象です。
tfile.Open(file,wxConvAuto());
TextCtrl1->SetValue(str);
に、utf-8のファイルを読み込むと内容が反映されます。
sjisだとオープン時に(本当にオープンするときのエラーかどうかはわかりませんが・・・)上記エラーがでます。
またTextCtrl1にはテキストファイルの内容が反映されません。
どこが悪いか教えてください。
360:デフォルトの名無しさん
12/01/06 15:42:52.53 .net
すいません、ソースコードは短めなので、こちらに書きます。
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:デフォルトの名無しさん
12/01/06 16:25:17.96 .net
wxTextCtrlの中身を印刷したいのですが、どのようにすればいいのかいまいち分かりません。
どこかにwxTextCtrlのアドレスか何かを渡せばよいのでしょうか?教えてください
362:デフォルトの名無しさん
12/01/06 18:45:10.90 .net
>>360
過去スレにもSJIS読み込みについての事例が沢山あるが、wxWidgetsのライブラリによるSJIS→UTF-8の変換は全く期待できない
結論としては「UnicodeビルドしてUTF-8で読み込め」でFAだとおもう
おすすめはlibiconvでUTF-8に変換してからwxWidgets内に読み込む
iconvはwikipediaにもサンプルコードがあるから、使うのは難しくないはず URLリンク(ja.wikipedia.org)
>>361
wxWidgets2.9.3のクラスリファレンス見れ、いっぱい使えそうなのあるぞ
wxPrintData
wxPrintDialog
wxPrintDialogData
wxPrinter
wxPrinterDC
wxPrintout
wxPrintPreview
363:361
12/01/06 19:18:13.20 .net
印刷の件ですが、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:デフォルトの名無しさん
12/01/06 19:42:20.71 .net
さっき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:デフォルトの名無しさん
12/01/07 21:53:08.88 .net
>>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:デフォルトの名無しさん
12/01/07 22:42:42.75 .net
>>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:デフォルトの名無しさん
12/01/08 00:03:23.41 .net
>>366
わざわざ調べてくれてありがとうございます。
2.8にはない新機能だったんですね。
2.9.3にする励みになりました。
code::blocksで、コンパイル済みのものを入れるだけで1週間くらいかかった記憶があります。
コンパイルなど慣れないことをするので、今回も同じくらい時間かかるかもしれません。
でも2.9.3にする気にになりました。
ありがとうございました。
368:デフォルトの名無しさん
12/01/09 00:02:24.31 .net
Mingwをcドライブ直下にインストール
PATHに、C:\MinGW\bin;C:\MinGW\mingw32\binを追加
c:\wxWigets-2.9.3を解凍
下記を参考にしました。
URLリンク(wiki.codeblocks.org)
オプションは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:デフォルトの名無しさん
12/01/09 00:08:31.38 .net
>>366
wxTextFile gfile(wxT("c:\\Shift_JIS.txt"));
gfile.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = gfile.GetFirstLine();
tfile.Open(file,wxConvAuto(wxFONTENCODING_CP932));
二通りのやりかたでコンパイルが正常にできました。
また、sjisのファイルを読みこむこともできました。
ありがとうございました。
助かりました!!!
370:361
12/01/09 23:07:32.49 .net
ubuntuでの印刷の件ですが、使っているプリンタのドライバがよくなかった様で、ドライバを変更したらうまく行きました。
現状、wxTextCtrl内の行が長すぎると用紙からはみ出てしまうので、適切なところで改ページするようにしたいと思っていますので、またもう少し考えてみます。
371:デフォルトの名無しさん
12/01/11 14:12:14.80 .net
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:デフォルトの名無しさん
12/01/11 18:34:11.40 .net
>>371
エスパーしてみるわ
一応忠告しとくけどwxWidgetsは「同じソースコードからWin, Linux, Macで使えるバイナリがコンパイルできる」のであって
「LInuxでコンパイルしたバイナリがWindowsで使える」というわけではない。
それができるのはJavaだけ
上の問題ではないとしたら
Linuxでコンパイル→Linuxで使う、はライブラリが揃ってる限りいけるはず。
よって、既に生成している実行ファイルを友人の環境で「ldd <- 対象の実行ファイル ->」して
友人の環境で足りないライブラリを追加する
もしくは友人の環境でwxWidgetsのソースをコンパイルして「wx-config」が正しく使えるようにする。
373:372
12/01/11 18:39:33.34 .net
というかlibc.so.6が足りないだけなら
実行ファイルと同じディレクトリにlibc.so.6を置いて実行すればいける気もする
374:デフォルトの名無しさん
12/01/11 20:17:58.74 .net
>>372
レスありがとうございます。
LinuxでコンパイルしたファイルはLinuxでは使えない、というのはわかっています。私も知り合いも環境はLinuxです。
極力ユーザが煩わしくないように、実行ファイル以外のファイルをユーザが別途インストールする必要が無いようにしたいのですが、不可能なのでしょうか?下記サイト
URLリンク(up-cat.net)
によると、Javaとは違いランタイムがいらないと書いてありますが限度があるのでしょうか
一応Windows版は同じソースで私の周りの環境では問題なく動いたのですが…
libc.so.6を実行ファイルと同じフォルダにおけ、ということですが、共有ライブラリはlddコマンドで見れるような指定されているアドレスに置かなくても利用可能なのでしょうか?
その方法で動作するかもしれないのでまた試してみます。
375:デフォルトの名無しさん
12/01/11 21:04:03.63 .net
>>374
> LinuxでコンパイルしたファイルはLinuxでは使えない、というのはわかっています。
いやわかってないだろ、どう見ても。
376:デフォルトの名無しさん
12/01/11 21:12:12.37 .net
>>375
すみません間違いました。
LinuxでコンパイルしたファイルはLinux以外では使えない、というのはわかっています。です
377:デフォルトの名無しさん
12/01/12 00:36:38.89 .net
>>376
自分の環境でコンパイルするときに正しく-staticオプションつけとけば、依存なしにバイナリを走らせることはできるはず
依存関係が出てるってことはstaticリンクビルドされてないのは間違いないので、そのアプリをちゃんとコンパイルしなおすべきかと
378:デフォルトの名無しさん
12/01/12 10:46:49.97 .net
>>377
レスありがとうございます。
-static-libcというコマンドは存在しないみたいで、どのようにオプションをつければlibcを静的リンクすればいいのか、自分なりに調べてみたのですがよく分からないのでできれば教えていただきたいです。
379:デフォルトの名無しさん
12/01/12 12:10:12.07 .net
>>378
リンク時に「-static」とつければいいです
この意味がわからなければ
gcc,CXXFLAGS,LDFLAGS ,MAKEFILE、リンカとかのキーワードでググってね
380:デフォルトの名無しさん
12/01/12 15:19:19.22 .net
>>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:デフォルトの名無しさん
12/01/12 18:33:37.54 .net
>>380
どこまで甘えてんだよ
少しは自分で調べてください・・・少しはソースを見やがれ
まず1行目
-lgdk_pixbuf-2.0
こいつの意味は「libgdk_pixbuf-2.0.a」という名前のライブラリをリンクするという意味
調べたらGNOMEプロジェクトの1つみたいだな
URLリンク(ftp.gnome.org)
まあこいつは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:デフォルトの名無しさん
12/01/12 18:42:52.46 .net
あ、でも
「warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking」系のエラーは
スタティックライブラリを使っても出ることがあるみたいだな。
つーことは一番の目標はgdk-pixbufをインストールすることか。簡単じゃん。
383:デフォルトの名無しさん
12/01/12 19:03:01.17 .net
ここまでおまえの自演
384:デフォルトの名無しさん
12/01/12 20:59:28.67 .net
>>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..
URLリンク(www.ultimatepp.org)
をみると、私の英語力ではlibgdk-pixbuf-2.0.0はstaticで出力できないと読めるため、八方塞がりとなり、ここで聞いた次第です。
気分を悪くしてしまってすみません。
>>383
自演ではないです。
385:デフォルトの名無しさん
12/01/12 21:16:37.55 .net
>>384
お前さんが知り合いの古い環境と同じ環境作って、
その環境でwxWidgetsとそのツールビルドすればええやん
386:381
12/01/12 21:32:18.61 .net
>>384
なんか思ったより込み入った問題みたいだな、キツイこと言ったかもしれないけど冗談だと思って聞き流してくだされ
ちょっとググッたけどlibgdk-pixbuf-2.0.0のスタティックライブラリが生成できないのはバグみたいだぞ
そして2番目のリンクではパッチとかも出てる
URLリンク(askubuntu.com)
URLリンク(bugs.launchpad.net)
で、対策としては gdk-pixbufのソースをとってきて
./configure --enable-static でいけるんではないかと思う(./configure -h したら一応あったけどこれは試した?)
387:381
12/01/12 23:04:21.77 .net
gdk-pixbuf-2.21.3にて
./configure --enable-static
make
make install
できた。めんどくせえ。
388:デフォルトの名無しさん
12/01/12 23:23:27.63 .net
wx関係ない問題なのに面倒見いいな……
389:デフォルトの名無しさん
12/01/12 23:24:18.71 .net
自演ですから
390:デフォルトの名無しさん
12/01/13 00:05:23.76 .net
>>385
レスありがとうございます
すみません。また書き方が悪かったですね。
知り合いの環境で動かしたのは、Linuxの環境で作成したバイナリファイルを、Linuxの他の環境で動くかどうかを確かめるためでしたので、知り合いの環境だけで動いても目的を果たせないんです。
linux環境すべてで動かせるとは思ってはいないのですが、せめて、多少のバージョン違いは克服したい、と思いまして。
>>386
レスありがとうございます
いえ、こちらが勝手に謝ってるだけだと思ってください。
そもそも自力で解決できないのが悪いんですし。
そしてまさかそこまで調べていただけるとは思いませんでした。
本当にありがとうございます。
パッチを試してみて、また報告します。
こちらのwxWidgetsのバージョンは2.8.12と2.9.3があるのですが、--enable-staticというオプションが確認できないので、調べてみます。
そしてちゃんと調べればきちんとパッチなども出てきたのですね…
これからはもっとよく調べてから書き込むことにします。
391:381
12/01/13 00:44:46.25 .net
>>388
wxはgtkもラップしてますしおすし
>>390
質問に答えるついででビルドしてみただけだよん
392:371
12/01/13 02:21:19.65 .net
>>388
ここでするべき質問ではなかったでしょうか…それ以前にちゃんと隅々まで調べておくべきでしたね
>>391
--enable-staticはgdk-pixbufの方のオプションでしたね。勘違いしました。
無事に静的ライブラリでリンクすることができました。本当に有難うございました。
しかし本当に見返すとひどいですね。半年ROMって出直すことにします。
393:デフォルトの名無しさん
12/01/17 01:29:32.09 .net
過疎ってんのかと思ったら割と繁盛してた
XRCでローカライゼーション機能(wxLocale)に対応してるみたいですが、普通にXRC中に文字列書いておけば
コンバートしてくれるのでしょうか?
自分で試せって?そうですね、すいません
久々に何か書いてみたかっただけです(^0^)
394:デフォルトの名無しさん
12/01/18 14:29:53.54 .net
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を選択しています。
URLリンク(forums.codeblocks.org)
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:デフォルトの名無しさん
12/01/18 14:41:08.38 .net
何が間違っているのか教えてください。
wxWigets2.9.3を使用しています。
URLリンク(docs.wxwidgets.org)
ここを参考にしました。
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:デフォルトの名無しさん
12/01/18 14:50:42.64 .net
馬鹿には無理
397:デフォルトの名無しさん
12/01/18 15:44:45.10 .net
>>395
テキストファイルが読み取り専用になってたりしない?
398:デフォルトの名無しさん
12/01/18 16:01:13.12 .net
>>397
レスありがとうございます。
読み込み専用ではなかったのですが、windowsの拡張子を表示する設定にしていませんでした。
拡張子を表示する設定にしたところ、test.txt.txtになっていました。
すみません、初歩的な事を数日見逃していました。
レスありがとうございました。
399:デフォルトの名無しさん
12/01/18 16:41:41.95 .net
わろす
400:デフォルトの名無しさん
12/01/18 18:21:10.87 .net
なんか若い子がいっぱい来た感じ
>>396
これはスクリプトなのかしら
401:デフォルトの名無しさん
12/01/18 18:24:47.81 .net
>>394
エラーログを貼らないとどんなハッカーでも原因はわからんですよ^^;
そもそもCode::Blocksはビルドする必要ないような?初心者はバイナリバージョンをダウンロードすればいいと思うよ。
もしCode::Blocksの翻訳とかやってる方だったら全力支援しますが
402:401
12/01/18 18:27:55.92 .net
ごめん>>401は忘れてください。ただの報告だったんですね・・・
またエラーかと思った
403:デフォルトの名無しさん
12/01/19 00:46:20.39 .net
わろす
404:デフォルトの名無しさん
12/01/22 22:48:49.88 .net
wxWidgets2.9.3を使用しています。
下記リンクを参考にしました。
URLリンク(docs.wxwidgets.org)
文字列の中に特定の文字が複数回出た場合の検索を行いたいです。
.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:デフォルトの名無しさん
12/01/22 23:59:25.48 .net
>>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:デフォルトの名無しさん
12/01/23 01:28:04.42 .net
>>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:デフォルトの名無しさん
12/01/23 03:10:53.18 .net
VCでもmingwでも pos + 1; に対してはWarning出すから、
ちゃんとWarningは読んで意味を理解しよう。
VC使ってるならステップ実行も使おう。
>charがabとか半角文字で、wcar_tが2バイト文字が許される
L""を知らなかった、ということはたぶん間違った理解をしてる。
まずはstring, wstringを使って両者についての理解を深めた方が良いかも。
ちなみにVCとmingwでwchar_tの定義は異なるので、それに気付かず両者を混同して
テストすると理解が深まるどころか発狂しそうになるので要注意。
知らないことが出てきたらまず自分で調べる、というのは正しい姿勢だし、
これからも是非継続してもらいたいけれども、この辺はもう完全にスレチなので、
c++初心者スレとかで聞いた方がいいと思う。
まあ頑張ってくれ。
408:デフォルトの名無しさん
12/02/02 23:41:58.22 .net
TDM-GCC 32bit wxWidgets2.9.3を使用しています。
URLリンク(docs.wxwidgets.org)を参考にしました。
URLリンク(2ch.ac.la) を参考にしました。
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:デフォルトの名無しさん
12/02/02 23:49:55.81 .net
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:デフォルトの名無しさん
12/02/03 00:46:43.23 .net
>>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:デフォルトの名無しさん
12/02/03 02:34:29.06 .net
>>410
レスありがとうございます。
>詰まったら詰まった現象を再現できる可能な限り短いコードを晒してくれ。
>バグってる長いコードなんて誰も読みたくはない。
次からそのように心がけます。
>今回も残念ながらwxWidgets以前の問題だ。
>正規表現に関してちゃんと勉強してくれ。
もう一度、正規表現のコンテンツを読みます。
コードを書いてくれてありがとうございます。
参考にします。
しばらく時間がかかりそうですが、うまくいきましたら報告にきます。
ありがとうございました。