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


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

【GUIライブラリ】wxWindowsでのひょーん



1 名前:デフォルトの名無しさん mailto:sage [03/05/06 11:04]
クロスプラットフォームGUIライブラリのwxWindowsについて語りましょう。

本家
 www.wxwindows.org/
dW : Linux : wxWindowsの概要
 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 www.idg.co.jp/sw/back/200102/20010219_01_report.html
メルマガ
 www.mag2.com/m/0000108320.htm

1はこれからインストールします

496 名前:デフォルトの名無しさん mailto:sage [03/09/28 22:29]
確かにドキュメント化されてないのは心配ですね。でも結構不変的なオブジェクトっぽいですよ。

REV:1.5以降は wx/window.h に存在してます。REV:HEADでも依然として存在しています。
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/window.h?annotate=1.5

REV:1.4以前は各々のプラットフォーム毎に持っていたようです。
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/window.h?annotate=1.4
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/msw/window.h?annotate=1.1
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/gtk/window.h?annotate=1.1
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/motif/window.h?annotate=1.1
cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/mac/window.h?annotate=1.1

つまり、wxTopLevelWindowsという識別子はwxWindowsの歴史の中で存在しなかった事はないようです。
wxWindowsのどのリビジョンを取り出しても、必ずwxTopLevelWindowsは存在します。
これからもずっとこうだと限りませんが、1998年存在しつづけているオブジェクトなので余程のことが無い限り大丈夫だと思います。
また、もし変更があった場合は toplvcmn.cpp utilscmn.cpp wincmn.cpp helpctrl.cpp app.cpp
data.cpp mdi.cpp nativdlg.cpp taskbar.cpp toplevel.cpp window.cpp app.h window.h
に一度に変更が入るため、変更の可能性は低いように思えます。

497 名前:デフォルトの名無しさん mailto:sage [03/09/28 23:43]
と思ったんですが、
wxguide.sourceforge.net/guidelines/basics.html
のガイドラインでは
WX_DEFINE_ARRAY (AppFrame*, AppFrames);
で全てのフレームをApp(public wxApp)で管理していました。
のさんの言うように自前で管理することにします。どうも。

498 名前:デフォルトの名無しさん [03/09/29 20:54]
最近wxWindowsの勉強を始めたのですが、サンプルを見ると、
どれもボタンとかメニューを作るたびにIDを割り当てて、
そのIDをベースにコールバックを登録してますよね?

みなさん、そのスタイルでプログラムされてるんですか?
wxID_ANYでまかせて、GetIdを使うやり方は、将来何かまず
いことがおきるでしょうか?

ついでにいうと、せっかくオブジェクト指向なのに、なんで
IDなんていう内部情報を表に見せるようなAPIになってるん
でしょうね。

499 名前: mailto:sage [03/09/29 23:58]
> 498
>wxID_ANYでまかせて、GetIdを使うやり方は、将来何かまず

具体的にはどんな感じ?
# ハンドラ内でif判定?

マクロとか使用せずに登録したいのなら、EvtHandler::Connectを使うのが
スマートだけど……どのみちIDを使用しますな。


> IDなんていう内部情報を表に見せるようなAPIになってるん

IDをメッセージの一種と考えているんでしょうね。
メンバ関数をコールバックするためにオブジェクトそのものをやりとりするよりも
効率的と判断したのですかね?

500 名前:デフォルトの名無しさん mailto:sage [03/09/30 00:10]
>>498
>なんでIDなんていう内部情報を表に見せるようなAPIになってるん
OnFileMenu(wxCommandFileMenuEvent) {}
OnEditMenu(wxCommandEditMenuEvent) {}
OnExitMenu(wxCommandExitMenuEvent) {}
OnOpenMenu(wxCommandOpenMenuEvent) {}

俺はこんなのやりたくないぞ。
OnCommand(wxCommandEvent) {switch (event.GetId())}
の方が素直でいい。

501 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:01]
>>500
やりたくないって最近のGUIフレームワークはみんなそうなんだが。
拡張無しのC++だと発生したイベントとイベントハンドラOnFileMenuの呼び出しを
結びつけるのが難しいから(まさかvirtualにもできないし)wxWではやってないというだけで。

502 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:12]
>>501
ほんとにメニューが増えるたびにクラス作るの?
まじでやりたくないな。。とりあえずSwingは違ったけど。
その最近のGUIフレームワークって何てやつ?

503 名前:501 mailto:sage [03/09/30 02:26]
>>502
>みんなそうなんだが。
>>500の例は少し違ったな。クラスをボコボコ作るわけじゃない。
↓な感じ。
class Form1
{
OnFileMenu(wxCommandMenuEvent) {}
OnEditMenu(wxCommandMenuEvent) {}
OnExitMenu(wxCommandMenuEvent) {}
OnOpenMenu(wxCommandMenuEvent) {}
}

504 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:31]
(´-`).。oO(なんで「MFCに似てるな」で片づけられないんだろう…)



505 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:41]
>>503
それって

EVT_COMMAND(wxID_FILE, wxCommandMenuEvent, OnFileMenu)
EVT_COMMAND(wxID_EDIT, wxCommandMenuEvent, OnEditMenu)
EVT_COMMAND(wxID_EXIT, wxCommandMenuEvent, OnExitMenu)
EVT_COMMAND(wxID_OPEN, wxCommandMenuEvent, OnOpenMenu)

と何が違うん?

506 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:46]
あ、違うか。そうしないのは何故かってことか。なんでだろ?
関数増えまくるのがめんどくさいからかな。
ヘッダにも書かないかんし。まあC++の宿命っつーか。

507 名前:デフォルトの名無しさん [03/09/30 06:45]

WideStudio のドキュドキューンさになんとも馴染めなかったので、
これはどうかと wxWindows を見てみたが、






設計古すぎ もうだめぽ

508 名前:デフォルトの名無しさん mailto:sage [03/09/30 11:00]
>>507
来年また覗きにおいで
www.wxwindows.org/roadmap.htm
Version 3.0.0 Stable
Release 15/12/2003
This stable release will have STL compatibility for compilers that support
templates fully. For example the wxString class will derive from
std::basic_string<>.

509 名前:デフォルトの名無しさん mailto:sage [03/09/30 12:23]
よーするにdelegateのないC++は糞だしその上に構築されたライブラリも糞ってこった。

510 名前:デフォルトの名無しさん mailto:sage [03/09/30 13:44]
>>509
delegate自分で書けねーのかよ(激藁


511 名前:507 mailto:ageサンクスコ [03/10/01 00:35]
>>508
おぉ

# gtkmm から早く抜け出したいので期待age.

512 名前:デフォルトの名無しさん mailto:sage [03/10/02 20:27]
ドキュメントかなりvirtualの間違いがあるんですけど
こういうのってどうしたらいいんでしょうかね?
報告した方がいいんですか?

virtualってドキュメントに書いてあったからオーバーライドしてはまった人より。


513 名前:デフォルトの名無しさん mailto:sage [03/10/02 21:12]
>>512
そりゃもちろん報告した方がいいでしょ。

514 名前:デフォルトの名無しさん mailto:sage [03/10/04 17:26]
どなたかwxDynamicLibrary(wxPluginLibrary)をうまく使えている方いませんか?
まだ突き詰めて実験してないんですけど、現象としては
class MyWindow : public wxWindow {
DECLARE_DYNAMIC_CLASS(MyWindow);
}
IMPLEMENT_DYNAMIC_CLASS(MyWindow, wxWindow);
というクラスをDLLにしてあり、アプリケーションから
wxDynamicLoaderやwxPluginManagerを使って読み込んでインスタンスを生成しているんですが
instance->GetBaseName1() == wxT("wxWindow")
なのに
instance->GetBaseClass() == NULL
という良く分からない状態になっています。

ドキュメントにはstrlenのサンプルがありますが、wxWindowsの型システムを使った
オブジェクトの生成方法のサンプルがなかなか見つかりません。
一応 lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949 も見たんですけど何だか良く分からん(;´Д`)
何か情報があればお願いします(英語でも何かのソースでもいいです)



515 名前:デフォルトの名無しさん mailto:sage [03/10/04 17:30]
すいません。めちゃくちゃ間違えました

instance->GetClassInfo()->GetBaseClassName1() == wxT("wxWindow")
なのに
instance->GetClassInfo()->GetBaseClass1() == NULL

です。

516 名前:デフォルトの名無しさん mailto:sage [03/10/04 21:03]
>>514
おお、そんなものがあるのか。
漏れも試してみます。

517 名前:デフォルトの名無しさん mailto:sage [03/10/06 00:16]
イベントを兄弟ウィンドウに伝播させるには、

1.子ウィンドウAがイベントを親ウィンドウに投げて、
2.親ウィンドウが受け取ったイベントを子ウィンドウBへ投げる

としているのですが、これだと親ウィンドウが全てのイベントを
管理しなきゃいけないんですがこんなもんなんですか?
GUIアプリ作ったことないんでこれが普通なのかどうかよく分かりません。


518 名前:デフォルトの名無しさん mailto:sage [03/10/06 07:20]
1.子ウィンドウAが親ウィンドウのハンドルを取得する
2.親ウィンドウから子ウィンドウA,B,C,D,...のリストを取得する
3.子ウィンドウリストから必要なウィンドウをピックアップしてイベントを投げる
でも,動作すると思いますよ.


519 名前:デフォルトの名無しさん mailto:sage [03/10/06 08:34]
>>518
レスありがとうございます。
XRCを使っているという前提で聞いてもらいたいんですが、

「必要なウィンドウをピックアップ」とありますが、ユーザが勝手に作ったクラスの場合は
必要かどうか分からないので、結局どこかで while を使って子ウィンドウ全てに
イベントを投げる必要があるということですね。

そうすると、孫ウィンドウに送る場合はどうするのでしょう?
途中にwxPanelやwxSplitterWindowなどがはさまってしまうとそれ以上イベントが飛ばないので、
1.まず最初にトップウィンドウにイベントを投げて、
2.トップウィンドウの全ての子孫ウィンドウを再帰的に検索して
3.それぞれのウィンドウのProcessEventを呼び出す
ということをしなければならないのでしょうか。

「しなければならない」のならするのは全然平気なのですが、ちょっと不安になってしまいまして。


520 名前:デフォルトの名無しさん [03/10/10 19:20]
C++BuilderXはどうだったんだろう。

521 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/10 22:03]
>>520
10月半ばにPersonal版がDL可能になる・・・筈

522 名前:デフォルトの名無しさん mailto:sage [03/10/10 22:03]
へぇ

523 名前:デフォルトの名無しさん mailto:sage [03/10/11 03:10]
英語版のPersonal入れてみたけどwxWindowsは入ってなかったしRADも見当たらなかったぞ

524 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/11 10:48]
>>523
まぢ?
とりあえずプロコンが終わったら入れてみよう.



525 名前:デフォルトの名無しさん mailto:sage [03/10/11 22:31]
そういえばBitTorrentもwxWindows/Pythonなんだよね。やけに配布パッケージ大きいと思ったらライブラリが9割以上食ってた

526 名前: mailto:sage [03/10/12 13:14]
> 525

DLLだと全部入りになるからデカいよね。
C++でstatic linkすると随分小さいけど……Pythonじゃ無理か……


527 名前:514 mailto:sage [03/10/12 23:42]
>>514-515 できましたー。
これが正しい方法なのかどうか分かりませんが、
クラス名以外の情報が見えない状態でインスタンスの生成に成功しました。
以下にTipsとして示します。ちょっと長いです。
環境はWindows2000、wxWindows2.4.1です。今週中にLinuxでもやってみます。

1.DLLを用意する。
ヘッダの中身はこんな感じです。キモはDECLARE_USER_EXPORTED_PLUGGABLE_CLASSです。
これによってwxPluginLibraryにwxClassInfoのハッシュマップが宣言されます。

#ifndef MYFRAME_H
#define MYFRAME_H
#include <wx/wx.h>
class MyFrame : public wxFrame {
  DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, __declspec(dllexport));
};
#endif

で、"__declspen(dllexport)"はWXDLLEXPORTのように、
DLL側では__declspen(dllexport)、アプリケーション側では__declspen(dllimport)とならなければなりません。
wx/defs.hを見て適宜プリプロセッサで場合分けしてください。
今回はアプリケーション側はMyFrame.hをincludeしないので、このようにしました。

528 名前:514 mailto:sage [03/10/12 23:49]
(続き)MyFrameはexportしなくても良いみたいです。(ひょっとすると必要なのかもしれませんが)

1.DLLを用意する(2)
今度は実装部です。IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASSを使えばいいのですが、
wxWindows2.4.1のwx/object.hの_IMPLEMENT_DL_SENTINELにバグがあり、コンパイルが通りませんので以下のようにします。
-------------------------------
#include <wx/dynload.h>
#include "MyFrame.h"
#undef _IMPLEMENT_DL_SENTINEL
#define _IMPLEMENT_DL_SENTINEL(name)                             \
const wxString name::name##PluginSentinel::sm_className(#name);                \
name::name##PluginSentinel::name##PluginSentinel() {                     \
  wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes->operator[](#name);  \
  if( e != 0 ) { e->RefObj(); }                               \
}                                               \
name::name##PluginSentinel::~name##PluginSentinel() {                     \
  wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes->operator[](#name);  \
  if( e != 0 ) { e->UnrefObj(); }                              \
}

IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, wxFrame);
-------------------------------

ms_classes.Get(#name) となっているところを ms_classes->operator[](#name) と直します。

で、これをDLLとしてコンパイルします。

529 名前:514 mailto:sage [03/10/12 23:57]
(続き)ありゃ、ずれてしまった・・・スマン。
2.DLLを読み込んでインスタンスを生成する
wxPluginManagerを使ってDLLを読み込み、wxClassInfoを全走査して目的のクラスを見つけます。
これは lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949 とほとんど同じです。
---------------------------------
#include <wx/wx.h>
#include <wx/dynload.h>
class MyApp : public wxApp {virtual bool OnInit();}; IMPLEMENT_APP(MyApp)
bool MyApp::OnInit() {
  wxPluginLibrary* lib = wxPluginManager::LoadLibrary("./lib/Debug/lib.dll");
  wxNode *node;
  wxClassInfo* classInfo;
  wxClassInfo::sm_classTable->BeginFind();
  node = wxClassInfo::sm_classTable->Next();
  while (node) {
    classInfo = (wxClassInfo *)node->Data();
    if (wxString(classInfo->GetClassName()) == wxT("MyFrame")) {
      wxLogTrace(classInfo->GetClassName());
      wxLogTrace(classInfo->GetBaseClass1()->GetClassName());
      wxFrame* frame = (wxFrame*)classInfo->CreateObject();
      frame->Create(NULL, -1, wxT(wxString("class ") + classInfo->GetClassName() + wxString(" : public ") + classInfo->GetBaseClassName1()));
      frame->Show(TRUE);
      return TRUE;
    }
    node = wxClassInfo::sm_classTable->Next();
  }
  return FALSE;
}
---------------------------------
以上です。

530 名前:514 mailto:sage [03/10/13 03:21]
あの・・・追記です。
DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, __declspec(dllexport));
IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, wxFrame);
の代わりに
DECLARE_DYNAMIC_CLASS(MyFrame);
IMPLEMENT_DYNAMIC_CLASS(MyFrame, wxFrame);
でもできちゃいました。。。(じゃあPLUGGABLEは何のためにある??)
>>514-515の原因は分からずじまいです。>>527-528の無駄レスごめん。

531 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/13 17:46]
wxWindows Personal 英語版をインストールしてみました.
確かにwxWindowsの影も形もありません・・・ハァ.

 デモでは新規作成にwxWindowsのタブがあったのに,こっちにはありません.
wxWindowsはどういう形で使えるようになるのかすら判りません.とりあえず
10月半ばのC++BuilderXではwxWindowsは使えなさそう.

532 名前:デフォルトの名無しさん mailto:sage [03/10/14 11:36]
>>523
CBXのどこにRADだと書いてあるのかと小1時間・・・

>>531
某得意のPro版以上とか?

533 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/14 18:16]
>>532
www.borland.com/cbuilderx/tour/C%2B%2BBuilderX%20Turbo%20Demo.htm

 このデモの最後の方ではwxWindowsアプリをRADっぽく作る様子があるんだけど・・・
少なくともPersonal版には無いな.ラインナップ間の機能を比較する表にwxWindowsの
項目が無いから,wxWindowsサポートの有無が差別機能だとも思えない.

 ソッコーでアンインスコして,MinGW Developer Studioをインストールしてみた.
こっちはなかなか良い.何よりめんどくさいwxWindowsのインストールが簡単にできる
ことだけでも十分うれしい.IDE自体もwxWindows製なので動作が軽い.
 他のIDEが使いたいなら,インストールした後wxWindows関連のファイルだけ取り
出してアンインストールするという使い方もアリかも.

534 名前:532 mailto:sage [03/10/14 21:49]
>>533
そのデモ見てなかった。すまん。
ただDelphiでも比較表にVCLソースの有無とか書いてないし。



535 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/15 00:18]
 プロコンも終わったし,ドキュメント書いてからソースを某雑誌の人に
提出したら翻訳に再参戦しようかと思います.

 で,結局C++BuilderXのwxWindows採用の噂以降も翻訳作業は続いて
いるんでしょうか?
 メインの開発環境をノートPCに移行してから,まだCVS入れてないんです.

536 名前:デフォルトの名無しさん mailto:sage [03/10/16 11:02]
>>514-515 と >>527->>530 は全て誤りでした。
間違った情報のまま残しておくとTipsに載った場合にまずいので修正しておきます。

wxPluginLibraryが何をするのかというと、通常の::LoadLibrary,dlopenの動作に加えて、
「wxModuleから派生しているクラスをwxWindowsの型システムにインポートする」
という機能が付加されているという、この一点だけです。
wxPluginManager::LoadLibrary("ライブラリ");を実行するだけでpublic wxModuleなクラスはちゃんと使えます。
public wxModule"以外の"クラスは型システムにインポートされませんので工夫して書く必要があります。

ところでWindowsでなかなかうまくいかなったのですが、その原因は wxClassInfo::sm_first でした。
こいつはプロセス中で唯一であることを保証しなければいけません。
つまりDLLを使うことが必須となります。(スタティックリンクでうまくいくようなアイデアがあれば教えてください)
Linuxでうまくいっていたのは、wxGTK.rpmで入れているため元々共有ライブラリになっていたからでした。

これについては
lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949
の P.S.の部分に
>you need to build your app and dll using WXUSINGDLL=1, otherwise you'll have no end of trouble.
とちゃんと書いてありました。(でもこれP.S.なんてもんじゃじゃないだろーと思った)


537 名前:デフォルトの名無しさん mailto:sage [03/10/17 00:15]
>>536
訂正が間違ってるというとんでもないことをしてしまいました。(;´Д`)
> wxPluginManager::LoadLibrary("ライブラリ");を実行するだけでpublic wxModuleなクラスはちゃんと使えます。
> public wxModule"以外の"クラスは型システムにインポートされませんので工夫して書く必要があります。
そんなことないです。wxClassInfoを生成(IMPLEMENT_DYNAMIC_CLASS)すると自動的にインポートされます。
wxModuleを継承したクラスは、メモリにマップ・アンマップされる度にOnInit,OnExitが呼ばれ、
そうじゃないクラスは特に何も起こらない、です。モウカキマセンヽ(`Д´)ノゴメンナサイ

538 名前:デフォルトの名無しさん mailto:age [03/10/17 14:13]
昨日、2.4.2落としたら src/makefile.b32 が付いていないみたいなんですけど、
どうやってlib作ったらいいですか?

539 名前: mailto:sage [03/10/18 11:53]
> 537
お疲れです。

>モウカキマセンヽ(`Д´)ノゴメンナサイ

そんなこと言わずに書き込んでくだされ。
Hackについてけないことが多いですが……


> 538
$(WXWIN)/docs/(システムごとのフォルダ)/install.txt
を見るヨロシ。
コンパイラごとのmakefileを使うか、configureを使うみたいですな。


540 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/18 11:59]
 bcc使ってないから知らないけど,configureは使えないんだよね.bccでは
makefileがないとビルドできないということになると思うけど,使用するmakefileが
変わったのかな?
 MinGW Developer StudioのwxWindows入りバージョンを使ってるから,マトモな
アドバイスが出来なくてスマソ.

541 名前:デフォルトの名無しさん mailto:sage [03/10/18 12:15]
>>539
結局はスタティックリンクするとwxClassInfoのメンバ変数が複数生成されてしまうという
こちら側のしょうもないミスだったのですが、ろくに確認せずに書いてしまって申し訳なく思っとります。
>そんなこと言わずに書き込んでくだされ。
お言葉に甘えて、これからは確実に確認してから書き込みさせていただきます。

>>BCCの話題
いやいや、src/makefile.vcの中身見れば分かるけど、
src/msw/makefile.*を読んでるだけなので、
BCCだとsrc/msw/makefile.b32を使えばいいわけです。
src/makefile.vcをコピってちょっと修正すればOKだと思う。


542 名前:デフォルトの名無しさん mailto:sage [03/10/18 12:21]
×src/makefile.vcをコピってちょっと修正すればOKだと思う。
○src/makefile.vcをコピってちょっと修正してもいいと思う。

543 名前:デフォルトの名無しさん mailto:sage [03/10/18 14:48]
一応今回の件(wxClassInfo,wxDynamicLibrary)についてまとめてみました。
www004.upp.so-net.ne.jp/rcl/program/wxwindows/
転載等は自由にして下さって構いません。

544 名前:538 mailto:sage [03/10/19 02:08]
>>539-542
レスサンクス、とりあえず来週
>src/makefile.vcをコピってちょっと修正
ためしてみます。



545 名前:デフォルトの名無しさん mailto:sage [03/10/19 07:14]
Cygwin環境でいじってみようと、ドキュメントに書いてあるとおりに
../configure --with-msw --enable-debug --enable-debug_gdb --disable-shared
make
でコンパイルしました。

これだと、cygwin1.dllが必要になっていると思うんですが、
cygwin1.dllが必要ないようにするにはどうしたらいいのでしょうか。
-mno-cygwinをどこかで指定するのでしょうか。

546 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/19 08:23]
>>545
specあたりを弄ればいいんじゃない?
でもいろいろ問題があるかもしれないから,↓を読んでから挑戦してね.
www.sixnine.net/cygwin/cygwin-doc/devel/mno-cygwin-howto.html

547 名前:538 mailto:sage [03/10/20 13:32]
>src/makefile.vcをコピってちょっと修正
やってみたら簡単にできました。書き込むほどのことでもないですがとりあえず

!include <makeb32.env>

THISDIR=$(WXWIN)\src

all:
cd msw
make -f makefile.b32
cd $(THISDIR)

clean:
cd msw
make -f makefile.b32 clean
cd $(THISDIR)

cleanall:
cd msw
make -f makefile.b32 cleanall
cd $(THISDIR)


548 名前:538 mailto:sage [03/10/20 13:36]
ためしてみたのは
make -f makefile.b32 FINAL=1
でライブラリを作成して samples\dialogs をメイク、実行ができました。

549 名前:538 mailto:sage [03/10/20 13:52]
というか、
>BCCだとsrc/msw/makefile.b32を使えばいいわけです。
が、正解だったのですね。おさわがせスンマソ

550 名前:デフォルトの名無しさん mailto:sage [03/10/20 13:54]
へえ

551 名前:デフォルトの名無しさん mailto:sage [03/10/25 14:45]
>>546さん
MinGWDSに同梱のwxWindowsライブラリからリソース使えますか?
MinGWからライブラリ作り直さないと無理ですかね・・・

552 名前:デフォルトの名無しさん mailto:sage [03/10/25 15:24]
というか「(゚∀゚)ノ☆バンバン! とりあえずライブラリ全部持ってこーい」ってオプションないのかな
--enable-controls use all usual controls
これは違うみたいだし

553 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 21:56]
>>551
 wxWindowsを入れてるPCとMinGWDS入れてるPCが違うので,正確には調べて
いません.

<wx/setup.h>
#define wxUSE_RESOURCES 1
#define wxUSE_PROLOGIO 0
#define wxUSE_WX_RESOURCES 0

 こんな感じでdefineされていますが,とりあえずPROLOGIOが0ということは
.wxr形式のリソースは無理でしょう..rcはいけるんじゃないかな.

#さっさとdialogedをxrcバージョンにしろよ>wxWindows


554 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 22:14]
>#さっさとdialogedをxrcバージョンにしろよ>wxWindows
 ちゃんとwxrceditってのがありますね.contribのなかにあるのを「ちゃんと」と
言うかどうかは知りませんけど.
 いまcontrib内のmake中ですが,errorやwarningが沢山出てくる・・・使えないかも.



555 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 22:31]
 wxrceditが一応ビルド&実行可能でした.
 使い方が判らないけれど,単にXRC専用xmlエディタにプレビュー機能が
付いたみたいな感じで,RADツールみたくペタペタと貼るのは無理かも.

556 名前:デフォルトの名無しさん mailto:sage [03/10/26 00:16]
>>555
俺使い方良く分からんかった。
あれだと手書きの方が早い気がした。

557 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/26 06:19]
>>556
 一応,プレビューがサクサク表示されるならあっちの方がデザインしやすい
とは思う.でもまだXRCはお勧めできるものではないね.
 っつーことで,wxr形式のリソースに対応していないMinGWDS付属ライブラリは
使いにくいかも.

 wxWindowsって結構こういう不完全な部分が多いかも.自分で使う分には良いけど,
C++初心者の後輩に使わせるGUIツールキットとしてはgtkmmかFOXの方が良いかも.
 翻訳再参戦は延期してしばらく別のライブラリを触ってみます.

#Windows上でフリーで初心者にも使いやすい開発環境をそろえるのは大変かも.

558 名前: [03/10/26 22:26]
wxListBox終ったなり
wxwindowsjp.sourceforge.jp/docs/html/wx/wx233.htm#wxlistbox

559 名前:デフォルトの名無しさん mailto:sage [03/10/30 15:13]
otsu

560 名前:デフォルトの名無しさん mailto:sage [03/11/03 00:24]
思兼 ◆l3iwkTImVoにも見捨てられた哀れなライブラリ

561 名前: mailto:sage [03/11/03 03:43]
>560
まあ、のんびりいくよ。マターリとな。
使う分にはいいんだが、訳すのは大変。ヒマが作れん。
Wikiみたいのだったらなぁ


562 名前:デフォルトの名無しさん mailto:sage [03/11/03 17:07]
wxFoundationとBorlandの採用がらみでMLは喧喧諤諤でし。


563 名前:デフォルトの名無しさん mailto:sage [03/11/05 07:29]
>>562
wxWindowsがBorlandに採用されるん?

564 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:06]
>>563
www.zdnet.co.jp/enterprise/0311/05/epn10.html
 今はWindows版用のプレビュー版プラグインとして提供されて
いる・・・んだと思う.
 将来的にC++BuilderやKylixと統合される時には,完全にクロス
プラットフォームな標準プラグインとなると思いたい.



565 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:14]
>>560
 どっちかっていうと,C++自体に愛想が付きかけている気がする.すごく
強力で,プロコンの競技部門には必須だし,それ以外でも自分個人で
使う分にはすごく良い.でも後輩に教えようとすると,プログラミング以外で
覚えないといけない部分があまりにも多いことに気が付く.
 多分,他人と一緒にプログラムを書くときに,個人の能力差が一番問題に
なるのもC++だと思う.

#C#かJavaがガベッジコレクタ&VM無しで動かせるなら,すぐにでも移行したい.

566 名前:デフォルトの名無しさん mailto:sage [03/11/05 17:15]
Rubyだな

567 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:19]
>>566
Rubyって起動速い?
値ベースと参照ベースをプログラマが指定できるGenericsがある?
メモリ管理をプログラマが指定できる?
JITコンパイラの最適化能力は高い?

 ブロックは{}の形が見やすくて好きだけど,Rubyがプロコンの競技で十分使える
性能を持っているのなら後輩に教えてみる.

568 名前:デフォルトの名無しさん mailto:sage [03/11/05 17:33]
| ブロックは{}の形が見やすくて好きだけど,Rubyがプロコンの競技で十分使える
|性能を持っているのなら後輩に教えてみる.
と言う位Rubyを分かってるなら前4つの質問の答えは分かると思うが?

569 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:15]
>>568
 いや,Rubyのプログラムソースを見たことがあるだけで,実際に使ったことは無い.
 Perlっぽいスクリプト言語だとか,中間コード+JITコンパイルだからPerlより速いとか,
その程度の印象はあるけどそれが正しい理解だと言う自身は無い.

570 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:26]
調べてみた.
1.起動速度
 C#より遅い
2.Generics
 無い?(検索してもそれらしいものがヒットせず.リファレンスを概観しても載ってない)
3.メモリ管理
 ガベッジコレクトに任せるしかない.
4.実行速度
 C#にダブルスコアをつけて遅い.

結論
 Perlの代わりにはなっても,C++の代わりになるとは思えない.

571 名前:デフォルトの名無しさん mailto:sage [03/11/05 19:37]
>>570
Rubyはモノタイプ言語なので、genericsは不要。
型チェックが無いので、ミスが許されない競技にはお薦めできないかも?

競技なら、タイピングに手間かけられないだろうから、いくら要件を満たしててもAdaなんかは除外でしょうね。
OCamlとか、どう?(よく知らんけど

C++の機能に満足してて複雑さに愛想が尽きてるならDが一番いいんだろうけど、まだアルファだし。

//スレ違いすまんです

572 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:56]
>>571
 競技といっても,プログラミング速度を競うのでは無くて,先に作ったプログラムを
持ち寄って性能を競い合うものです.形式としてはロボコンに近い.
www.procon.gr.jp/14th/

#スレ違いすぎだな・・・スマソ

573 名前:デフォルトの名無しさん mailto:sage [03/11/05 20:18]
>>565
GCなしネイティブでC系といったら、D言語ですよ。
genericsもあるし、値・参照の使い分けも、メモリ管理も出来る。
pc2.2ch.net/test/read.cgi/tech/1003674814/l50

難点は、D言語がデフォルトのGUIライブラリを持っていないこと。
wxWindowsがポートされると嬉しいんだけど。

574 名前:デフォルトの名無しさん mailto:sage [03/11/05 21:53]
>>573
D言語はGC付きだよ。オフにすることもできるけどさ。
まぁ、でも、D言語は俺も期待。思想にちょっと不満はあるが。
文字列とか連想配列とかはライブラリに入れて欲しいかな、やっぱり。



575 名前: mailto:sage [03/11/05 23:59]
>565
Templateみたいな仕組みのある言語があれば、そっちも勉強したいなあ。
コンパイル時に確定している情報と実行時じゃないと確定しない情報という観点で
効率化を計っている言語はC++以外に知らないしなぁ。


576 名前:デフォルトの名無しさん mailto:sage [03/11/06 08:38]
Eiffelとかどうなんだろう?

577 名前:デフォルトの名無しさん mailto:sage [03/11/06 19:38]
どんな言語にせよ、メジャーになってもらわないと仕事に使えないのが辛い。
メジャーじゃなくても仕事に使える、というつっこみはなしで。

578 名前:デフォルトの名無しさん mailto:sage [03/11/07 03:17]
まずは使ってメジャー化させてくださいw

579 名前:デフォルトの名無しさん mailto:sage [03/11/07 23:01]
>>574
全体的に禿同

580 名前:デフォルトの名無しさん mailto:sage [03/11/07 23:46]
連想配列は同意だが、文字列に関しては、そのまま文字列に使える配列というのは嫌いじゃ無い、
というか、素のCだってそうだし。
文字列をクラスにした場合、C++のように、リテラルからの格納形式への変換というコストと、
様々な文字列クラス乱立という混乱を招くので、組み込みで正解と思うし、
charの配列とそれ以外の配列を区別する必然性は無いので、OKかと

むしろ問題は.sort。同じデータ列でも並び方は色々あるのに、一種類だけ言語に組み込む理由が…
//スレ違いゴメン

581 名前:デフォルトの名無しさん mailto:sage [03/11/10 05:20]
>>580
見た感じ、標準ではクラスを使わず、データと関数を分離して使う方向で行ってるね。
ここんところがC的だが、Cより安全になってるようだからいいか。
でも、わざわざ配列操作のために演算子作ったり、deleteを連想配列の要素削除に使ったり。
うーん、普通に関数じゃダメなんかな。~ってタイプしにくいぞ。関数のがいいよ……。

582 名前:デフォルトの名無しさん mailto:sage [03/11/12 23:55]
凄いスレだ・・・翻訳プロジェクトが動いてる・・・
このスレの神に習ってFLTK日本語ドキュメントでも作っちゃおうかねぇ・・・

583 名前: mailto:sage [03/11/13 01:12]
>582

ちょっと停滞中だよ。私も今しばらくはTikiの勉強中……
でも、いい加減飽きたから翻訳に戻ろうかな……

584 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/18 16:51]
 さっきCマガジンを立ち読みしてきた.
 C++BuilderXの紹介記事があって,Borlandへのインタビューもあった.
 wxWindowsは,将来搭載される予定のGUI関連の機能のプレビューと
して搭載されただけで,wxWindowsの採用が決定しているわけではない
とのこと.

 とりあえず,wxWindows3が大幅に使いやすくなって,C++BuilderXへの
採用されて,一気にメジャー化という夢はまだ残ってる.



585 名前:デフォルトの名無しさん [03/11/18 21:43]
そ、そうなのか。
なんだったんだ。

586 名前:デフォルトの名無しさん mailto:sage [03/11/18 21:44]
夢見すぎ。

587 名前:デフォルトの名無しさん [03/11/18 22:23]
1月にwxWindowsで遊だときは日本語の情報なんてほとんどなかったのに。
ちょっとだけマニュアルを日本語に訳してすぐ挫折した。
すごいよ2ch

そのとき作ったページの一部を編集して6月くらいにアップしてほったらかし。
このスレ見たら元気になったので、更新する気力が湧いてきそう。
www.h3.dion.ne.jp/~k5_n/wxwin/index.html

588 名前:デフォルトの名無しさん mailto:sage [03/11/22 02:52]
GTK,gtkmmでいいじゃん。



589 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/22 06:53]
>>588
 gtkに比べて,wxWindowsはネイティブのLook'n'Feelだとか,多機能だという
違いがある.
 特に機能に関しては,Write once, Compile anywhereを実現するために,
API依存を吸収するラッパクラスが多数存在する.

 その代わりgtkmmに比べて泥臭いコードになるんだけどね(w.wxWindows3に
期待.

590 名前:デフォルトの名無しさん mailto:sage [03/11/22 16:29]
おれも、gtkやQtなどを使ってしまうことに賛成。
どうしても、windowsの操作感を求めるなら、外部だけ作り直してしまった方がいい。

591 名前:デフォルトの名無しさん mailto:sage [03/11/22 21:23]
逆にGTKやQtはwxWindowsに比べてどんな利点があるの?

592 名前:デフォルトの名無しさん mailto:sage [03/11/23 11:44]
www.roebling.de/default.html
どうよ?

593 名前:デフォルトの名無しさん mailto:sage [03/11/27 20:04]
2.4.2で、メッセージカタログをShift_JISで作るとちゃんと使えないみたい。
UTF-8では使えたので、内部での変換でしくってるのか?
2.4.0ではちゃんと使えてたのに……。


594 名前:◆v/.u/aNe9w [03/12/09 01:29]
wxColour と 標準イベント識別子 を翻訳してくれた素敵さん。
wxwindowsjp.sourceforge.jp/docs/html/wx/wx63.htm
wxwindowsjp.sourceforge.jp/docs/html/wx/wx446.htm
ありがのう。


あと、この辺に突っ込んでくれる人がいると誰かが幸せになりそうな気がします。
dot-gray.s33.xrea.com/index.xcg?page=MinGW%A4%D8%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
dot-gray.s33.xrea.com/index.xcg?page=wxRuby%A5%CD%A5%BF



595 名前:デフォルトの名無しさん [03/12/09 18:31]
$B$9$_$^$;$s!"$I$J$?$+65$($F2<$5$$!#(B
$B2?$+D9$$=hM}$r$9$k;~$K!"=hM}$r$7$F$$$k$"$$$@$K(BWindow$B$H$+$,:FIA2h$5$l$J$/$J$C$F(B
$B$7$^$&$N$G$9$,!"$3$l$r=hM}$NESCf$K:FIA2h$5$l$k$h$&$K$7$?$i$I$&$7$?$iNI$$$G$7$g$&$+!#(B
$B%a%$%s%U%l!<%`$N(BRefresh(), Raise(), Update()
$B$H$+$r8F$Y$PNI$$$N$+$H;W$C$?$N$G$9$,!"(B
$B$=$l$G$O:FIA2h$5$l$J$$$h$&$G!D!#(B
GUI$B$N%=%U%H:n$C$?;v$J$s$FKX$IL5$$$N$G$I$N$h$&$J%-!<%o!<%I$G8!:w$7$?$iNI$$$N$+$bJ,$+$i$:!"(B
$B$I$J$?$+%]%$%s%H$@$1$G$bNI$$$N$G65$($F2<$5$$(Bm(_ _)m


596 名前:595 [03/12/09 18:50]
すみません、どなたか教えて下さい。
何か長い処理をする時に、処理をしているあいだにWindowとかが再描画されなくなって
しまうのですが、これを処理の途中に再描画されるようにしたらどうしたら良いでしょうか。
メインフレームのRefresh(), Raise(), Update() とかを呼べば良いのかと思ったのですが、
それでは再描画されないようで…。
GUIのソフト作った事なんて殆ど無いのでどのようなキーワードで検索したら良いのかも分からず、
どなたかポイントだけでも良いので教えて下さいm(_ _)m
すみません>>595バケました。







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

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

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