[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 10:44 / Filesize : 111 KB / Number-of Response : 467
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【漏れは】猫でもわかる質問スレ【猫以下です】



1 名前:デフォルトの名無しさん mailto:sage [03/06/05 20:40]
初心者にはやっぱり難しいWindowsプログラミング。
そこでこの本を買った人も多いのではないでしょうか。
それでもわからない事がたくさんある!
そんな時はここで質問しましょう。

本家サイト
ttp://www.kumei.ne.jp/c_lang/index.html

417 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:27:22 ]
BCC及びBCC Developerを使って勉強中なのですが、猫さんの「BCCで
プログラムを作ろう」の第8章をサンプルの通り作っても、メークすると
「外部シンボル '_main' が未解決(D:\BORLAND\BCC55\LIB\C0X32.OBJ
が参照)」というエラーが出ます。
何が原因が分かりますでしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:45:14 ]
スタティックリンクがちゃんとできてないんじゃ・・・ないかな

419 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:02:00 ]
メーンとかメークとかやめて>_<;

420 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:31:38 ]
>>417
-Wオプション?
www.kumei.ne.jp/c_lang/img/bcc0605.gif

421 名前:417 mailto:sage [2008/04/24(木) 11:35:34 ]
>>418
ありがとうございます。
プロジェクト設定のターゲットを間違っていました。

>>419
メイクですね、すみません。

422 名前:417 mailto:sage [2008/04/24(木) 11:36:22 ]
>>420
ありがとうございます。まさにそれでした。

423 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 09:49:18 ]
猫WINはあんまり推敲しないで書いてるよな。「なんだっけ」とか。
ページを埋めればいいと思ってないかw

424 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:14:08 ]
猫でも、は未だにWebで新章追加してるのはすごいと思うけど
淡々と進めてて、すっかりベテラン講師の語り口だよな
わかりやすいとは思うけど、
初期のころのデカ字で「わけわからん」な、
いわゆるテキストサイト的な雰囲気がどっかいっちゃったのはさびしい

425 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:13:53 ]
すいません。先日、「猫でもわかるWindowsプログラミング第三版」を買ってきまして、
56p〜59pに載せられているのをやってみてもうまくビルドできないんです。
おまけのCDに付いていたソースはうまくビルドできたんですが、本に載っているのと
微妙に違うんですよね。

本に載っているのだと90行目がLPCTSTRになっているんですが、
おまけで付いてきたソースですとLPTSTRになってしまうんです。
逆にここだけ直せばうまくビルドできるんですけれども。

環境はVisualStudio2005です。ソースは
www.vipper.org/vip1134975.cpp.html
にあります。
どこかおかしいところがあったら指摘していただけますか?



426 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:44:53 ]
>>425
VC++6.0
VC++2008 EE
どっちともいけたぞ

427 名前:425 mailto:sage [2009/03/04(水) 18:59:15 ]
>>426
う〜ん、やっぱりVS2005でやってるのが問題なんでしょうか。
本書の方は2008向けに書き換えたものだったみたいですし。

428 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:01:53 ]
>>427
そんなん難しいことするからコケるんだよ
char *lpszStr = TEXT("猫でもわかる\nWindows プログラミング\n\t")
TEXT("作者名");
でいけたぞ
VC++6.0

429 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:13:34 ]
>>428
あ、なるほど!
ってなんかいじくりまわしてたらまたエラーが・・・
もうちょい勉強してからまた来ます。ありがとうございました。

430 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:16:05 ]
>>429
とりあえず TEXT("");
を普通の char で処理した方がいい

431 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:18:36 ]
>>430
はい。

432 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:30:01 ]
>>426
少なくともVC++2008じゃ行けんかったぞ


vip1134975.cpp(109) : error C2664: 'DrawTextExW' : 2 番目の引数を 'LPCTSTR' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
要は型の不一致

噛み砕いて言うと関数(この場合DrawTextExW)が
2番目に欲しい変数(LPWSTR型)とは異なるもの(LPCTSTR型)を与えてるから

ちなみにソースではDrawTextExと書いてるけど、その記述をたどると
#define DrawTextEx DrawTextExW
とあり、つまりは DrawTextEx == DrawTextExW

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になっていたせいみたいでした。
マルチバイト文字セットを使ったら上手くいきました。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<111KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef