- 1 名前:デフォルトの名無しさん mailto:sage [03/06/05 20:40]
- 初心者にはやっぱり難しいWindowsプログラミング。
そこでこの本を買った人も多いのではないでしょうか。 それでもわからない事がたくさんある! そんな時はここで質問しましょう。 本家サイト ttp://www.kumei.ne.jp/c_lang/index.html
- 458 名前:454 mailto:sage [2009/09/19(土) 15:21:05 ]
- case WM_CHAR:
if(wp == VK_SPACE && !bStart) { bStart = TRUE; TypeStart(hWnd); break; } if(bStart == FALSE) return DefWindowProc(hWnd, msg, wp, lp); if(wp == VK_ESCAPE) { lstrcpy(szMondai, TEXT("")); lstrcpy(szInput, TEXT("")); lstrcpy(szCheck, TEXT("")); InvalidateRect(hWnd, NULL, TRUE); bStart = FALSE; break; } wsprintf(szInput, TEXT("あなたの入力=\"%c\""), (int)wp); if(szMondai[6] == szInput[14]) { bSeikai = TRUE; mm.wType = TIME_MS; timeGetSystemTime(&mm, sizeof(MMTIME)); dwEnd = mm.u.ms; wsprintf(szCheck, TEXT("反応時間[%dミリ秒]"), dwEnd - dwStart); TypeStart(hWnd); } else { bSeikai = FALSE; MessageBeep(MB_OK); lstrcpy(szCheck, TEXT("タイプミス!")); } InvalidateRect(hWnd, NULL, TRUE); break;
- 459 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 15:21:46 ]
- case WM_DESTROY:
PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp,lp)); } return 0; } int TypeStart(HWND hWnd) { int n; MMTIME mm; n = rand() % 26; wsprintf(szMondai, TEXT("問題=\"%c\""), 'a' + n); mm.wType = TIME_MS; timeGetSystemTime(&mm, sizeof(MMTIME)); dwStart = mm.u.ms; InvalidateRect(hWnd, NULL, TRUE); return 0; }
- 460 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 15:23:52 ]
- 書籍に乗ってるソースコードの転載はまずいだろ
- 461 名前:デフォルトの名無しさん [2009/09/19(土) 15:44:38 ]
- 流れからいって微妙w
- 462 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 16:22:32 ]
- 何事もなく動いた
www.geocities.jp/c_zelos/file_up2/nekotype.cpp
- 463 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 16:40:06 ]
- 追記:
もしかしたら 動かないんじゃなくて、スペースキーー押して開始させてないんじゃね(と思った 90行目あたりの case WM_CHAR: if(wp == VK_SPACE && !bStart) { bStart = TRUE; TypeStart(hWnd); break; } if(bStart == FALSE) return DefWindowProc(hWnd, msg, wp, lp); これ プログラム起動したらまずスペースキー押して bStart == TUREにしておかないと return DefWindowProc(hWnd, msg, wp, lp); が実行されてそれ以下の処理が通らなくなってる
- 464 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 00:27:05 ]
- >>462
そのままコピペしてやってみたんですが、動きませんでした。 #include<time.h>などを追加してエラーなくしてみましたが、 ウィンドウにszMondai、szInput、赤字でszCheckと表示され、 スペースを押すと問題があるので終了しますとなって終了してしまいました。 >>463 スペースキー押しての開始はもちろんしてますよ。 ただ、間違えたキーを押してもタイプミス!がでないんですよね・・・ デバッグしてもif文の分岐で、間違えたときもelse(タイプミス!と表示される)の方にいかないんです。
- 465 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/20(日) 07:57:39 ]
- >>464
悪い、俺のソースは変数宣言を間違っていた char * szMondai = "szMondai"; char * szInput = "szInput"; char * szCheck = "szCheck"; を char szMondai[256]; char szInput[256]; char szCheck[256]; にすれば動く
- 466 名前:454 mailto:sage [2009/09/21(月) 18:53:17 ]
- >>464
無事できました!ありがとうございます どうやら原因は文字セットがUnicodeになっていたせいみたいでした。 マルチバイト文字セットを使ったら上手くいきました。
|

|