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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 15:12:36 .net]
クロスプラットフォーム 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【サイザー】
pc12.2ch.net/test/read.cgi/tech/1214657360/

182 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 17:16:21.87 .net]
むしろUTF-8のまま扱うかUNICODEにしてしまった方が良いのでは?

184 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 20:02:39.82 .net]
>>182
wxStringOperations::IsValidUtf8String


185 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:17:32.00 .net]
>>184
ありがとうございます。
今レス見たばかりなのでまだ試していませんが、
docs.wxwidgets.org/trunk/annotated.html
を見ても wxStringOperations は見当たらず
ネームスペースかとも思うのですが、
こういったものはどうやって見つければ良いものですか?

186 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:25:43.01 .net]
>>182
wxString::FromUTF8Unchecked


187 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:27:16.48 .net]
>>185
trac.wxwidgets.org/wiki/DebugRelease

188 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:34:44.59 .net]
>>186
ありがとうございます。
しかしそれは Valid じゃない UTF8 データが渡されたときの
動作は undefined だと書かれていますね。
結局事前に調べないといけないことにかわりないようです。

>>187
ありがとうございます。
中身を読んでも良く判りませんでした。
どういう意味でしょうか?

189 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:38:29.58 .net]
ん?
「〜」301C(E3809C)
はValidじゃないのか?

190 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 09:19:31.75 .net]
問題なのはUTF-8として正しいかどうかじゃなくて
cp932に変換出来るかどうかってことなんだよな
そうなるとスレ違いかもな



191 名前:デフォルトの名無しさん [2011/03/10(木) 13:58:57.41 .net]
wxWidgetsって、けっこうS-JISの処理が弱いので、そこの部分だけはネイティブの処理にしたほうがいいかも
俺もアプリ作った事あるけど、S-JISに変換する部分だけはWideCharToMultiByte関数を呼ぶようにしたよ

192 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 16:16:13.99 .net]
>>184
残念ながら使えませんでした。


193 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 16:24:05.27 .net]
>>192
wxUSE_UNICODE_UTF8 を定義してないと使えないよ
つ ttp://docs.wxwidgets.org/trunk/overview_string.html


194 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 22:06:44.16 .net]
みなさん色々とありがとうございます。
wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
のところで例外出して死ぬパターンと sjis_data が空になるパターン
それからちゃんと成功するパターンとがありました。
結局アクセスしていたサイトに広告が入っていて、
時間帯によって内容が変わるようなのですが、
どうも本体は UTF8 なのに広告部分だけ SJIS とか、
お粗末なサイトだったのが混乱した原因の一つでした。

195 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 00:00:08.70 .net]
3.0マダー(AA略)


196 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 00:30:08.01 .net]
サイザーage

197 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん [2011/07/16(土) 23:02:41.64 .net]
GUI の配置は XML で定義出来るのが一番良いなあ

199 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 01:18:11.68 .net]
それ何てXUL

200 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 22:48:55.64 .net]
wxだってXRCがあるじゃまいか。



201 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 23:28:11.01 .net]
誰も無いとは言ってないぞ

202 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 23:40:23.13 .net]
後出しww

203 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 23:43:54.73 .net]
ネタにマジレスww

204 名前:デフォルトの名無しさん mailto:sage [2011/07/18(月) 05:50:22.06 .net]
なんのこっちゃ。

205 名前:デフォルトの名無しさん [2011/07/28(木) 23:53:32.75 .net]
リストボックスのアイテムとして
ボタンやテキストボックスを表示できる?

206 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 04:32:53.10 .net]
>>205
wxListBoxそのままでは無理。
テキストボックスだけでいいならwxEditableListBox使った方が早い。
それ以外でちょっとだけコントロールを付け足したいだけなら、
wxListBox継承してるwxCheckListBoxのソースが参考になると思う。
画像管理ソフトみたいなサムネリストが欲しいならwxThumbnailCtrl
って非公式コントロールが楽(古いので2.9系では若干修正が必要)。
ttp://wxwidgets.blogspot.com/2011/02/markup-in-control-labels.html
で紹介されてるマークアップがwxListBoxにも適用されると見た目を
いじるだけならすごく楽になるんだろうけどねぇ。


207 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 07:16:29.38 .net]
>>206
ありがと

208 名前:デフォルトの名無しさん [2011/08/11(木) 06:56:31.32 .net]
自作のTestApp(wxWidgets製)は起動時に渡されたパスを読み込んで処理を
するとして、既に起動しているTestAppがあれば、そのTestAppにパスを引き
渡して自分は死ぬ(多重起動しない)、という動作をしたいです。
Winの場合、EnumWindowsでトップレベルウィンドウでTestAppを探し、
WM_COPYDATAをSendMessageで投げMSWWindowProcで受ける、
という方法を採っていますが、この辺のニーズは常にあるだろうし、
もっと楽なやり方があるんじゃないかと思ってます。
こういう方法の方が楽、とかありましたら教えてください。


209 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 10:26:43.62 .net]
Mutex

210 名前:208 mailto:sage [2011/08/11(木) 20:27:39.52 .net]
>>209
コメントありがとう。
でもMutexだと多重起動のチェックには使えるけど、
「既に起動している別プロセスへ任意のデータを引き渡す」
って処理には使えなく無いですか?






211 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 00:44:19.62 .net]
・メモリマップファイル
・共有メモリ
・TCP/IP
・DDE/OLE/ActiveX
・ウィンドウメッセージ
好きなの使えばいいよ。普通は都合のいい方法を使って自分で作る。
wxならメッセージが一番楽だろう。

212 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 01:46:19.30 .net]
つうか、二重起動防止するAPIが普通にあるだろ。

213 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 12:39:56.45 .net]
>>210
元のをポップアップさせてあとのを閉じれば渡す必要なくね?

214 名前:デフォルトの名無しさん [2011/08/12(金) 12:42:49.43 .net]
一番簡単なのが欲しいなら作業ファイルにデータ書き込め。
いっそ多重起動もdir lockでやっとけ。

215 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 17:59:34.09 .net]
wxMutex
ttp://docs.wxwidgets.org/2.9.2/classwx_mutex.html

216 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 18:09:42.10 .net]
wxSingleInstanceChecker
ttp://docs.wxwidgets.org/2.9.2/classwx_single_instance_checker.html

217 名前:208 mailto:sage [2011/08/12(金) 21:25:55.39 .net]
なんかいっぱい回答もらえた。ありがとうございます。
誤解を生んで申し訳ないんだけど、多重起動の禁止だけじゃなくて、
データを引き渡すってところまでがやりたいことなんです。

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

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

・DDE/OLE/ActiveX
MSが意図しているアプリ間通信にはこれを使うべきなんですかね。
クロスプラットフォームからはかけ離れますが。


218 名前:208 mailto:sage [2011/08/12(金) 22:02:35.23 .net]
・ウィンドウメッセージ
はい。最初に書いたとおり、これは把握済です。
ただ、全トップレベルウィンドウを調べるwxWidgetsの関数って
無いですよね?(MS側のAPIはあるけど)

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

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

皆さん色々な案の提示、どうもありがとうございました。

219 名前:デフォルトの名無しさん mailto:sage [2011/09/02(金) 20:17:08.41 .net]
今更なんですが、C++でGUIを考えた場合、wxWidgetsとQTが候補に挙がりましたが
両者の比較を書いているサイトや記事などありましたら教えてください。

220 名前:デフォルトの名無しさん mailto:sage [2011/09/02(金) 20:28:54.93 .net]
自分はQt側のことは知らないんだが、こんなサイトがある

wxWidgetsのススメ
up-cat.net/wxWidgets%A4%CE%A5%B9%A5%B9%A5%E1.html



221 名前:デフォルトの名無しさん mailto:sage [2011/09/02(金) 23:04:35.91 .net]
いまは VC2010Express でも wxWidgets 使えて便利だわ

222 名前:デフォルトの名無しさん mailto:sage [2011/09/02(金) 23:29:46.37 .net]
2.9.2落としてきてVC2008でビルドしてたけど、これgdgdすぎ
スタティックライブラリはできたけど、DLL版は全然ビルドできないわ、サンプルはデバッグ
ライブラリ用になってるからいちいち直さないといけない&直しても同じリソースがどうたら
でビルドできんし、Qtにいくわ

223 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 00:34:44.80 .net]
おいらはMinGWでMakefile作りながらGUI作ってるよ〜 (^q^)

224 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 01:05:50.35 .net]
ああ、早とちりすまん
結局添付されていたVC2008用のプロジェクトファイルがうんこで、VC6用の奴を変換して
ビルドしたらうまくいきましたわ
サンプルも同じでVC6用の奴を変換してビルドすると正常にビルドできました
悪口いってすまん、けどビルドできないVC2008用プロジェクトファイルって罠じゃないのか

225 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 10:36:44.01 .net]
普通makefileの方使わない?

226 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 11:45:57.63 .net]
nmakeしたらいきなりエラーで止まったし、ぐぐるとnmakeよりもVC++上でコンパイルする記事が多かった
ので、そうしてました。
お騒がせして申し訳ないついでに実は開発版の2.9.2をビルドしようとしてたみたいで、俺死にたい...
というより氏ね>俺

227 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 12:10:03.39 .net]
VC使わないといけない理由があるんなら仕方ないけど
gccの方がすんなり行くんじゃないかなぁ。

228 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 18:49:10.70 .net]
WinでgccというとMinGだよね?
たまたまVC入ってたからVCでやってたけど、MinGの方が捗るの?

229 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 20:59:18.77 .net]
wxWidgetsの開発はLinuxのgccで行われてるだろうからMinGW+gccだと環境づくりが楽かも?
VCのことは知らないけどMinGWだと普通に2.9.2コンパイルできたし
コーディングの効率を考えるとVCのオートコンプリート機能が使えたら楽かもしれんが、たぶん出来んだろうしな


230 名前:デフォルトの名無しさん mailto:sage [2011/09/03(土) 21:56:21.73 .net]
winでわざわざMinGなんて使う必要ないよ。
VCでいい。



231 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 17:11:05.31 .net]
MinGWだとEXEサイズ小さくなるかなと試してみたが、makeしてもlibができないなぁと1時間も
悩んでた、.aで正しいのにwww
アホすぎる俺
しかしwxWidgetsいいね、コントロールは揃ってるし、ドッキングもできる、開発版にすればリボンもどきも
使えるし、wxFormBuilder使えばGUIで画面組み立てられるし、とりあえず満足できる環境だし

232 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 19:51:43.28 .net]
ちなみにgccは-sオプションをつけると結構ファイルサイズは小さくなる

235 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 19:52:42.86 .net]
あ、既出だった

236 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 21:11:45.91 .net]
>>233-234
アホな俺にわざわざありがとう!
もう1回試してみます!

237 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 22:39:22.73 .net]
>>230
なるほど人によるなあ。
俺なら「わざわざVC使わんでも、MinGでいい」って発想になるわ。

238 名前:デフォルトの名無しさん mailto:sage [2011/09/04(日) 23:30:54.03 .net]
>>233
ライブラリも作成し直し、サンプルもビルドし直しましたがサイズは6621KBでした
あとDLL依存はとれないのですね

239 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 00:04:36.25 .net]
>>237
同意。
UNIX文化的には、gccが「標準」でVCは「非標準」って認識だからなぁ。

自分で何か書く時とか、「自分はgccしか使わないけど、Win使いのためにVCもサポートしてやるか」ってレベル。

240 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 00:32:26.75 .net]
結局どっちの文化に属してるかによって
何がデフォで何がわざわざなのかが違うってことで。

で、wxそのものがUNIX文化なんだよな。



241 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 12:01:41.27 .net]
>> 238
サンプルはそのままビルドするとDLL依存になるとおもう。

cd samples
make "LDFLAGS = -static"

こんな感じでいかかでしょ。


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

243 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 19:16:34.99 .net]
>>242
がんがれ。

ただ、オープンソース系のライブラリを今後使っていくんなら
いずれにしてもgcc系の流儀とかも覚えておいた方がいいと思うよ。

244 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 20:25:18.76 .net]
質問お願いします。

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

こういうよくある(名前、種類、ディレクトリ、サイズ)みたいなのを
表示したいんですがヴィジェットは何を使ったらいいでしょうか?
できれば画像のように名前のところの矢印みたいなのを付けたいのと
項目の順番をD&Dで入れ替えたり表示、非表示をポップアップメニューで行いたいです。
項目にはDBのカラムを割り当てたいと思っています。

246 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 20:38:38.06 .net]
すいません、listctrlで出来そうですね。
なんでいつも質問した後は簡単に見つかるんだろう…

247 名前:デフォルトの名無しさん [2011/09/10(土) 23:30:44.52 .net]
age

248 名前:デフォルトの名無しさん mailto:sage [2011/09/11(日) 23:37:25.34 .net]
sage

249 名前:デフォルトの名無しさん mailto:sage [2011/09/20(火) 23:30:06.13 .net]
wxWidgetsのライセンスって何なの(L-GPL)?
これ使って書いたプログラムってソースコード開示する必要あるの?
教えてエロい人!!

250 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 08:11:29.04 .net]
ゴメン、答えられるけどエロくない。



251 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 12:00:14.06 .net]
インポ乙

252 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 18:59:22.32 .net]
まあその質問はググッたらでてきそうだしな…
ところで組み込み用のwxWidgetsとかないんだろうか。

253 名前:デフォルトの名無しさん [2011/09/23(金) 14:09:14.39 .net]
>>249
試しにググッたら意外と出てこなかったので教えてやるでおじゃる
web.archive.org/web/20080919161353/http://www.geocities.co.jp/SiliconValley-Cupertino/8526/wxWindows/license.html
ms2.seesaa.net/article/3184354.html

254 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 20:06:16.47 .net]
情報古過ぎないか

255 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 21:55:11.24 .net]
世界線は変わらなかった

256 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 22:27:50.66 .net]
つうか本家のホームページに書いてあるがな。

257 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 23:34:52.13 .net]
これですね
www.wxwidgets.org/about/newlicen.htm

"wxWindows Licence"で配布されていて、
ソースコード開示の必要はないというのが一応の答えかな


258 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 22:07:43.51 .net]
需要があるかどうか不明ですが。

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

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 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 22:23:14.63 .net]
>>258
乙です
てかwxWidgetsにも正規表現ライブラリあったんだな

260 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 23:40:22.99 .net]
>>258
正格表現って初めて見たが、正則表現ではなくて?
POSIXブラケットのうち、[. .] [= =] [:<:] [:>:]とかって他のライブラリじゃほとんど見ないな。
[[=A=]]ってAやÄなどにマッチするんだっけ?



261 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 20:52:38.34 .net]
>>260
ご指摘Thx. 直しておきました。どこで間違ったんだろう。

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



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

ってかくと顔文字っぽい。

263 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 09:53:24.70 .net]
POSIXって良く聞くけどなんですか?


264 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 20:16:50.72 .net]
258です。訳文とかちょっと修正しました。ページ内部のリンクも増やした。

>>263
実は私もよく知らない。

265 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 23:02:57.78 .net]
雲丹の標準規格じゃないの?

266 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 23:05:37.07 .net]
ja.wikipedia.org/wiki/POSIX
POSIX(ポジックス パーズィックス、Portable Operating System Interface)とは、
異なる実装のUNIX OSを始めとする各種OSに共通のAPIを定め、移植性の高い
アプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定した
アプリケーションインタフェイス規格である。

267 名前:デフォルトの名無しさん mailto:sage [2011/09/28(水) 21:35:43.22 .net]
motifもIEEEが規格決めてたから、こっち使いましょうよ

268 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 14:42:15.49 .net]
>>263
ザックリとでよければ「UNIX互換」くらいに考えておけば良い。


269 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 17:30:42.91 .net]
CodeBlocks10.05とwxWigets2.8を使用しています。
勉強中です。
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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 18:28:13.72 .net]
>>269
最後の行
OpenDialog->Destroy();}

中括弧が全角になってるなあ
てかこれ全コードじゃないよね

272 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 20:52:59.24 .net]
サンプルにある"dialogs"が参考になるんじゃないかな、
"File operations->Open files"というのがある。

273 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/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 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 21:58:12.30 .net]
連続投稿規制 5回でなるんですねが・・・
こんな感じです。
配列・ポインタなど、マニュアルを目を通したのですが、完全に理解していません。
とりあえず色々さわりながら理解していこうかと考えています。

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

ありがとうでした。

279 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 22:45:02.83 .net]
迷惑な香具師だな

280 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 07:33:07.56 .net]
>>278
長いときはcodepadとかideone使おうぜ・・



281 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 08:19:10.74 .net]
会社から帰ったら考えてみるわ>>278


282 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 14:01:41.90 .net]
>>280
そのような場所があるとは知りませんでした。
次からそうします。

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

ありがとうでした。






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

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

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