【ルールは】超初心者が質問するスレ【守れ】

このエントリーをはてなブックマークに追加
952仕様書無しさん:2006/04/10(月) 05:28:48
>>949 ネットにはコンピューター部の素敵な先輩達がたくさんいるじゃないかw
それか自分でゲーム開発ブログでも書けば色々情報は得られると思うぞ。
953仕様書無しさん:2006/04/10(月) 09:23:35
>>949
そうそう。
まず、「自分がPCで何をしたいか」が決まれば、
後は厭でも色々調べる羽目になるし。
知識なんて勝手に順々につく。
954仕様書無しさん:2006/04/10(月) 10:23:57
>>949 自分のPCにLinux(X-Windowは無しで)インスコすれば
今からでもそういう環境にめぐりあえるぞ。
実際、そういうコマンドラインオンリーなところで仕事してる奴もいるしな
955仕様書無しさん:2006/04/11(火) 02:32:19
>>954
よく解らないが、LinuxにXを入れ無い事がGUI無しでコマンドラインオンリーな環境だと勘違いしてないか?
Unix系OSに関して言えば、コマンドラインからは抜けられないよ

そもそも、GUIだろうが何だろうが、とりあえずソースを手に入れて、インストールして気に入らない所があったら
ソースを自分で直していくってのがUnixの文化
956仕様書無しさん:2006/04/11(火) 13:33:09
【何の質問】VB6.0
【プログラミング歴】1ヶ月
【2ch歴】5年ほど
【職業】プログラマー見習い
【質問】
デスクトップ(スクリーン全体ではなく、最背面のウィンドウ。壁紙が表示されてるところ)に、
円を表示してそれを動かすようなプログラムを作っています。
方法はまずスクリーンと同じ大きさのVisible=FalseなピクチャボックスにCircleメソッドで円を描き、
マスク処理を施してBitbltを使ってデスクトップに合成しています。
それをVBのタイマーで動かすんですが、前に描いた円を消すために
デスクトップの再描画を試しているのですが、どうにもうまくいきません。
再描画にはRedrawWindow()を使って、以下のように記述しています。

Call RedrawWindow(hWnd, RECT, 0&, RDW_ERASE Or RDW_INVALIDATE Or RDW_UPDATENOW)

RECTの値はスクリーンの大きさを指定しています。
再描画はされたのですが、これだとデスクトップにあるアイコンや円自体がチカチカしてしまって、失敗でした。
フラグもいろいろな組み合わせを試してみたのですが、うまくいきません。
UpdateWindow ()も使ってみたのですが、再描画されず・・・。

なにかいい方法がありましたら、お知恵を貸してください。
957仕様書無しさん:2006/04/11(火) 13:34:48
>>956
RECTに再描画すべき範囲だけを指定すればいいんじゃねーか?
958956:2006/04/11(火) 13:40:48
>>957
ありがとうございます。
最大50個の円がデスクトップ全体を動き回るので、おそらく全体を再描画になってしまいそうです。
959仕様書無しさん:2006/04/11(火) 14:26:28
>>958
再描画が必要なのは、個々の円を囲む矩形の部分だけなのでは?
960仕様書無しさん:2006/04/11(火) 14:46:22
>>958
意味解らないんだが、円はそんなにでかいのか?
移動先の描画は上書きで良いんだから、再描画すべきは、
移動後にデスクトップが再び見えるようになった部分だけだ。
移動前の矩形と移動後の矩形が解っていれば、計算出来ると思うが?

それと、MSDNちゃんと読んでるか?
RedrawWindow使うより、複数の更新矩形があるなら、
InvalidateRectで突っ込んでWM_PAINTでも放り込む方が
効率的に見えるが。
961956:2006/04/11(火) 15:55:32
>>959
確かにそうですね、全体を再描画した方が手っ取り早いかと思い、そうしていました。
矩形ごとの再描画も試してみたのですが、なぜかうまく再描画されません。
RECTの指定がおかしいのでしょうか・・・。

>>960
円の大きさはまちまちですが、最大でスクリーンの1/4の面積の矩形に納まる程度だと思います。
MSDNは自分なりに読んでいるのですが、読み方が甘いみたいです。
InvalidateRect、早速使ってみました。
スクリーン全体に適用するとやはりチカチカします。
矩形ごとにするとやっぱり裁描画されず・・・。

WM_PAINTというのはメッセージというやつですよね?
まだ早いような気がしてなんとなく避けてたんですが、トライしてみます。
しかしメッセージの送り方がよくわからない・・・パラメータって・・・??

試行錯誤してみます。
962956:2006/04/11(火) 15:59:19
パラメータ、なにやら書いてありますね・・・でもよくわからん・・・。
963お願いします:2006/04/11(火) 16:06:47
以下 ????? の部分に正しいキーワードを入れてプログラムを作ってみてください.作成したプログラムを ex0.c として保存し,レポートに添付しましょう.
/* 個人情報入力表示プログラム */
#include <stdio.h>
#include <string.h> /* strcpy 用 */

/* 定数の定義 */
#define ACCOUNT_MAX 20
#define DOMAIN_MAX 50
#define NAME_MAX 20
#define ADDRESS_MAX 50

?????? tagEmail {
char account[ACCOUNT_MAX];
char domain[DOMAIN_MAX];
};

struct tagPersonalData {
char name[NAME_MAX];
int emailnum;
?????? ???????? public_email;
?????? ???????? personal_email;
int call;
};

/* プロトタイプ宣言 */
void set_personal_data(struct tagPersonalData *);
void show_personal_data(stract tagPersonalData *);

int main(void) {
struct tagPersonalData user;

964お願いします:2006/04/11(火) 16:07:32
/* show_personal_data の引数指定に注意しましょう.上のプログラムとは違いますよ */
set_personal_data(?????); /* 構造体にデータを入れる */
show_personal_data(?????); /* 入れたデータの表示 */

return 0;
}

/* 名前,メールアドレス,内線番号の入力 */
void set_personal_data(struct tagPersonalData *p_user) {
strcpy( (*p_user).name, "Satoru Kogure"); /* 自分の名前に変えましょう */

strcpy( (*p_user).public_email.account, "kogure"); /* 自分の大学のメールアドレスに変えましょう */
strcpy( (*p_user).public_email.domain , "inf.shizuoka.ac.jp");

965お願いします:2006/04/11(火) 16:09:01
/* ここを作ります(近年の個人情報状況を考え,レポート提出時にはここには実在のメールアドレスは入れないでください) */
/* アカウント名は自分の名前(名前のローマ字先頭一文字+名字のローマ字表記) */
/* ドメインは,xxx.docomo.ne.jp か xxx.ezweb.ne.jp か xxx.c.vodafone.ne.jp とか,
xxx.google.com とか自分で適当に作成してください */
/* 構造体 (*p_user) のメンバ personal_email のメンバ account, domain
にそれぞれ,"アカウント名", "ドメイン名" をコピーします
上の public_email を参考にしてください */

(*p_user).call = 1477;
}

/* 名前,メールアドレス,内線番号の出力 */
void show_personal_data(struct tagPersonalData *p_user) {
printf("----- Personal Data ------\n");
printf("Name : %s\n", (*p_user).name );

printf("public_email: %s@%s\n", (*p_user).public_email.account, (*p_user).public_email.domain);
/* 個人用のメールアドレスを表示してください */

printf("call : %d\n", (*p_user).call );
}

966仕様書無しさん:2006/04/12(水) 03:21:00
宿題はム板にいっぱいあるから適切なの探しな
967仕様書無しさん:2006/04/12(水) 20:11:22
>>963
そのコードが何をするためのものなのか理解出来ていれば、
入れる文字列なんて自明だとおもうがな。
968仕様書無しさん:2006/04/13(木) 23:33:13
【何の質問】全般
【プログラミング歴】0
【2ch歴】1年
【職業】Fランク短大1年
【質問】
二年の後期までプログラミング(VB)の勉強が無いみたいなので、お勧めの言語がありましたら教えてください
969仕様書無しさん:2006/04/13(木) 23:48:46
>>968
っC#.NET&Java
970WEBデザインしたい人:2006/04/13(木) 23:58:04
【何の質問】?
【プログラミング歴】1年ぐらい
【2ch歴】2年ぐらい
【職業】WEBデザインしたい人
【質問】
現在、趣味で自宅サーバーを立て掲示板レンタルサービスをしようかと思ってるのですが
何から勉強したらいいですか?
自宅サーバーは立てること、一つの掲示板を動かすことはできました。
ユーザー登録パスワード登録などの管理はどの言語でやればいいかわかりません。
教えてください。お願いします。
971仕様書無しさん:2006/04/14(金) 00:34:04
>>970
Java
972WEBデザインしたい人:2006/04/14(金) 01:11:20
>>971
JAVAかぁ〜
ちょっと規模が大きくなるかもしれないのですが
セキュリティーとか大丈夫ですか?
973仕様書無しさん:2006/04/14(金) 01:13:46
>>972
普通の人がやるならperlやphpなんかで作るよりも簡単にセキュアにできる
974仕様書無しさん:2006/04/14(金) 01:15:24
【何の質問】発表とか、プレゼンテーションとかについて
【プログラミング歴】ほとんどないです
【2ch歴】ながいよー
【職業】学生です
【質問】
都内で、プレゼンテーション技法やコンピューターの本がたくさんある本屋を探しています。
どこに一番多くの本がおいてありますか?

975WEBデザインしたい人:2006/04/14(金) 01:38:15
>>973
ん〜、PHPでつくったんですよね掲示板
PHP+JAVAってできますよね?

>>974
ここプログラム板ですよ
976仕様書無しさん:2006/04/14(金) 09:27:23
>>974
秋葉原のLAOXコンピュータ館
977仕様書無しさん:2006/04/14(金) 16:09:28
>>974 国会図書館。学生なら調査目的で入れると思うぞ。
978仕様書無しさん:2006/04/15(土) 01:59:48
セキュアにはできるけどマンドクサいよ。
プログラムってよりは、プロパティの調査だけで終わるような
979仕様書無しさん:2006/04/15(土) 22:24:06
質問があるんですが、VC++とC++は違うんでしょうか?
いやですね、C++を学習するつもりで本を買ったのですがVC++を買ってました。
C++を学ぶならC++のやつを買いなおした方がいいでしょうか?
980仕様書無しさん:2006/04/15(土) 22:50:30
>>979
VC++はMSの製品。C++は言語名。
で、WindowsならどうせMS製品使うんだろうし、VC++の本でいいよ。
981仕様書無しさん:2006/04/16(日) 16:21:08
【何の質問】VB6.0
【プログラミング歴】1ヶ月
【2ch歴】5年ほど
【職業】プログラマー見習い
【質問】
VB6.0でメインメニューを作る際、オプションボタンのような効果を持ったメニューを作るにはどうしたらいいんでしょうか。
IEの「表示→文字のサイズ」みたいな選択式のメニューです。

最大

●中 ←こんな感じにしたいのです。

最小
982仕様書無しさん:2006/04/16(日) 16:56:56
>>981
Checked プロパティしかないね。
983981:2006/04/16(日) 17:02:20
>>982
うーん、やはりそうでしたか・・・。
出来ないこともけっこうあるんですねぇ。
ありがとうございました。
984仕様書無しさん:2006/04/16(日) 17:16:44
見た目の問題ならオーナードローすれば?
超めんどくさいけど
985仕様書無しさん:2006/04/16(日) 17:27:07
>>983
考え方が逆。
×「VBでは、出来ない事が沢山ある」
○「VBは、仕様の範囲内で素早くアプリを書くツール」
986981:2006/04/16(日) 18:17:54
>>984
オーナーロード、ちょっと調べてみましたが手が出なさそうです。
うーむ、悔しい・・・。

>>985
VBが全ての私なのです。
追々他の言語も勉強していきます。
987仕様書無しさん:2006/04/16(日) 18:29:20
988仕様書無しさん:2006/04/16(日) 18:30:39
989仕様書無しさん:2006/04/16(日) 18:51:45
【何の質問】macでC xcode
【プログラミング歴】ほんわか
【2ch歴】1年
【職業】学生
【質問】
右の環境での話です。MacOSX10.4.6 Xcode 2.0

mac上でCの学習をしているのですが、ポインタがうまく動かず困っております。
具体的には

#include <stdio.h>
int main(){
int *p;
printf("%p\n%d\n",p,*p);
return 0;
}

ならば問題なく実行できるのですが、これを

#include <stdio.h>
int main(){
int *p;
*p=100;
printf("%p\n%d\n",p,*p);
return 0;
}

のようにすると、途端にうまくいかんのですよ。
100は表示されず、システムバスエラー云々と出る。terminalからやってもダメ。
これはどうにかならんものでしょうか。
激しくスレ違いな匂いもプンプンですがご容赦を。
990981:2006/04/16(日) 18:52:58
ありがとうございます。

>>987
DLしてみましたが、VB6.0のファイルではないような・・・?

>>988
はい、これは見たんですけど、扱い方が分からず・・・。
メニューに「●」を表示するためだけにこれだけのコードを増やすのもアレなので、
今回は見送ってみます。
いつかメニューアイコンバリバリのソフトでも作りたいですね。
991仕様書無しさん:2006/04/16(日) 18:54:38
>>989 釣りだと思ってみんな優しくレスは返さないと思うぞ。
992仕様書無しさん:2006/04/16(日) 19:03:57
>>989
*p=100; ← ここが間違い。

>>990
「メニューアイコンバリバリ」のOCX、既に市販されてないっけ?
993仕様書無しさん:2006/04/16(日) 19:12:23
>>989
領域とってないポインタを参照したらアカン
994仕様書無しさん:2006/04/16(日) 19:15:43
>>989
おまえは三田典玄か!
995仕様書無しさん:2006/04/16(日) 19:26:26
最初見ても正しいとしか思えなかった。俺やバいなぁ。
まぁ動かないからいいか。

int* p;
int q;

q = 100;
p = &q;

printf("%p\n%d\n",p,*p);

ポインタの勉強的にはこうなのかな・・。
996仕様書無しさん:2006/04/16(日) 19:40:10
ポインタの初期化忘れという典型的な(ry
997989:2006/04/16(日) 19:46:36
>>995さんのとおりに

int *p,q;
q=100;
p=&q;
printf("%p\n%d\n",p,*p);

とすると確かに動きました。
しかしいまだに原因は理解できません。

というか>>993さんの「ポインタの領域を確保する」の意味すらわかりません。

ちょっと本気で出直してこようと思います。
本とかあさってみます。
ありがとうございました。

あ、釣りじゃないですよ?
998仕様書無しさん:2006/04/16(日) 19:55:44
>>997
int *p;
これは、int へのポインタを格納する変数を宣言した。
宣言しただけなので、まだその値は不定。

*p=100;
これは、その不定のポインタが指すアドレスに、100を代入している。

そもそも、値とそのアドレスを表示したいのに、int * を宣言するのが間違い。
int 変数を宣言して、それとそのアドレス、って事で & を使うべき。
それが >>995 ね。
999仕様書無しさん:2006/04/16(日) 20:05:32


int *p;

このpはint型のアドレスを記憶する記憶領域の宣言。

これを printf("%p",p); で見ると、pに最初にはいっている不定な値が読めるはず。
この不定な値は、ほかのプログラムの記憶領域だったり、存在しないアドレスだったりする。


だからポインタは初期化しないとだめ。
p=0x00; はいわゆる「ぬるぽ」 p=NULLとも書ける場合もある。

int q; p=&q; と書くと、プログラム専用のメモリ領域のqが確保される。
qの値は不定だけど、qのアドレスは実行時に正しく割り当てられる。

そこで、 p=&q; とメモリqのアドレスをpに代入して、pに現実的なアドレスを渡す。
printf("%p = %p",p,&q); としてみよう。同じのはず。

当然ながら printf("%d = %d",*p,q); と同じアドレスの中身は同じ値。

いきなり int* p; p=100; というのは、メモリの中身を破壊してるのと同じ。
だからCは危険。だけど便利。



('A`)ノ 知ったかぶりしてみました。
1000仕様書無しさん:2006/04/16(日) 20:06:59

>いきなり int* p; p=100; というのは、メモリの中身を破壊してるのと同じ。

修整。 int* p; *p=100;  ね。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。