>>949 ネットにはコンピューター部の素敵な先輩達がたくさんいるじゃないかw
それか自分でゲーム開発ブログでも書けば色々情報は得られると思うぞ。
>>949 そうそう。
まず、「自分がPCで何をしたいか」が決まれば、
後は厭でも色々調べる羽目になるし。
知識なんて勝手に順々につく。
>>949 自分のPCにLinux(X-Windowは無しで)インスコすれば
今からでもそういう環境にめぐりあえるぞ。
実際、そういうコマンドラインオンリーなところで仕事してる奴もいるしな
>>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 ()も使ってみたのですが、再描画されず・・・。
なにかいい方法がありましたら、お知恵を貸してください。
>>956 RECTに再描画すべき範囲だけを指定すればいいんじゃねーか?
958 :
956:2006/04/11(火) 13:40:48
>>957 ありがとうございます。
最大50個の円がデスクトップ全体を動き回るので、おそらく全体を再描画になってしまいそうです。
>>958 再描画が必要なのは、個々の円を囲む矩形の部分だけなのでは?
>>958 意味解らないんだが、円はそんなにでかいのか?
移動先の描画は上書きで良いんだから、再描画すべきは、
移動後にデスクトップが再び見えるようになった部分だけだ。
移動前の矩形と移動後の矩形が解っていれば、計算出来ると思うが?
それと、MSDNちゃんと読んでるか?
RedrawWindow使うより、複数の更新矩形があるなら、
InvalidateRectで突っ込んでWM_PAINTでも放り込む方が
効率的に見えるが。
961 :
956:2006/04/11(火) 15:55:32
>>959 確かにそうですね、全体を再描画した方が手っ取り早いかと思い、そうしていました。
矩形ごとの再描画も試してみたのですが、なぜかうまく再描画されません。
RECTの指定がおかしいのでしょうか・・・。
>>960 円の大きさはまちまちですが、最大でスクリーンの1/4の面積の矩形に納まる程度だと思います。
MSDNは自分なりに読んでいるのですが、読み方が甘いみたいです。
InvalidateRect、早速使ってみました。
スクリーン全体に適用するとやはりチカチカします。
矩形ごとにするとやっぱり裁描画されず・・・。
WM_PAINTというのはメッセージというやつですよね?
まだ早いような気がしてなんとなく避けてたんですが、トライしてみます。
しかしメッセージの送り方がよくわからない・・・パラメータって・・・??
試行錯誤してみます。
962 :
956: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 );
}
宿題はム板にいっぱいあるから適切なの探しな
>>963 そのコードが何をするためのものなのか理解出来ていれば、
入れる文字列なんて自明だとおもうがな。
【何の質問】全般
【プログラミング歴】0
【2ch歴】1年
【職業】Fランク短大1年
【質問】
二年の後期までプログラミング(VB)の勉強が無いみたいなので、お勧めの言語がありましたら教えてください
970 :
WEBデザインしたい人:2006/04/13(木) 23:58:04
【何の質問】?
【プログラミング歴】1年ぐらい
【2ch歴】2年ぐらい
【職業】WEBデザインしたい人
【質問】
現在、趣味で自宅サーバーを立て掲示板レンタルサービスをしようかと思ってるのですが
何から勉強したらいいですか?
自宅サーバーは立てること、一つの掲示板を動かすことはできました。
ユーザー登録パスワード登録などの管理はどの言語でやればいいかわかりません。
教えてください。お願いします。
972 :
WEBデザインしたい人:2006/04/14(金) 01:11:20
>>971 JAVAかぁ〜
ちょっと規模が大きくなるかもしれないのですが
セキュリティーとか大丈夫ですか?
>>972 普通の人がやるならperlやphpなんかで作るよりも簡単にセキュアにできる
974 :
仕様書無しさん:2006/04/14(金) 01:15:24
【何の質問】発表とか、プレゼンテーションとかについて
【プログラミング歴】ほとんどないです
【2ch歴】ながいよー
【職業】学生です
【質問】
都内で、プレゼンテーション技法やコンピューターの本がたくさんある本屋を探しています。
どこに一番多くの本がおいてありますか?
975 :
WEBデザインしたい人:2006/04/14(金) 01:38:15
>>973 ん〜、PHPでつくったんですよね掲示板
PHP+JAVAってできますよね?
>>974 ここプログラム板ですよ
>>974 国会図書館。学生なら調査目的で入れると思うぞ。
セキュアにはできるけどマンドクサいよ。
プログラムってよりは、プロパティの調査だけで終わるような
質問があるんですが、VC++とC++は違うんでしょうか?
いやですね、C++を学習するつもりで本を買ったのですがVC++を買ってました。
C++を学ぶならC++のやつを買いなおした方がいいでしょうか?
>>979 VC++はMSの製品。C++は言語名。
で、WindowsならどうせMS製品使うんだろうし、VC++の本でいいよ。
【何の質問】VB6.0
【プログラミング歴】1ヶ月
【2ch歴】5年ほど
【職業】プログラマー見習い
【質問】
VB6.0でメインメニューを作る際、オプションボタンのような効果を持ったメニューを作るにはどうしたらいいんでしょうか。
IEの「表示→文字のサイズ」みたいな選択式のメニューです。
最大
大
●中 ←こんな感じにしたいのです。
小
最小
>>981 Checked プロパティしかないね。
983 :
981:2006/04/16(日) 17:02:20
>>982 うーん、やはりそうでしたか・・・。
出来ないこともけっこうあるんですねぇ。
ありがとうございました。
見た目の問題ならオーナードローすれば?
超めんどくさいけど
>>983 考え方が逆。
×「VBでは、出来ない事が沢山ある」
○「VBは、仕様の範囲内で素早くアプリを書くツール」
986 :
981:2006/04/16(日) 18:17:54
>>984 オーナーロード、ちょっと調べてみましたが手が出なさそうです。
うーむ、悔しい・・・。
>>985 VBが全ての私なのです。
追々他の言語も勉強していきます。
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からやってもダメ。
これはどうにかならんものでしょうか。
激しくスレ違いな匂いもプンプンですがご容赦を。
990 :
981:2006/04/16(日) 18:52:58
ありがとうございます。
>>987 DLしてみましたが、VB6.0のファイルではないような・・・?
>>988 はい、これは見たんですけど、扱い方が分からず・・・。
メニューに「●」を表示するためだけにこれだけのコードを増やすのもアレなので、
今回は見送ってみます。
いつかメニューアイコンバリバリのソフトでも作りたいですね。
>>989 釣りだと思ってみんな優しくレスは返さないと思うぞ。
>>989 *p=100; ← ここが間違い。
>>990 「メニューアイコンバリバリ」のOCX、既に市販されてないっけ?
>>989 領域とってないポインタを参照したらアカン
最初見ても正しいとしか思えなかった。俺やバいなぁ。
まぁ動かないからいいか。
int* p;
int q;
q = 100;
p = &q;
printf("%p\n%d\n",p,*p);
ポインタの勉強的にはこうなのかな・・。
ポインタの初期化忘れという典型的な(ry
997 :
989:2006/04/16(日) 19:46:36
>>995さんのとおりに
int *p,q;
q=100;
p=&q;
printf("%p\n%d\n",p,*p);
とすると確かに動きました。
しかしいまだに原因は理解できません。
というか
>>993さんの「ポインタの領域を確保する」の意味すらわかりません。
ちょっと本気で出直してこようと思います。
本とかあさってみます。
ありがとうございました。
あ、釣りじゃないですよ?
>>997 int *p;
これは、int へのポインタを格納する変数を宣言した。
宣言しただけなので、まだその値は不定。
*p=100;
これは、その不定のポインタが指すアドレスに、100を代入している。
そもそも、値とそのアドレスを表示したいのに、int * を宣言するのが間違い。
int 変数を宣言して、それとそのアドレス、って事で & を使うべき。
それが
>>995 ね。
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`)ノ 知ったかぶりしてみました。
>いきなり int* p; p=100; というのは、メモリの中身を破壊してるのと同じ。
修整。 int* p; *p=100; ね。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。