俺のC言語勉強日記

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
とりあえずC言語勉強するから記録してくね。
2デフォルトの名無しさん:2008/06/18(水) 14:11:56
─── 始めてきた方への注意 ───────

このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。        
                       
アイと研究員とのやり取りに利用するスレッドなので
関係者以外は書きこまないで下さい。       
                               
                      霊長類研究所
3デフォルトの名無しさん:2008/06/18(水) 14:16:16
ちょwwww
41 ◆DqtNhxxBr6 :2008/06/18(水) 14:21:45
トリテスト
51 ◆Tje8EF4GWs :2008/06/18(水) 14:24:33
トリップテスト。
さてまずHello worldからだよね。
61 ◆DqtNhxxBr6 :2008/06/18(水) 14:25:38
まずは俺のフェニックス初号機のスペック

OS:Linux
ディストリ:Mandriva Linux
CPU:Pen4 1.8G
Mem:775MB
gcc:4.2.3

こんな感じかな
7アイ:2008/06/18(水) 14:25:50
○ 始めてきた方への注意
× 初めてきた方への注意
81 ◆Tje8EF4GWs :2008/06/18(水) 14:29:02
あんた誰?
あんたが俺ならハード仕様でなくまずこの板的にプログラムソースを出すよ。
91 ◆DqtNhxxBr6 :2008/06/18(水) 14:38:26
とりえあずHelloWorldはもう完了してたんだよね。

1 #include <stdio.h>
2
3 int main () {
4 >---printf("Hello World!\n");
5 >---return 0;
6 }

ちなみにエディタはVim7
10アイ:2008/06/18(水) 22:02:07
#gcc hello.c
#./a.out
11デフォルトの名無しさん:2008/06/18(水) 22:29:41
コンバトラは何使ったらいいですか??
12デフォルトの名無しさん:2008/06/18(水) 23:08:32
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
131 ◆DqtNhxxBr6 :2008/07/01(火) 07:36:47
10/3やって3.3333ってやりたいんだができん
14デフォルトの名無しさん:2008/07/01(火) 07:46:19
ふぅできた

1 #include <stdio.h>
2
3 int main (){
4 >---int intImp = 10;
5 >---int intClk = 3;
6
7 >---double dblAns;
8
9 >---dblAns = (double) intImp / intClk;
10
11 >---printf("%f\n",dblAns);
12 >---return 0;
13 }
151 ◆DqtNhxxBr6 :2008/07/01(火) 09:19:06
1 #include <stdio.h>
2 #include <math.h>
3
4 /**********************************
5 * コサインカーブ
6 **********************************/
7
8 int main () {
9 >---int i, j, genbun = 5;
10 >---double rad, cosvalue, pai = 3.14;
11
12 >---//create header
13 >---printf("角度\tcos値\tイメージ\n");
14 >---for ( i = 0; i < 60; i++) {
15 >--->---printf("-");
16 >---}
17
18 >---for ( i = 90; i >= 0; i -= genbun ) {
19 >--->---rad = ( pai * i) / 180;
20 >--->---cosvalue = cos(rad);
21 >--->---printf("\n%2d\t%f ", i, cosvalue);
22 >--->---for ( j = 1; j <= (int)(cosvalue * 40); j++) {
23 >--->--->---printf("*");
24 >--->---}
25 >---}
26 >---printf("\n");
27 >---return 0;
28 }
16デフォルトの名無しさん:2008/07/01(火) 11:55:22
日記にソース貼りつけるの?
Tabみにくいからファイルうpの方がいいと思うよ
171 ◆DqtNhxxBr6 :2008/07/01(火) 17:48:55
>>16
基本しかやってないからファイルうpはいいや。
数百、数千行レベルになったらする。

----今日のメモ-----
メモリには1バイト(8ビット)づつ番地が割り振られている。
1番地=1バイト=8ビット=256通りの情報
100番地に154を置くということは、100番地のメモリを10011010にするということ。

2バイト使用すると256×256=65536通りの情報を扱える。

size of char = 1 バイト
size of short = 2 バイト
size of int = 4 バイト
size of unsigned int = 4 バイト
size of float = 4 バイト
size of double = 8 バイト
size of long double = 12 バイト
size of size_t = 4 バイト

181 ◆DqtNhxxBr6 :2008/07/01(火) 17:49:28
----今日のメモ2-----

各変数を宣言するとメモリ情報に上記分の番地が確保される。
int の場合は4バイトなので番地が4つ分。

変数の頭に&をつけるとアドレスになる。 a → &a
配列の名前は配列の先頭アドレスになる。 a[] → aがアドレス
アドレスとprintfするときは%pをする。

ポインタへはアドレスを代入する。
アドレスの値を参照するには*を着ける。
配列の先頭アドレスが代入されたポインタは*(p + 1)で要素の値を参照できる。
(○○型のポインタに1加えることは、○○型の大きさだけアドレスを1つ進める。)
a[n] = *(a+n)

文字は数値である。
文字列の式の値は先頭のアドレスになる。
文字列の最後は\0で終わる。
19デフォルトの名無しさん:2008/07/01(火) 18:45:39
char1バイト以外の変数のサイズは環境依存な
201 ◆DqtNhxxBr6 :2008/07/01(火) 22:09:27
>>19
らしいね。コンパイラによって違ってくるってどっかのサイトにあった。

//ボインタの理解
1 #include <stdio.h>
2
3 int main () {
4
5 >---int intA;
6 >---int *pintA;
7
8 >---pintA = &intA;
9
10 >---printf("%p\n",&intA);
11 >---printf("%p\n",pintA);
12
13 >---return 0;
14 }

結果
0xbf8ab7dc
0xbf8ab7dc

同じアドレスが入ってる。
211 ◆DqtNhxxBr6 :2008/07/01(火) 22:13:55
//ポインタを使った値の参照
1 #include <stdio.h>
2
3 int main () {
4
5 >---int intA;
6 >---int *pintA;
7
8 >---intA = 10;
9
10 >---pintA = &intA;
11
12 >---printf("%d\n",intA);
13 >---printf("%d\n",*pintA);
14
15 >---return 0;
16 }
22デフォルトの名無しさん:2008/07/01(火) 22:23:58
1 #include <stdio.h>
2
3 //ポインタ変数へ値を代入する
4 int main () {
5
6 >---int intA;
7 >---int *pint;
8
9 >---intA = 10;
10
11 >---pint = &intA; //アドレスを代入しないとコンパイルエラーになる
12
13 >---*pint = 20;
14
15 >---printf("%d\n",*pint);
16
17 >---return 0;
18 }

結果
20
23デフォルトの名無しさん:2008/07/01(火) 22:30:41
そろそろアラインメントについても勉強しときなさい
241 ◆DqtNhxxBr6 :2008/07/01(火) 23:31:39
>>23
アラインメント?(・ω・)??って思ってググったら速攻で思考停止したw

大まかな流れで
ポインタ・構造体・共有体の理解

ファイルの入出力

Linuxプログラミング

ネットワークプログラミング

今までの成果を元にWEBアプリを開発

日本中でヒット

中国・韓国でもヒット

日・中・韓のネットユーザーが友好的な関係になる

ってスケジュールになってるからアラなんとかはもう少し後だね。
25デフォルトの名無しさん:2008/07/01(火) 23:48:41
今までの成果を元にWEBアプリを開発

日本中でヒット

あたりからのスケジュールが急に壮大
26デフォルトの名無しさん:2008/07/04(金) 05:03:02
>>1みたいな糞スレをたてるのだけが生き甲斐の人生なら
死んだほうがましだな
27デフォルトの名無しさん:2008/07/05(土) 17:55:27
>>26
とりあえず通報してみました。
28デフォルトの名無しさん:2008/07/07(月) 22:59:45
日記というのなら、毎日書きなさい
29デフォルトの名無しさん:2008/07/07(月) 23:13:26
飽きたんだろ
漏れもよく飽きる
30デフォルトの名無しさん:2008/12/26(金) 12:31:51
俺も始めたばかりだからこのスレおさらいになって勉強になる
毎日書いて
31デフォルトの名無しさん:2008/12/26(金) 16:58:27
>>30
失せろ
32デフォルトの名無しさん:2008/12/26(金) 18:24:30
>>31
あぁんひどい...
33デフォルトの名無しさん:2008/12/28(日) 17:51:14
ヒットするような企画持ってるならコードは誰かに書いてもらおうぜ
>>1はお勉強に飽きちゃったんだからよぉ
34デフォルトの名無しさん:2009/01/07(水) 22:44:53
while(1){
printf(">>33\nお前が書け");

if(>>33が書く)
break;
}
35デフォルトの名無しさん:2009/01/26(月) 14:45:43
俺がこの手のスレ立てたら3日で規制&スレスト入ったけどな
36デフォルトの名無しさん:2009/02/02(月) 06:49:52
>>34のおかげでbreak文がわかりました。本当にありがとうございました(笑)
37デフォルトの名無しさん:2009/02/14(土) 17:30:18
>>1の超絶成長日記「初めての○○編」

2009年2月14日
C言語の本を開いた「ドサリッ」
重い、これが「サルでも分かるC言語入門書」の重みか…
ま、気を取り直してページを開いてみる、「ようこそC言語の世界へ!ここれはまず…
長い!果てしなく長い、前書きですでに眠くなってきた、今夜はもう寝よう、ホコリをかぶりし棚の飾りにならぬよう
38デフォルトの名無しさん:2009/03/09(月) 16:39:25
9ヶ月ぶりに再会しますね。^^

//アドレス計算について
//各型のアドレスに数字を加算するとその型のバイト分だけアドレスが加算される。
//例えばint型に+1は4バイト
#include <stdio.h>

int main (int argc, const char * argv[]) {
int a = 10;
printf("%p\n",&a);
printf("%p\n",&a + 1); //アドレス先の中の値は関係なく、ただアドレスの移動計算をしている
printf("%p\n",&a + 2); //*を使ってアドレスの中の値を参照する事ができる。
}
0xbffff79c
0xbffff7a0
0xbffff7a4
39デフォルトの名無しさん:2009/03/09(月) 20:29:26
intのサイズは環境依存。
40デフォルトの名無しさん:2009/03/11(水) 01:12:06
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
41デフォルトの名無しさん:2009/03/19(木) 03:24:37
ミクと学ぶC言語
42デフォルトの名無しさん:2009/03/22(日) 15:54:10
なんぞこのスレwww
4343 ◆2X9IMiA40A :2009/09/28(月) 18:13:01
このスレ俺の日記にするぜ
環境は
OS:windowsXP
CPU:C2D E5200
Mem:2GB
4443 ◆2X9IMiA40A :2009/09/28(月) 18:16:02
とりあえずウィンドウハンドルを取得してメモ長に文字列表示というものを作りたい
ウインドウハンドルの取得方法はよく分からないので一番簡単な物を使う

WindowFromPoint関数だ。これは指定した座標のウィンドウのハンドルを手に入れるという
サルでも分かる関数だ
他は良く分からなかった
4543 ◆2X9IMiA40A :2009/09/28(月) 18:16:45
SendMessageAと組み合わせて何とかするようだが良く分からない
寝よう。
いや、がんばろう
4643 ◆2X9IMiA40A :2009/09/28(月) 18:17:46
47デフォルトの名無しさん:2009/09/28(月) 18:47:37
目的があるのはモティベーションの為にはいいのだろうけど、
ことプログラミングに関しては基礎知識なしにあれこれ抓み食いしても成果は得られないと思うぞ。
つーか、VBとCが混じってるじゃねぇか。おまけに、まともに説明する気のないサイト見てどうすんだ?
4843 ◆2X9IMiA40A :2009/09/28(月) 21:32:31
俺はこれを作りたくて作りたくて仕方がないんだ。
しかし別の言語はさすがにダメだな。まぁいいかな

今までの生産物は
VB・・ライフゲーム
C++、DXライブラリ・・ブロック崩し
以上
4943 ◆2X9IMiA40A :2009/09/29(火) 10:41:15
LRESULT SendMessage(
HWND hWnd, // 送信先ウィンドウのハンドル
UINT Msg, // メッセージ
WPARAM wParam, // メッセージの最初のパラメータ
LPARAM lParam // メッセージの 2 番目のパラメータ
);

HWNDって何?と思えば型か
LRESULTもUNITもみんな型・・
>LRESULT は通常、ウィンドウプロシージャの戻り値としてよく使われます。
>環境にもよりますが、大抵は、いずれも long 型の typedef だったりします。

構造体やクラスなら仕方ないけど、なんでこういう場合素直にlongって書かないんだろう??

HWNDはウィンドウハンドル用の型
ウィンドウハンドルはウィンドウの通し番号(整数)みたいなものと思ってたら、構造体らしい
ぐぐったら同じようなこと考える人がいた。やっぱりねー
5043 ◆2X9IMiA40A :2009/09/29(火) 10:54:49
HWND bbb ;
POINT aaa = {100,100};
bbb = WindowFromPoint(aaa);

ウインドウハンドル型変数bbbに値を格納
POINT型変数aaa、これは座標を表す
aaaのウィンドウハンドルをWindowFromPoint関数で取得
SendMessageAの一つの目引数を用意できたぜ・・まさかもうおわりなのか
51デフォルトの名無しさん:2009/09/29(火) 10:56:35
>>49
それは過去との柵だから、WinAPIを使う限り離れられない。
それが嫌なら適当なラッパライブラリでも使うしかないが、それではチートツールは作れない。
5243 ◆2X9IMiA40A :2009/09/29(火) 11:27:37
>>51
なるほどーありがとうございます。
なんにでも理由はあるもんなんですね
5343 ◆2X9IMiA40A :2009/09/29(火) 11:29:10
ttp://www.winapi-database.com/Message/EM/EM_SETSEL.html
EM_SETSEL = &HB1 ←ナニコレ?

wParam 選択開始位置
lParam 選択終了位置
このパラメータはMsgの内容により意味が変わるんだろうな

HBが何のことやら分からない。まぁいいか、とりあえず昼ごはん食べよう
54デフォルトの名無しさん:2009/09/29(火) 11:30:52
目的がチートツールなのは否定しないんだw
55デフォルトの名無しさん:2009/09/29(火) 11:36:21
>>53
だから別の言語のサイトなんか見るから……
basicの&Hb1はCの0xb1だな。つーか、それってCなら普通にwinuser.hをインクルードするだけでいいよ。
5643 ◆2X9IMiA40A :2009/09/29(火) 13:42:11
あ、できた。色々ありがとうございました。
しかしこんなにあっさり行くとは・・
>>54
チートには使わないけど、否定しても必死だなって言われるのがオチでしょ
今は色々APIを覚えたい
>>55
ウホッ!ありがとうございます
APIなら何の言語でも一緒じゃね?と思ってました。すいませんでした。
5743 ◆2X9IMiA40A :2009/09/29(火) 17:54:57
Sendmessageでキーの送信を試してみた
仮想キーは縁起を担いで77
aが64だからまあアルファベットだろう

lparmは何か良くわからないのでテキトーに200

予想通り、うまく動いてくれないな
やれやれだぜ
5843 ◆2X9IMiA40A :2009/09/29(火) 17:59:40
メッセージコードは「WM_KEYDOWN」
がキーダウンにあたるらしい

ふと思いついてSendmessageをPostMessageに変えたらあっけなく動いた
この違いはキューがどうとか書いてあるが全く分からない
フォーカスか?違うだろうな

まぁ、これでひとまず完成
これだけではあっけないので何かワンアクセントほしいな
何つくろうかな
別のもの作ろうかな
59デフォルトの名無しさん:2009/09/29(火) 18:15:23
惜しいな、'a'は97で'A'は65だ。じゃぁ77は何かと言うと、'M'だな。
それから、「キーの押下」をシミュレートしたいならWM_KEYDOWN/WM_KEYUPをPostMessage()で送らないと
受け側がWM_CHARSを発行できないからダメなんじゃないかな。
まぁ、SendInput()を使っておけって話もあるけど。
60デフォルトの名無しさん:2009/09/29(火) 20:17:52
さてと、あれつくるかな
61デフォルトの名無しさん:2009/09/29(火) 20:37:06
え、もうあれを?
6243 ◆2X9IMiA40A :2009/09/29(火) 23:48:52
うおおおお飲酒してきたぜ会社の飲み会は二回ぐらい吐くと良いぜ
焼肉はもうトイレに幾たび吐くといいぜ。
吐くためのには薬指と小指を胃に届くかってぐらい突っ込むといいぜ
そうすると食堂の粘膜がショックを起こして胃が痙攣を起こして嘔吐するぜ
>>59
ありがとうございます確かにMでした。メモ長にMと入力されました
WM_CHAR
DOWNとUPが変換された時に・・?
要するにDOWN状態があり、そのじょうたいでUPされたときのメッセージなのかな
よくわかんないけどやってみますぜ
63デフォルトの名無しさん:2009/09/29(火) 23:56:41
飲んだ後吐くのなんて、学生のうちに済ませとけよw
6443 ◆2X9IMiA40A :2009/09/30(水) 00:01:26
いや、店の人に進められたんだよ・・これさえなければいい店なんだ
安くていい店なんだ。店主は元ホテルの支配人兼料理長でね
でも女将さんがね・・・まぁ、世の中上手い話ばかりじゃないって事さ
今から創作意欲はわかないぜ。でもセンドメッセージは常に頭の片隅にあるぜ、悲しいぜ
65デフォルトの名無しさん:2009/09/30(水) 01:17:28
ニーネ!ニーネ!ニーネ!ニーネぅぅうううわぁああああああああああああああああああああああん!!!
あぁああああ…ああ…あっあっー!あぁああああああ!!!ニーネニーネニーネぅううぁわぁああああ!!!
あぁクンカクンカ!クンカクンカ!スーハースーハー!スーハースーハー!いい匂いだなぁ…くんくん
んはぁっ!ニーネたんの茶色ブロンドの髪をクンカクンカしたいお!クンカクンカ!あぁあ!!
間違えた!モフモフしたいお!モフモフ!モフモフ!髪髪モフモフ!カリカリモフモフ…きゅんきゅんきゅい!!
リミットレスビットのニーネたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!!
何気に出番多くて良かったねニーネたん!あぁあああああ!かわいい!ニーネたん!かわいい!あっああぁああ!
HGも発売されて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!!
ぐあああああああああああ!!!やりこみ系シミュレーションなんて現実じゃない!!!!あ…小説もゲームもよく考えたら…
ニ ー ネ ち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!!
そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!イシュワルドぁああああ!!
この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?リミットレスビットのニーネちゃんが僕を見てる?
ハーヴェストグリーンのニーネちゃんが僕を見てるぞ!ニーネちゃんが僕を見てるぞ!鍛冶屋のニーネちゃんが僕を見てるぞ!!
道具作る時ニーネちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ!
いやっほぉおおおおおおお!!!僕にはニーネちゃんがいる!!やったよニーネ!!ひとりでできるもん!!!
あ、王国商店街のニーネちゃああああああああああああああん!!いやぁあああああああああああああああ!!!!
あっあんああっああんあニーネ様ぁあ!!ニ、ニーネ!!ニーネぁああああああ!!!ニーネァぁあああ!!
ううっうぅうう!!俺の想いよニーネへ届け!!イシュワルドのニーネへ届け!
6643 ◆2X9IMiA40A :2009/09/30(水) 09:04:41
ニーネたんって誰だよ
67デフォルトの名無しさん:2009/10/01(木) 05:43:54
WinAPI使いこなせればこの世の全てのAPIはきっと使えるようになってるさ
と、先人はいってみる
貴様が今触ってるそれはつまりそれほど難解な代物だ
68デフォルトの名無しさん:2009/10/01(木) 09:51:42
printf("%s",0);
6943 ◆2X9IMiA40A :2009/10/01(木) 20:57:15
しばらく何も作らずに居たが、結局何も思いつかなかった
折角だしチートツール作ってみようかな
板的にあんまり良くないのかな
70デフォルトの名無しさん:2009/10/02(金) 04:32:27
良くないかどうかは知らんがム板住人からは歓迎はされていない
昔、ROか何かのボットを作るとかいうスレをネトゲ厨が立てたことあったが
そのスレは死ぬほど荒らされた
7143 ◆2X9IMiA40A :2009/10/02(金) 06:58:30
そうでしたか、ありがdございます
7243 ◆2X9IMiA40A :2009/10/02(金) 10:36:00
あー、花粉症でしんどい。
鼻の奥の血管は脳に直接酸素を送っている大切な場所なので、鼻は詰まらせないほうがいいらしい
特に幼少期から鼻が詰まり続けていると障害者になる可能性は否定できない

逆にタバコというものは毛細血管すぼめさせて花粉症を抑制する効果がある
ストレスを緩和する一因になっているのかもしれないな
7343 ◆2X9IMiA40A :2009/10/02(金) 10:45:07
postmessageに戻るが、
wParamにVK_F4 + VK_MENU(alt+F4)を設定してもうまくいかない
テキトーにオーバーロードでもしてくれるかと思ったが、
longだかintの数字データを足し算するだけのようだ。

ttp://wisdom.sakura.ne.jp/system/winapi/win32/index.html
74デフォルトの名無しさん:2009/10/03(土) 01:37:49
>>73
どう実装したのか知らないけど、

WM_KEY_DOWNでVK_MENU
WM_KEY_DOWNでVK_F4
WM_KEY_UPでVK_F4
WM_KEY_UPでVK_MENU

と、4回に分けてPostMessageしてみたら?
7543 ◆2X9IMiA40A :2009/10/03(土) 15:52:41
できないなー
WM_KEYDOWNの lParamパラメータが良く分からないや
ttp://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_KEYDOWN.html
リピートカウントってナンだろう、何階使っても分からない。まぁいいか。テキトーに255でも入れておくか
7643 ◆2X9IMiA40A :2009/10/03(土) 15:54:14
>>74
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main(){
HWND bbb ;
POINT aaa = {100,100};
bbb = WindowFromPoint(aaa);
PostMessage( bbb, // ウィンドウハンドル
WM_KEYDOWN, // メッセージコード
VK_F4, // wParamパラメータ
0 // lParamパラメータ
);
PostMessage( bbb, // ウィンドウハンドル
WM_KEYDOWN, // メッセージコード
VK_MENU, // wParamパラメータ
0 // lParamパラメータ
);
PostMessage( bbb, // ウィンドウハンドル
WM_KEYUP, // メッセージコード
VK_MENU, // wParamパラメータ
0 // lParamパラメータ
);
PostMessage( bbb, // ウィンドウハンドル
WM_KEYUP, // メッセージコード
VK_F4, // wParamパラメータ
0 // lParamパラメータ
);return 0;}
7743 ◆2X9IMiA40A :2009/10/03(土) 22:22:34
よく分からない何か(壁ではないと思う)にぶちあたった・・union共用体
説明、全てのメンバは同じ値になります・・・???変数でいいんじゃないのか?
折角なので調べてみた
ttp://www.ncad.co.jp/~komata/c-kouza7.htm
よく分からなかったがまぁ、メモリの節約に役立つらしい。今度無理矢理にでも使ってみる
7843 ◆2X9IMiA40A :2009/10/03(土) 22:36:55
愛用のマウス(MX510)のクリック感が気色悪くなってきたので分解してみた
マウスを分解すると左クリック用の板の裏側、スイッチとの接点がスイッチの形に磨り減っていた
カッターの刃を適当に小さくして補強。重いのは嫌いだがこの質量だと分からない程度。当分使えるだろう
はぁ

とりあえずalt+F4だけはできるようになりたいのでsendinputを学習
UINT SendInput(
UINT nInputs, // 入力イベントの数
LPINPUT pInputs, // 挿入する入力イベントの配列
int cbSize // 構造体のサイズ
);

しょっぱなから分からん。UINTをUNITと読んでいたので2時間ぐらい無駄にした
で、解決。UINT。内容はunsigned long intと同じ。じゃぁそう書いてよね!もう!
7943 ◆2X9IMiA40A :2009/10/03(土) 23:54:04
サイズはsizeof(INPUT)でok
問題はLPINPUTだ。とりあえずINPUT型でいいらしい
ここでunionが出てくる。引数の中の構造体の中に構造体があって・・・

typedef struct tagINPUT {
DWORD type; // 入力タイプ INPUT_MOUSE、INPUT_KEYBOARD 、INPUT_HARDWAREがある
union {
MOUSEINPUT mi; // マウスイベント用データ
KEYBOARDINPUT ki; // キーボードイベント用データ
HARDWAREINPUT hi; // ハードウェアイベント用データ(詳細不明)
};
} INPUT, *PINPUT;

キーボードなのでKEYBDINPUT構造体を使う。仮想キーコードはぐぐれば出てくる
後は分からん

typedef struct tagKEYBDINPUT {
WORD wVk; // 仮想キーコード
WORD wScan; // ハードウェアスキャンコード
DWORD dwFlags; // キーボードの動作を指定するフラグ
DWORD time; // タイムスタンプ。単位は ms (詳細不明)
ULONG_PTR dwExtraInfo; // 32 ビットの追加情報
} KEYBDINPUT, *PKEYBDINPUT;
8043 ◆2X9IMiA40A :2009/10/04(日) 00:47:51
スキャンコードは
UINT MapVirtualKey(
UINT uCode, // 仮想キーコードまたはスキャンコード
UINT uMapType // 実行したい変換の種類、とりあえず0
);
dwFlags何も指定しないとキーダウン、KEYEVENTF_KEYUPでキーアップ
タイムスタンプ・追加情報はよく分からんけど0
dwExtraInfoはGetMessageExtraInfoの戻り値を使うがそのためにはSetMessageExtraInfoの戻り値を使う
とりあえず0にするか。動かなくなってから気にしよう
8143 ◆2X9IMiA40A :2009/10/04(日) 01:40:38
動かないな
気づいたけどSendInputって指定したウィンドウに情報送る関数と思ってたら違うなこれ
ウィンドウハンドルとか指定してねぇ
WORD wVk;仮想キーコードは.ki.wVKにしないとダメなのか。なんでか全然わからねぇ
ttp://exsrd.blog.shinobi.jp/Entry/223/
8243 ◆2X9IMiA40A :2009/10/04(日) 01:43:04
ひとまず完成。>>81のリンク先をコピーしたようなもん
ただ動作が速すぎるからか何かわからんがよく入力されない
Post〜使ったほうがいいのかな。でもそれだと入力できないしなぁ
寝るか
8343 ◆2X9IMiA40A :2009/10/05(月) 17:56:49
HWND bbb ;
POINT aaa = {100,100};
bbb = WindowFromPoint(aaa);
Sleep(10000);
SetActiveWindow(bbb);
Sleep(10000);
アクティブウィンドウがかわらないのは何でなんだ??
コマンドプロンプトの画面がアクティブのままだぜ
84デフォルトの名無しさん:2009/10/07(水) 16:38:34
Alt + F4 は WM_CLOSE も送ってるだろ。
8543 ◆2X9IMiA40A :2009/10/07(水) 20:21:18
>>84
ありがとうございます
メモ帳で試したらvbでいうtextboxのようなものだけ消えました
今まで子のウィンドウハンドルを取得してたのか
8643 ◆2X9IMiA40A :2009/10/16(金) 11:33:15
ユニコードの扱いめんどいorz

文字セット

・マルチバイト文字(シングルバイト文字、ダブルバイト文字)
char型
・ワイド文字
wchar_t型
・多バイト文字
知らん。

文字コード

・アスキー、シングル文字セットであり、更にマルチ文字セットに含まれる
char型
・ユニコード、ワイド文字セット
wchat_t型
・シフトjis、マルチ文字セット
8743 ◆2X9IMiA40A :2009/10/16(金) 11:41:07
char a[4] = "test";
wchar_t b[4]= L"test";
Lを付ける

関数使って変換したいなら
MultiByteToWideChar関数を使う
ttp://mkmqwerty.hp.infoseek.co.jp/programing/tips/tips_string_convert.html
ttp://msdn.microsoft.com/ja-jp/library/cc448053.aspx
http://msdn.microsoft.com/ja-jp/library/cc448053.aspx
88デフォルトの名無しさん:2009/10/21(水) 19:21:43
>char a[4] = "test";
>wchar_t b[4]= L"test";

終端文字列あるから4だとまずいぞ
[5]か[] にしとけ

文字列使うなら const についても勉強しいたほうがいいよ
89デフォルトの名無しさん:2009/10/22(木) 10:59:09
態々自分で数えるのは間抜けだな。
ついでに言えば、C++だと4ではエラーになるな。
90デフォルトの名無しさん:2009/10/22(木) 12:05:32
なんでこう2chの人ってひねくれてるのかね?
91デフォルトの名無しさん:2009/10/22(木) 12:20:05
捻くれているどころか、適切な解説じゃないか。
寧ろなんで、捻くれていると一一勘繰る方が捻くれている。
92bvTFHSYcnE:2009/10/23(金) 06:03:31
He said himself that he had no meaningful relationship with any of his black students. ,
9343:2009/11/12(木) 12:45:28
構造体の中の!構造体の中の!構造体の中の!構造体の中の!構造体ッ!
はぁ・・ゲーム作ってた。くそげができました。
結局alt+F4できてないことを思い出したので再開
9443:2010/01/26(火) 11:37:28
APIに飽きたので2chブラウザ作ってみようと思います
言語はVB.net2008です
9543:2010/01/26(火) 11:41:21
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  WebBrowser1.Navigate(TextBox1.Text)
End Sub
3行で完了しました
9643:2010/01/26(火) 11:42:14
     *      *
  *  うそです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
9743:2010/01/26(火) 11:49:26
9843:2010/01/26(火) 11:53:40
このスレだと
ttp://pc12.2ch.net/test/read.cgi/tech/1213765748/97n-
ttp://pc12.2ch.net/tech/dat/1213765748.dat
こう変化する
"test/read.cgi/"を""に置換して7個目のスラッシュ以降を削除すればいいのかな
処理としてはあまりよろしくない感じが漂う

で、この後は"<>"を区切り文字として配列に放り込むのかな
やってみるか
9943:2010/01/26(火) 14:51:07
あ、C言語じゃなくなってるな
まぁいいか・・
10043:2010/01/26(火) 14:52:43
My.Computer.Network.DownloadFile _
("http://pc12.2ch.net/tech/dat/1213765748.dat", _
"C:\Documents and Settings\うんこ\デスクトップ\brauza\WineList.txt")
すんなりいけた
DLしたファイルの改行が<br>なのはhttpの仕様なのだろうか、なんなんだろうか
10143 ◆2X9IMiA40A :2010/01/26(火) 22:42:45
ttp://www.monazilla.org/index.php?e=192
2ch開発資料なんてあったんなんて
まぁがんばりましょう
102 忍法帖【Lv=4,xxxP】 :2011/10/17(月) 20:55:46.12
c言語まんどくせ
103 忍法帖【Lv=6,xxxP】 :2011/10/26(水) 20:30:20.52
gao-
104デフォルトの名無しさん:2011/10/28(金) 09:10:19.81
MS-DOSの時代は、みんな独自のフィーリングで作品を創作してた(look and feel)
Windowsの時代になってから、どれもおなじになってしまった。
105デフォルトの名無しさん:2011/10/28(金) 09:13:18.65
DOS時代にエディタを自作しようと挑戦してたひとがおおい
おれは、いわゆるエディタの自作は挫折したが、
無限回のUndoができる1行エディタなら自作できた。
エディタ、ワープロは、スクロールがむずかしいとおもう(Microsoft Wordのスクロールも酷い)
ひまがあれば、まともにスクロールできるエディタを自作したい。
106デフォルトの名無しさん:2011/10/28(金) 09:19:34.38
C++のモジュール、コンポーネント、ライブラリを利用しないで、Cだけで自作するのは、むずかしいけど
きにいるまで操作性を向上するには、ライブラリではなく自作するしかないね
107 忍法帖【Lv=10,xxxPT】 :2011/11/06(日) 22:18:13.77
ほげ
108デフォルトの名無しさん
あげ