外出自粛中でも楽しく過ごす!QAまとめ>>

C++でゲームを作りたいと思っているのですが、C言語はあるていどは分かるのですがC++はまったくやったことがありません。
そこで質問ですが、「ubuntuでC++のGUIプログラム」は作れるのでしょうか?
WindowsとLinux系OS(Ubuntu)の両方で開発できるのが理想です。
初心者なので質問が上手くありませんが、答えていただければ幸です。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

GUI自体はC++で使える、となるとwxWidgetが良いのではないでしょうか?これはSynapticで入手可能です。



wxWidgets:
http://www.wxwidgets.org/

これでデザインしていけば、C++のコードを吐いてくれます。API呼び出しもその環境にあったものをラップしてくれるんで、メンド臭い事考えなくって良いでしょう。
解説記事は以下のものが有用だと思います。

wxWidgets でクロスプラットフォーム GUIアプリを作ろう:
http://0xcc.net/pub/uu-2004-08/

実際、C++でどうやってGUIアプリを作っていくか解説してくれているんで、参考になるでしょう。
    • good
    • 1
この回答へのお礼

ありがとうございます。
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
がとてもわかりやすいです。すぐ呼んで、実践したとおもいます。

お礼日時:2009/02/05 14:47

> 「ubuntuでC++のGUIプログラム」は作れるのでしょうか?



できます。

> WindowsとLinux系OS(Ubuntu)の両方で開発できるのが理想です。

Ubuntu向けのプログラムをWindowsでも開発したいという意味でしょうか?
WindowsでもUbuntuでも動くプログラムを開発したいという意味でしょうか?

この回答への補足

言葉足らずですみません。後者の
「WindowsでもUbuntuでも動くプログラムを開発したい」
と言う意味です。

補足日時:2009/02/05 11:06
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qcでなぜguiアプリが作成出来るのか。

cでなぜguiアプリが作成出来るのか。

現在cについて学習中です。
テキストエディタで書きターミナルで実行しています。
cではアプリが作れるようになるといいますが
現在のままではcuiのソフトしかできる気がしません。

一般的に言われるアプリケーションというものを
作成するにはまた別の手段が必要なのでしょうか。

Aベストアンサー

C言語の標準関数では出来ませんね。
Windowsであれば、WindowsAPIと言う関数群を使ってウィンドウを作成したり、ウィンドウをコントールする事が出来ます。
昔のMS-DOS時代であれば、直接VRAM(画像メモリ)をポインタで操作出来ましたので、VRAMに直接書いていました。

WindowsAPIについて紹介しておきます。
「Win32 API入門」Win32は、WindowsAPIの32bit版と言う意味です。
http://wisdom.sakura.ne.jp/system/winapi/index.html
C言語の知識としては、ポインタから構造体まで使いますので初心者にはムチャクチャ難しいです。CUIが自在に組める人でも挫折者がいますからね。

そうそう、CUIでもこのぐらいは出来るよと言う例も書いときますね。
http://hp.vector.co.jp/authors/VA016117/cprog/index.html
参考にしてください。

QGetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・

お世話になっています。

iniファイルを読込み、各変数に代入するC言語のDLLを作成したいのです。
このサイトの投稿や、MSDNなどにも載っていたのですが、
少し理解に苦しみます。

現在まで、理解した点がwindows.hのインクルードを
記述するところ辺りです。
iniファイルは下記のようなレイアウトです。

---<mst.ini>----------------------------
[user]
name=username
ID=userid
[pc]
pcname=FMV
----------------------------------------

#include<windows.h>は記述することまでは
分かりましたが、以下から進みません。。。

GetPrivateProfileString("")

初心者で申し訳ありませんが、お助け願います。

Aベストアンサー

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
                sizeof(strBuf),   // 上記のエリアのサイズ
                "mst.ini" );     // iniファイル名

解説:
iniファイル名をフルパスで指定しないとWindowsのディレクトリにあるものと判断されます。
Win9xなら「c:\windows」、WinNT系なら「c:\WinNT」。

[user]セクションのnameキーがないときは、デフォルト値で指定した値が設定させます。

復帰値「dwLen」は実際に設定した値(文字列)の長さが返されます。

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
             ...続きを読む

QDWORDの実際の型は何でしょうか

VC++.NETの環境です。
DOWRD dw1 = 1;
int i = 2; と定義し
ここで
if ( i > dw1 ){
何かの処理;
}
とコーディングすると
warning C4018: '>' : signed と unsigned の数値を比較しようとしました。
のワーニングがでます。
これは、DWORDがint型でなくunsigned int型のようにも見えます。
ある本によれば(VC++.V.NET逆引き大全500の極意)
DWORD はint型であると記述されています。
もし、int型ならこのワーニングはでないはずなのですが、
なぜでるのでしょうか。又、DWORDの実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

Aベストアンサー

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。
DWORD型はwindef.hで
"typedef unsigned long DWORD;"
と宣言されています。

Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QJDialogの×(閉じる)ボタン

JDialogの右上に付いている×(閉じる)ボタンを
使用可能にしたり、使用不可能にしたいのですが、
setEnabled(false)やsetClosable(false)みたいな、
コマンドは無いのでしょうか?

または、×(閉じる)ボタンを出さない方法でも
よいので教えてください。

宜しくお願いします。

Aベストアンサー

javax.swing.JDialog#setDefaultCloseOperation()
を使います。

引数はjavax.swing.WindowConstantsの。。。

・HIDE_ON_CLOSE
・DISPOSE_ON_CLOSE
・DO_NOTHING_ON_CLOSE

のいずれかの定数を用います。
動作の違いはWindowConstantsのAPIをご覧下さい。

QC言語で、メモリを解放しないで終わるプログラム

C言語の話です。

mallocなどで領域を確保したら、解放しなければいけないんですよね。
しかし、解放しないで終了すると具体的にどうなるのか、私は理解していません。

次のような、freeしないプログラムを作って何回か実行してみました。しかし、別におかしくならないですね。


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *cp;

int main(void)
{
unsigned int n;

printf("サイズ(2以上)を入力してください:");
scanf("%d",&n);

cp=malloc(n);
if(!cp)
{
printf("%s\n","mallocできませんでした。");
return(1);
}

strcpy(cp,"A");
printf("cpは%sです。\n", cp);

printf("それでは終わりにします\n");

return(0);
}


グローバルでcharの固定長の配列を宣言したとすれば、プログラムの終了時にその領域は解放されると思います。

このような固定長の配列の場合とmallocの場合との違いが問題なんです。

 実験的に、解放しないがために何かおかしくなってしまったり、悪影響を及ぼしたりするようなプログラムを作りたいんですが、どのようにすればよいでしょうか。

もしも私の環境ではそのようなプログラムが作れないなら、別の環境の話でもよいので具体的にこんなふうになってしまうという話をお聞きしたいんです。


過去の質問を検索してみました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=160037
ここのNo.9では、「freeしないアプリケーションの起動・終了を繰り返すと、リソースが不足する」旨が書かれていて、質問者の方もそれで納得されているようです。
しかし、私は、リソースが不足するとはどういうことで、何が起こるのか、知りません。

私のマシン
OS:Windows98SE
VC++6.0

C言語の話です。

mallocなどで領域を確保したら、解放しなければいけないんですよね。
しかし、解放しないで終了すると具体的にどうなるのか、私は理解していません。

次のような、freeしないプログラムを作って何回か実行してみました。しかし、別におかしくならないですね。


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *cp;

int main(void)
{
unsigned int n;

printf("サイズ(2以上)を入力してください:");
scanf("%d",&n);

cp=malloc(n);
if(!cp)
{...続きを読む

Aベストアンサー

書き忘れましたのでもう一度。

malloc/freeを1セットで考えている人がいるようですが、「プログラム終了時にすべてをfreeする」なんていう処理は愚の骨頂です。

malloc/freeはマンションの内装工事のようなものです。
mallocは次の入居者のために内装工事を行います。
freeは次の入居者のための回復工事です。
マンション自体の取り壊し(=プログラムの終了)が行われる寸前に回復工事の必要はありません。

動的メモリ領域を10000個くらい確保して、freeして終了する場合とfreeせずに終了する場合を比べてみてください。
プログラム終了寸前にfreeするのは無駄以外の何者でもありません。

QcharからLPTSTRへの変換方法

リストコントロールにchar型の変数の値を数値として表示させたいのですが、charからLPTSTRへの洗練された変換方法がよくわからないです。

char tempChar;
CString tempString;
tempString.Format("%s", tempChar);
LPTSTR lpsz = new TCHAR[tempString.GetLength()+1];
_tcscpy(lpsz, tempString);

こんなプログラムを考えてみたのですが、汚いような気がします。もっと簡単で洗練された変換方法はないのでしょうか?

Aベストアンサー

wsprintfを使ってはどうでしょうか?

char tmpChar = 100;//表示する数値
TCHAR buf[5];
wsprintf(buf, "%d", tempChar);

QLinux、Windows共通で使えるGUI

CベースのGUIコンポーネントで、Javaのように一度書いたソースがWindows、Linuxの区別なく動作するものはあるのでしょうか?
http://atsu.hp.infoseek.co.jp/prog/gtkwin.html
上記ページではGTK+がWindows上で動くと紹介していますが、安定性に欠けるとありためらってしまいます。

Aベストアンサー

http://www.widestudio.org/ja/
LinuxやWinodwsなんかのプラットフォームを
選ばない環境ならWideStudioを奨めます。

参考URL:http://www.widestudio.org/ja/

Qint型からchar型への変換

タイトル通り、int型からchar型への変換の仕方がわかりません!><
どうしたらいいのでしょうか?

Aベストアンサー

#include <stdio.h>


char buf[5];
int no;

no = 10;
sprintf(buf, "%d", no);


人気Q&Aランキング