★初心者にVisual C++を教えるスレ★ Part29
■ このスレッドは過去ログ倉庫に格納されています
0001Part28の1000
2008/02/15(金) 01:45:56お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://myu.daa.jp/osiete/
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5辺り。
0153デフォルトの名無しさん
2008/02/24(日) 01:58:12地雷の表示がうまくいかないのはここの部分であってますか?
0154デフォルトの名無しさん
2008/02/24(日) 02:00:51脳味噌にも皺伸ばししているのか?
地雷の表示はどうなってほしいのがどううまくいかないのかも説明できないなら寝た方がいいぞ。
0155デフォルトの名無しさん
2008/02/24(日) 02:08:56説明不足ですいませんでした
柵の真ん中に赤い丸で表示されるはずなんですが
実際は柵の下部分に半円で表示されるんです
0156デフォルトの名無しさん
2008/02/24(日) 04:34:41>dc.Ellipse(ix*Width+5,iy*Width+Width+5,ix*Width+Width-5,iy*Width+Width-5);
これあってるの?
0157デフォルトの名無しさん
2008/02/24(日) 05:02:51まず初めに何をすればいいんですか?
(´・ω・`)
0158デフォルトの名無しさん
2008/02/24(日) 05:43:44+5の方の「Width」がひとつ多かったです
直してビルドして確認してみたらちゃんと赤い丸で表示されました
赤い丸が表示されないという問題は無事解決しました ありがとうございました
0159デフォルトの名無しさん
2008/02/24(日) 06:20:29{
CClientDC dc(this);
CString ss;
int iy,ix,x,y,m_x,m_y;
Masu=8; MineKazu=0;
for(iy=0;iy<=Masu+1;iy++)
{
for(ix=0;ix<=Masu+1;ix++)
{
Mine_Position[iy][ix]=0; Mine_Pass[iy][ix]=0; Mine_Kazu[iy][ix]=0;
}
}
Width=30;
for(x=Width*2;x<=Width*10;x+=Width)
{
dc.MoveTo(x,Width*2);dc.LineTo(x,Width*10);
}
for(y=Width*2;y<=Width*10;y+=Width)
{
dc.MoveTo(Width*2,y);dc.LineTo(Width*10,y);
}
for(iy=0;iy<=Masu*3;iy++)
{
X=(int)((double)rand()/32767.0*Masu);
Y=(int)((double)rand()/32767.0*Masu);
X=(int)((double)rand()/32767.0*Masu);
Y=(int)((double)rand()/32767.0*Masu);
Mine_Position[Y][X]=-1;
Mine_Pass[Y][X]=-1;
Mine_Kazu[Y][X]=-1;
}
0160159
2008/02/24(日) 06:25:08{
for(ix=2;ix<=Masu+1;ix++)
{
if(Mine_Kazu[iy][ix]==1)
{
MineKazu=MineKazu+1;
}
}
}
ss.Format("地雷の数は%d個です!",MineKazu); dc.TextOut(350,50,ss);
for(iy=2;iy<=Masu+1;iy++)
{
for(ix=2;ix<=Masu+1;ix++)
{
if(Mine_Position[iy][ix]==-1)
{
for(m_x=-1;m_x<=1;m_x++)
{
for(m_y=-1;m_y<=1;m_y++)
{
if(m_x!=0||m_y!=0)
{
if(Mine_Position[iy+m_y][ix+m_x]!=-1)
{
Mine_Position[iy+m_y][ix+m_x]=
Mine_Position[iy+m_y][ix+m_x]+1;
}}}}}}}}
起動した時に地雷の数を表示させたいのですが
表示は0のままでうまく表示出来ません
どこがおかしいのか教えてください
0161145.159
2008/02/24(日) 06:26:480162デフォルトの名無しさん
2008/02/24(日) 08:08:41あんたの頭。
お願いだから寝てください。できれば永久に。
>Mine_Kazu[Y][X]=-1;
-1をセットしているのに
>if(Mine_Kazu[iy][ix]==1)
1を数えているじゃないか。
0163161
2008/02/24(日) 15:56:01ありがとうございます
0164デフォルトの名無しさん
2008/02/24(日) 16:00:19{
CClientDC dc(this);
CBrush blueBrush,*oldBrush1;
CString ss;
int iy,ix;
iy=int(point.y/Width);
ix=int(point.x/Width);
if(2<=iy&&iy<=Masu+1&&2<=ix&&ix<=Masu+1)
{
blueBrush.CreateSolidBrush(RGB(0,0,255));
oldBrush1=dc.SelectObject(&blueBrush);
dc.Rectangle(ix*Width,iy*Width,
ix*Width+Width,iy*Width+Width);
dc.SelectObject(oldBrush1);
blueBrush.DeleteObject();
Mine_Pass[iy][ix]=-1;
if(Mine_Position[iy][ix]>=1)
{
ss.Format("%d",Mine_Position[iy][ix]);
dc.TextOut(ix*Width+10,iy*Width+5,ss);
Mine_Pass[iy][ix]=-1;
}
0165145.159.160.164
2008/02/24(日) 16:00:56{
DispMine();
}
for(iy=2;iy<=Masu+1;iy++)
{
for(ix=2;ix<=Masu+1;ix++)
{
if(Mine_Pass[iy][ix]!=-1)
{
//goto saido;
return;
}
}
}
AfxMessageBox("おめでとう!クリアです!");
DispMine();
// saido:;
}
CFormView::OnLButtonDown(nFlags,point);
}
起動〜終了まで出来るようになったのですが
終了時にクリアのログの後に地雷を踏んだログが出てしまいます
どこが悪いのか教えてください
0166デフォルトの名無しさん
2008/02/24(日) 16:09:00あんたの頭。いい加減にしなさい。
0167デフォルトの名無しさん
2008/02/24(日) 17:13:45自分の頭が悪いのはわかってます・・・
0168デフォルトの名無しさん
2008/02/24(日) 17:19:07http://www.kohgakusha.co.jp/support/game_mfc/index.html
0169デフォルトの名無しさん
2008/02/24(日) 18:04:19何が悪いか判ってよかったな。つまり、あんたにはプログラミングは無理ってことだ。
0170デフォルトの名無しさん
2008/02/24(日) 18:24:49MFC覚えた方がいいですか?
仕事だとMFCとWin32Appはどっちが使われてます?
0171デフォルトの名無しさん
2008/02/24(日) 19:12:090172デフォルトの名無しさん
2008/02/24(日) 21:00:31使えと言われたときのために軽くかじっておくのはいいと思う。
かじったことのない俺が言っても説得力0だけど。
0173デフォルトの名無しさん
2008/02/24(日) 22:31:570174デフォルトの名無しさん
2008/02/24(日) 23:34:28わざわざTabキーを入力しなければインデントしてくれません。
自動インデントをしてくれるようにする方法はありますか?
VC++のバージョン:
Visual C++ 2008 Express Edition
現在の設定:
ツール->オプション->環境->キーボード
次の追加キーボードマップスキームを適用->Emacs
ツール->オプション->テキストエディタ->C/C++->タブ
インデント->スマート
タブ->タブの保持
後はおおむねデフォルトです。
0175デフォルトの名無しさん
2008/02/25(月) 00:34:04MFCなら 10年前に買った、新Visual C++ 6.0 入門編 シニア編
かな?
0176デフォルトの名無しさん
2008/02/25(月) 00:48:31それって入門用には最悪だろ
0177デフォルトの名無しさん
2008/02/25(月) 04:08:20DeleteObjectもなくても動くんですがどういうことですか?
pDC->SelectObject(oldFont);
myFont.DeleteObject();
0178デフォルトの名無しさん
2008/02/25(月) 06:43:45DeleteObjectは必要だけど、なくても一応動く
ただDeleteObjectしてないように見えるけど、実際は見えない部分でやってる場合もある。
間違ったやり方をしているサンプルもあるし、
一見間違っているように見えて間違ってないサンプルもあるから
猿真似しかできないやつだと理解は難しい。
0179デフォルトの名無しさん
2008/02/25(月) 07:19:13myFont をローカル変数にしていた場合、
SelectObject で戻し作業をしてないと
登録しているオブジェクトを DeleteObject しようとしてしまう。
myFont がローカル変数でない場合は
状況によっては必ずしもすぐさま戻す必要は無いが、
最終的には戻す必要がある。
0180デフォルトの名無しさん
2008/02/25(月) 09:56:18GRAPHICS\GDI\FONTS\FONTVIEW\STATUS.C
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &rect);
hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
border = rect;
border.bottom = border.top + cyStatusBorder;
FillRect (hdc, &border, hBrush);
DeleteObject (hBrush);
hBrush = CreateSolidBrush(GetSysColor(COLOR_BTNSHADOW));
border = rect;
border.top = border.bottom - cyStatusBorder;
FillRect (hdc, &border, hBrush);
DeleteObject (hBrush);
EndPaint (hwnd, &ps);
0181デフォルトの名無しさん
2008/02/25(月) 10:10:240182デフォルトの名無しさん
2008/02/25(月) 11:32:290183デフォルトの名無しさん
2008/02/25(月) 15:01:060184デフォルトの名無しさん
2008/02/25(月) 15:15:32消さないとリソース消費が膨れ上がる。
ストックオブジェクトなら消す必要が無い
どの辺が疑問かわからん
0185デフォルトの名無しさん
2008/02/25(月) 15:19:330186デフォルトの名無しさん
2008/02/25(月) 15:20:25ありがとう
0187デフォルトの名無しさん
2008/02/25(月) 15:31:23解放されてしまうからなんだよね
だから自分で元に戻さなくても大丈夫
0188デフォルトの名無しさん
2008/02/25(月) 16:10:310189デフォルトの名無しさん
2008/02/25(月) 16:22:580190デフォルトの名無しさん
2008/02/25(月) 17:06:07アクセス違反は起きないよ。
SelectObjectされたままだとDeleteObjectが失敗するからどんどん溜まっていく。
使っているGDIオブジェクトの数はタスクマネージャでも確認できる。
・・・上限っていくつだろ?ググってみたがわからん。
0191デフォルトの名無しさん
2008/02/25(月) 18:19:05たぶん上限というのは9xで64KB, NTで標準1MBのやつ。
で、オブジェクト1個で何バイトだよって話になるんだけどね。
0192デフォルトの名無しさん
2008/02/25(月) 19:39:37戻さずに削除するやり方がちゃんと書いてあるだろ
0193デフォルトの名無しさん
2008/02/25(月) 20:08:580194デフォルトの名無しさん
2008/02/25(月) 21:09:36毎回SelectObjectするのは何故?
0195デフォルトの名無しさん
2008/02/25(月) 23:49:470196デフォルトの名無しさん
2008/02/27(水) 18:35:12の(CButton*)この括弧ってなんなの?
ポイント関係の項目読んでも解説が出てこないんですけど!
0197デフォルトの名無しさん
2008/02/27(水) 18:36:400198デフォルトの名無しさん
2008/02/27(水) 18:42:060199デフォルトの名無しさん
2008/02/27(水) 18:59:20CButtonクラスにするポインタradio1にGetDlgItemで取り出したIDC_RADI01のアドレスをCスタイルキャストでポインタに強制変換していれてるんですね。
さっぱりわかりません
0200デフォルトの名無しさん
2008/02/27(水) 19:05:23GetDlgItemで取り出したIDC_RADI01のアドレスをCButton型のポインタにしていれてるんだ!
0201デフォルトの名無しさん
2008/02/27(水) 19:06:240202デフォルトの名無しさん
2008/02/27(水) 19:20:510203デフォルトの名無しさん
2008/02/27(水) 21:27:46Foo.cpp タブの下に表示されている
クラスとメソッドを選択するバーを消す
方法を教えて下さい。
0204デフォルトの名無しさん
2008/02/27(水) 22:04:160205デフォルトの名無しさん
2008/02/27(水) 22:09:44Visual Studio 2005 Part 23
http://pc11.2ch.net/test/read.cgi/tech/1196663772/l50
0206デフォルトの名無しさん
2008/02/27(水) 22:34:55CClientDC myDC(myPICT);
は丸暗記するものなんですか?
それともここを理解しないと先は暗いですか?
0207デフォルトの名無しさん
2008/02/27(水) 22:42:30忘れたら前に書いたコード探すだけだし
0208デフォルトの名無しさん
2008/02/27(水) 22:43:580209デフォルトの名無しさん
2008/02/27(水) 22:46:490210デフォルトの名無しさん
2008/02/27(水) 22:47:050211デフォルトの名無しさん
2008/02/27(水) 22:48:170212デフォルトの名無しさん
2008/02/27(水) 22:48:440213デフォルトの名無しさん
2008/02/27(水) 22:50:15もし、その中身を知っていなきゃコーディングできないとするならばそんな関数があること自体おかしいと思わないか?
printfの実装なんぞ知らなくたって使えるだろ?
0214デフォルトの名無しさん
2008/02/27(水) 22:59:42CDC使ったことがあったらCClientDCも使えるだろうし
0215203
2008/02/27(水) 23:20:28載ってる?
行って探してみたけど無さそうだったよ。
そもそも、消す機能ついて無い気もしてきた。。
とりあえずあきらめよう。
Thx.
0216デフォルトの名無しさん
2008/02/29(金) 00:56:572行に分けたい場合はどうするの?
0217デフォルトの名無しさん
2008/02/29(金) 01:12:190218デフォルトの名無しさん
2008/02/29(金) 01:18:45ようするに、だいたい改行したいと思ったところにただ改行を書くだけで大丈夫。
例えばVBのように行継続文字を書く必要はない。
それに相当するものはある(バックスラッシュを使う)のだが上記の理由で基本的に不要。
0219デフォルトの名無しさん
2008/02/29(金) 02:45:290220デフォルトの名無しさん
2008/02/29(金) 03:13:170221デフォルトの名無しさん
2008/02/29(金) 09:39:470222デフォルトの名無しさん
2008/02/29(金) 10:15:080223デフォルトの名無しさん
2008/03/01(土) 18:33:500224デフォルトの名無しさん
2008/03/01(土) 18:52:360225デフォルトの名無しさん
2008/03/01(土) 20:00:21>一行って何行まで書けるの?
一行でなくなったら一行ではなくなるではないか。
0226デフォルトの名無しさん
2008/03/03(月) 09:48:080227デフォルトの名無しさん
2008/03/03(月) 12:10:550228デフォルトの名無しさん
2008/03/03(月) 20:52:04という質問だろ、
文脈から判断せいや
0229デフォルトの名無しさん
2008/03/03(月) 21:04:22文字列なら
char *str = "abc"\
"def";
みたいな感じ
関数ならint hoge(int a,int b,
int c)
{}
みたいな感じ
0230デフォルトの名無しさん
2008/03/03(月) 21:11:34・・・え?
一文って何行まで書けるの? じゃないのか?
0231デフォルトの名無しさん
2008/03/03(月) 21:22:390232デフォルトの名無しさん
2008/03/03(月) 21:34:47"で閉じているときは\は無くていいよ。↓でOK
char *str = "abc"
"defg"
"hijk";
閉じないなら\で繋げる。
char *str = "abc\
defg\
hijk";
(もっとも、この場合は行頭に桁揃えのスペースやタブを入れられなくなるが・・・)
0233デフォルトの名無しさん
2008/03/05(水) 00:12:55はできないのでしょうか? 長いエラーメッセージが表示されたとき、
水平スクロールバーを使ってスクロールしながら読むのは骨が折れます。
Visual C++6.0です。よろしくお願いします。
0234デフォルトの名無しさん
2008/03/05(水) 00:19:420235デフォルトの名無しさん
2008/03/05(水) 00:24:39押しても改行されませんよ。
0236デフォルトの名無しさん
2008/03/05(水) 01:53:19っと起動してみたがみつからんなあ、長年つかってなかったからよーわからん
ヘルプもうまく出んな
0237デフォルトの名無しさん
2008/03/05(水) 01:55:09出力時にですがな。
0238デフォルトの名無しさん
2008/03/05(水) 02:12:24>235が言ってるのはビルドエラーだよ?
コンパイラのコードをいじれと?
0239デフォルトの名無しさん
2008/03/05(水) 02:26:33そら失礼。
0240デフォルトの名無しさん
2008/03/05(水) 06:53:060241デフォルトの名無しさん
2008/03/05(水) 12:35:45int a[10];
の a[10] 以降の配列にデータを入れ続けた場合の被害は、最悪プログラムの強制終了だ。と上の方に書いてありましたが本当ですか?
なんか最近OS起動後すぐにWindousのプロセスが強制終了しだしたんですが、
自分のアプリ外のメモリ領域は保護してくれるぐらいの機能はあるんですよね?VC++6.0なんですけど。
0242デフォルトの名無しさん
2008/03/05(水) 13:10:14ttp://www.kumei.ne.jp/c_lang/intro/no_22.htm
動かない事はないけどメモリアドレス関係のバグは命取り
0243デフォルトの名無しさん
2008/03/05(水) 13:27:140244デフォルトの名無しさん
2008/03/05(水) 14:06:06B?ng
0245デフォルトの名無しさん
2008/03/05(水) 21:34:33LPSTR型の文字列をchar str[200]に代入したいのですが可能でしょうか?
0246デフォルトの名無しさん
2008/03/05(水) 21:44:28だから
0247デフォルトの名無しさん
2008/03/05(水) 21:51:040248デフォルトの名無しさん
2008/03/06(木) 01:15:44適当なコントロールを選んで、プロパティのApplicationSettings->PropertyBindingの...をクリックし、バインドしたいプロパティを選んで新規を押し、
項目を入力してOKを押すと「設定ファイルがプロジェクトに見つかりません。設定ファイルを追加して、再試行してください。」と出ます。
(プロジェクト名).config, (プロジェクト名).exe.config, App.config, config.xml, (プロジェクト名).xmlといろいろ追加してみましたが結局出来ませんでした・・・。
どうすればいいものかと途方にくれてます。。
0249デフォルトの名無しさん
2008/03/06(木) 18:19:22スクロールバーでダイアログを動かすと
次にクリックした位置がオーダー1に戻ってしまうのですが、
これってVC2005のバグなのでしょうか?
こういう場合、どのようにしてタブオーダーを設定すればよいでしょうか。
0250デフォルトの名無しさん
2008/03/06(木) 18:48:33http://msdn2.microsoft.com/ja-jp/library/csz6b8x8(VS.80).aspx
Ctrlを押しながらクリックすれば途中から設定できるはず
それかホイールマウスでスクロールする。
0251デフォルトの名無しさん
2008/03/06(木) 18:57:09> Ctrlを押しながらクリックすれば途中から設定できるはず
スクロールした後にコントロールをCtrl+クリックすると、
そこが新たな基準点になるだけで、
そのコントロール自体のタブオーダーは変更されないのです。
> それかホイールマウスでスクロールする。
ホイールを回してもスクロールしないのですが、
これはなにかの設定に依存するのでしょうか?
0252デフォルトの名無しさん
2008/03/06(木) 19:06:18スクロールした後で一つ前のコントロールをCtrl+クリックして基準点として
それ以降を設定すればいいのでは?
ホイールスクロールはマウスユーティリティによるものかも。
■ このスレッドは過去ログ倉庫に格納されています