- 1 名前:デフォルトの名無しさん mailto:sage [03/06/05 20:40]
- 初心者にはやっぱり難しいWindowsプログラミング。
そこでこの本を買った人も多いのではないでしょうか。 それでもわからない事がたくさんある! そんな時はここで質問しましょう。 本家サイト ttp://www.kumei.ne.jp/c_lang/index.html
- 433 名前:425 mailto:sage [2009/03/04(水) 20:29:17 ]
- >>432
ありゃ、つまりDrawTextExを使う場合はLPCTSTRじゃなくてLPWSTR を使わないとダメってことですか。 んじゃあ本の方が間違っていて、おまけで付いて来たソースの方が合っていたってことで いいんでしょうか?
- 434 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:24:39 ]
- >>433
本は持っとらんからなんとも言えん
- 435 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:33:14 ]
- プロジェクトのプロパティからマルチバイト文字を使う設定を選べ。
あるいは、説明になっていないような気がするWeb上の説明。 www.kumei.ne.jp/c_lang/net2005/sample.htm
- 436 名前:425 mailto:sage [2009/03/04(水) 22:47:13 ]
- DrawTextExの定義をよく見てみたしたところ、
2番目の引数はLPTSTR で宣言されていまして、 LPTSTR で値を渡さないといけないのにLPCTSTR で渡しちゃってたのが原因みたいです。 まだウィンドウズプログラミングは始めたばっかりなので どっか抜かしたりタイプミスしたのが原因かもしれないんで断定は出来ないんですけれども たぶんそれで合っていると思います。 >>435 ありがとうございます。 でも、それをやっても同じエラーが表示されるだけで効果はありませんでした。
- 437 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:00:03 ]
- うお、本当だ。この手のconst付きだろ常考な引数はCreateProcess系だけだと思っていた。
- 438 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 07:28:45 ]
- iniファイルの読み書きをしようと思ってKeyに対応する文字列を拾う処理で
詰まり、下にあげる虎の巻を参考にしているのですが、EXEと同じディレクトリ に読み込みたいiniファイルがある場合はどうしたらいいですか?相対パスとい うのでしょうか? 完全手詰まりです。 OS:WindowsVistaHomePremium IDE:VisualStudioExpress2008 言語:C++ 参考サイト::candy.zapto.org/ese/madoca%27s_tips/c,c++.html
- 439 名前:デフォルトの名無しさん [2009/03/18(水) 07:48:15 ]
- おながいします。
- 440 名前:デフォルトの名無しさん [2009/03/18(水) 11:56:54 ]
- >>438
#include <mbstring.h> ... TCHAR szIniFile[MAX_PATH]; LPTSTR pch; GetModuleFileName(NULL, szIniFile, MAX_PATH); pch = _mbsrchr(szIniFile, '\\'); lstrcpy(pch, "\\file.ini"); GetPrivateProfileString(..., szIniFile);
- 441 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:46:20 ]
- >>440
ありがとうございます。試してみます。
- 442 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:29:04 ]
- >>440
_mbsrchrより_tcsrchrにしろよ。 msdn.microsoft.com/ja-jp/library/ftw0heb9.aspx 自分ならlstrcpyより_tcscpyにするけど、そこはさすがに好みの問題。
- 443 名前:デフォルトの名無しさん [2009/03/18(水) 19:49:12 ]
- OE6の重複メールを削除しようと
questionbox.jp.msn.com/qa557649.html を参考にして実行してみたのですが、うまくいかず、 デスクトップや開いているフォルダ、 また起動中のアプリに対して勝手な操作がしばらくの間行われてしまい、 少なくとも起動中のタスクのいくつかは終了してしまうなど、 思わぬ事態に陥ってしまいました。 Ctrl+Alt+Delでwscript.exeを停止しOS再起動して動作は止まったのですが、 起動中だったアプリが取り扱っていたデータが書き換えられて上書きされていないか? また、何かファイルが操作、削除されてしまったりはしていないか、非常に不安です。 このVBSが具体的にどういう挙動をするものなのか教えてください。
- 444 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:00:59 ]
- >>443
鼬害
- 445 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 12:28:04 ]
- >>443
ウイルス板に池
- 446 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 14:40:37 ]
- ちょw
- 447 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 19:20:09 ]
- 24ビットカラーのBMPを16ビットカラーに減色するプログラムを書いていたのですが
24ビットカラーBMPの各色を取ってB&0x1F、G&0x2F、R&1Fをあてて各色を減色し R<<11 | G<<5 |Bっていった感じに繋げてみたのですがどうにもうまくいきません。 何か参考になるサイトや書籍、ヒント等いただけないでしょうか・・・。
- 448 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 20:57:02 ]
- >447
> 24ビットカラーBMPの各色を取ってB&0x1F、G&0x2F、R&1Fをあてて各色を減色し 本当にこの通りなら減色してなくね? 128, 128, 128 を 5 bit, 6 bit, 5 bit に縮めるなら 16, 32, 16 になるべきだと思わないかい? 今だと 0, 0, 0 になるよ? 単純にやるにしてもマスクじゃなくてビットシフトだと思う。 減色自体は画像処理定番だからぐぐれば腐るほどヒットすると思うが。
- 449 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:04:33 ]
- >>448
24ビットカラーは各色8bitだから256*256*256だぞ・・・128ビットって各色4ビットで12bitになっちまうじゃねーか・・・
- 450 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:38:14 ]
- > B&0x1F、G&0x2F、R&1F
ちょ・・・ったく、もう。 たとえば赤を例にとって 8びっと=0〜255 5びっと=0〜31 0〜255の値を取りうる数値を単純に31で頭打ちしちゃダメだろ。 R=R×32÷256 つまり0.125倍に圧縮しなきゃダメだろ。頭打ちじゃ無くて圧縮ね! インチをミリにしたり、ポンドをグラムにしたりするのと考え方は同じだよ〜 緑は6びっとだから後は自分で考えろ。 あと、G&0x2F も間違ってる。もういっぺん2進数、16進数を最初から勉強しなおせ。 これじゃ自転車に乗れないのにバイクの免許を取ろうとしてるのと同じ。無謀だよ。
- 451 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:01:19 ]
- >>450
0x3Fって後カラから気がついて問題そこじゃないからいっかと。
- 452 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:36:11 ]
- >>450
知り合いに、自転車乗れないベテランライダーがいるぞ。 自分で漕ぐときの動的バランス感覚がないらしい。
- 453 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:51:18 ]
- >>447
下位のビットじゃなくて上位のビットを使おう R >>= 3; G >>= 2; B >>= 3; R<<11 | G<<5 | B;
- 454 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:11:40 ]
- 猫でもわかるWindowsプログラミング第3版の5.2タイピングソフトのプログラムって、
本の通り書くと「タイプミス!」にならないんですが、これは本が間違ってるんでしょうか? もし間違えているなら、どこが間違っているのか教えていただけると助かります。
- 455 名前:デフォルトの名無しさん [2009/09/19(土) 14:39:54 ]
- おねがいします
- 456 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 14:45:46 ]
- ソースうp
第二版にはタイピングゲームは載っていない
- 457 名前:454 mailto:sage [2009/09/19(土) 15:20:24 ]
- ウィンドウプロージャ部のみですが、
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { HDC hdc; PAINTSTRUCT ps; MMTIME mm; switch (msg) { case WM_CREATE: srand((unsigned)time(NULL)); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 0, 0, szMondai, lstrlen(szMondai)); TextOut(hdc, 0, 40, szInput, lstrlen(szInput)); if(bSeikai) SetTextColor(hdc, RGB(0,0,0)); else SetTextColor(hdc, RGB(255,0,0)); TextOut(hdc,0,80,szCheck,lstrlen(szCheck)); EndPaint(hWnd, &ps); break;
- 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になっていたせいみたいでした。 マルチバイト文字セットを使ったら上手くいきました。
|

|