★初心者にVisual C++を教えるスレ★ Part5
■ このスレッドは過去ログ倉庫に格納されています
0001987
NGNGVisual C++ 初心者用スレッドです。
前スレ・関連スレは、>>2 ぐらい。
0751デフォルトの名無しさん
NGNGいや、それをループでやりたいってことだろ
0752デフォルトの名無しさん
NGNGレスthx!!
750さんの方が簡単にできそうなので、さっそく逝ってきまつ♪
0753デフォルトの名無しさん
NGNGいや、正直、収集できたらなんでもいいんで、さっそくやってみまつ…
ポインタ、見過ごしてました…(汗)
0754デフォルトの名無しさん
NGNGCEdit arrayEdit[10];
arrayEdit[0] = &m_ed1;
arrayEdit[1] = &m_ed2;
:
:
int dat[10];
for(i=0;i<10;i++)
{
dat[i] = arrayEdit[i]->GetLineCount();
}
みたいなことでいいのか?てっきり最初の
arrayEdit[0] = &m_ed1;の部分をループでやりたいのだと思って・・・
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNGDDXつかっての話だったら、
DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum0);
DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum1);
みたいに自動生成されるところで
DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum[0]);
DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum[1]);
と手動で書く。 と漏れはやってる。
力尽く主義なら 更新関数とかで
const int* pT[]= { &m_ed1, &m_ed2, ... };
for(int i=0;i<MAXNUM;i++) dat[i] = *pT[i];
てな方針を提案。
0757デフォルトの名無しさん
NGNGint *dat[10]={&m_ed1,&m_ed2…}
の一行だけで、すべてはかたずきました…
ループは、その後のプログラムで使うんで、データ収集も、そのまんまそのループ内に入れようとしてただけなんですわ…
なにぶん、独学で本読みながら学んでるんで、まだまだわからないことだらけです…
(ノД`)シクシク
0758デフォルトの名無しさん
NGNGΣ(゜Д゜;≡;゜д゜)
も、漏れがやったのは、力づくなのか?そうなのか?(汗)
0759756
NGNG変数名いまさら変えたくないYO! という場合はこちら みたいな
ニュアンスでな… 正直スマソ
0760デフォルトの名無しさん
NGNGfor(int i=0; i<10; ++i)
dat[i] = this->GetDlgItemInt(ID_FIRST_EDIT + i);
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG書きながら、IDが連番であることを仮定したコードを書くのは
論理的に美しくないような気がして(´・ω・`)ショボーン となってしまいます。
0763デフォルトの名無しさん
NGNGVisual Studio.NET Standard Version2002を使ってManaged C++アプリケーションのコードを練習していて、いざコードを書き終わってビルドしたところ
「fatal error C1102:次の初期化が出来ません:クラスが登録されていません」というエラーがタスクに表示されました。そこをダブルクリックしたらstdafx.cppというところに飛ばされたのですが、
当方初心者のため、そこで何をしたらいいのかわからなくて問題を解決できないでいます。この問題を解決するにはどうしたらよいのでしょうか?
私の使っているOSはWindowsXPで教本には「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」を使っています。ステップ2の「animals」というプログラムを作っているときにこの問題が発生しました。
どうかご存知の方いたらよろしくお願いします。
0764デフォルトの名無しさん
NGNGソースを書いたら?
0765デフォルトの名無しさん
NGNGVC++Ver6しか持ってないので細かいとこが違うかもしれんが。
プロジェクト→プロジェクトへ追加→コンポーネント及びコントロール(P)
あたりで追加コントロールが必要なのかもね。
0766デフォルトの名無しさん
NGNG「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」が
いかなるものか、わからないけど、プリコンパイルヘッダを使用しないとかにしてみる。
0767763
NGNGすみません、書くべきソースがわかりません・・・
>>765
とりあえず一般C++のクラスを追加をいじってみたら「新しい構文要素を読み出すのに失敗しました構文エラーが考えられます」というエラーメッセージが出てきました。
>>766
プリコンパイルヘッダはどのようにして使用しないようにするのでしょうか?
結局勉強不足で、質問ばかりになってすみません・・・もっと勉強してきます。
0768デフォルトの名無しさん
NGNGクリンナップ時に、resource.hをExcelでソートしたりする香具師もいると思うが、ID_DLG1_EDIT1みたいな名前を付けとけば連番が崩れなくて安全だ。
漏れはDDX近辺にASSERT(ID_EDIT_1+1 == ID_EDIT_2);みたいなアホなチェックも入れて、厨房が壊したら本人が気付くようにしているぞ。
(自慢なのか?)
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGプリコンパイルヘッダは、コンパイルの高速化のために
コンパイルの途中結果をファイル化しておくもの。
ソースの一部変更などであればそのまま使えるが
ヘッダやソースの大幅変更した場合は破棄されて
再び作成される。
リビルドすれば、まっさらな状態からコンパイルできる。
もしかしたら、プロジェクトの作成方法がおかしいかもしれないので、
プロジェクトだけ別名で作成して、既に打ち込んだソースは別のところに
バックアップして、新しいプロジェクトのソースに貼り付けて見るといいかも。
0772デフォルトの名無しさん
NGNGフォントについて。
↓は合法なのでしょうか。
HFONT hOldFont = (HFONT) SelectObject(hDC, GetParent() -> GetFont() -> m_hObject);
↓は結構目にするんですが。
LOGFONT lf;
GetParent() -> GetFont() -> GetLogFont(&lf);
HFONT hFont = CreateFontIndirect(&lf);
HFONT hOldFont = (HFONT) SelectObject(hDC, hFont);
0773デフォルトの名無しさん
NGNGオーバーロードの利便性とはどのようなことなんでしょうか?
また、オーバーロードすることにより起こりえる問題点などありましたら教えていただきたいです。
0774デフォルトの名無しさん
NGNG勉強すれば自ずと分かるはずだから。
0775
NGNG0776デフォルトの名無しさん
NGNGSDKを用いたプログラムを勉強することにしました。
2つばかり質問させてください。
やはりゲームなどで用いる画像処理の効率は
SDKの方がいくらか高速になるのでしょうか?
あとSDKでのプログラミングでは
ClassWizardが使えないのですが
様々なサイトを調べても
あまりクラスを使って説明している人はいません。
SDKでクラスを用いるのは一般的でないのでしょうか?
0777デフォルトの名無しさん
NGNGどう比較するの?
ゲーム用の画像処理用のクラスがMFCにあるという前提?
だったら
>今までMFCを用いてプログラムを行っていましたが
いままで何もやっていないのと一緒
0778デフォルトの名無しさん
NGNG0779763
NGNGその方法を試みましたが結果は変わりませんでした。
「ステップバイステップで学ぶvisual C++.NET実践講座」には各ステップごとのプログラムの見本のプログラムが入ったCD−ROMがあるのですが、
その見本のプログラムをビルドしようとしても同じエラーが起こりました。Visual C++.NET Standard自体を再セットアップしたほうがいいでしょうか?
0780デフォルトの名無しさん
NGNGCD−ROMのサンプルをプロジェクトディレクトリごとLZHかZIPにでも
アーカイブしてどっかにうpしたらいかが?
それと、エラーメッセージをコピー&ペーストで書き込んだほうが良い。
エラーメッセージの種類(コード)がそれでわかる。
それと、ほんの最初のほうにでもプロジェクトの作成方法みたいなのが
書いてないの?
0781デフォルトの名無しさん
NGNGatof
0782デフォルトの名無しさん
NGNGプロジェクトの作成は一回しましたよ。Hello Worldですけど・・・それは正常に動作しました。
ビルドエラータスクに出てくるエラーメッセージは次のとおりです。
animals fatal error C1102: 次の初期化ができません : 'クラスが登録されていません
↑これをエラータスクでダブルクリックするとstdafx.cppの一行目に飛ばされます。
下記アプロダにてサンプルをうpしました。よろしくお願いします。
ttp://cgi.members.interq.or.jp/hokkaido/asato/upload/upload.cgi
0783763
NGNG0784デフォルトの名無しさん
NGNGもしリミットを超えたら新しく買いなおさないといけないのでしょうか?
2〜3ヶ月に1度は再インストールするので、ものすごく不安なんです。
0785デフォルトの名無しさん
NGNG割れ厨いってよし
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGマウスカーソルの座標をセットする命令って何でしたっけ・・・?
0788デフォルトの名無しさん
NGNG0xFFFF0E87
0789デフォルトの名無しさん
NGNG参考書の問題で「新規作成」→「リソーススクリプト」を作成して〜
とあるのですが、その本は古めなので.NETが載ってません。
.NETではどうやればよろしいのでしょうか?
リソーステンプレートというのを選んでもフォルダらしいものができるだけですし、
他も.rcらしいものは作成できなそうです。
ヘルプを見てもそれらしいものは見つけられません。
どなたかご教授お願いいたします。
0790787
NGNGSetCursorPos()で、座標数値を与えても、カーソルがモニター上の左上で固まってしまうのです。
なぜだろう・・・
0791デフォルトの名無しさん
NGNG0792787
NGNGためにし、SetCursorPos(400,300)とかして、
OnMouseMoveから呼び出して、
マウスクリックしている間、マウスを動かしてもカーソルが動かないようにしたいのですが、
プログラム自体が停止してしまうような挙動をします・・・。
0793787
NGNGそのままマウスクリック中、OnMouseMove内で、
SetCursorPosに座標Aを与えると、無限ループになるのかな・・・?
0794787
NGNG0795デフォルトの名無しさん
NGNG試してないからわからんが、
LButtonDownでGetCapture()して、キャプチャー中はWM_MOUSE_MOVEメッセージを
破棄というのはどうだろう?
0796デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG.netは持ってないから勘で答えてみるけど、
__gc
ってやつを使う場合、コンパイルオプションに/clr を指定しないと
いけないみたいだけど、やってる?
参考
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcrefEECOMCompilation.asp
0799デフォルトの名無しさん
NGNG.NET2003からだけど問題なくコンパイルできた
0800763.782
NGNG1.プロジェクトの [プロパティ ページ] ダイアログ ボックスを開く。
2.[構成プロパティ] フォルダをクリック。
3.[全般] プロパティ ページをクリック。
4.[マネージ拡張] プロパティを変更。
というMSDNに書いていた手順で変更すればよいのでしょうか?
だとしたら私のVisualC++.NETでは4番の[マネージ拡張]プロパティというのが出てこないのですが・・・
>>799
コンパイルできましたか・・・ご報告ありがとうございました。
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGまあ、勘なのでそんなもん。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcgrfmanagedcprojecttypes.asp
の「Managed C++ アプリケーション」というやつでプロジェクトを作っとかないと4.が出ないとか?
でも2003で問題ないということは、関係ないかも。
0803763.782
NGNG問題が発生しているのは、まさにその「Managed C++アプリケーション」っていうやつで作っているプロジェクトなんですけど4.は出てこないです。
0804デフォルトの名無しさん
NGNGゲームってのはVBでもそうだけど基本的にイベントドリブンじゃなくて、
メインループを作ってその中をぐるぐる回すパターンが多い。
メインループとかいじるとMFCの意味無いじゃん。
だから必然的にSDKでやっちゃう。てかゲーム作成サイトなんてみんなそうでしょ。
まあ、最初MFCで作ってみるといいよ。みんなMFCで最初作ってあれこれ悩んで
SDKに移ったクチが多いと思うから。
こことかゲームの基本的な作り方の参考になると思うよ。
http://www.edit.ne.jp/~skyfox/axis/
上記HPの[AXIS ROOM] の [AXISゲーム製作入門(シューティング編)] てとこ。
今、ライブラリはDLできないけど、読めばなんとなくわかると思うです。
0805デフォルトの名無しさん
NGNGとりあえずC1102をMSDNで調べてみたら?
クラスというのがanimalクラスを指すのか、別のものを指すのか分からん。
0807デフォルトの名無しさん
NGNG板違い
0808
NGNG0809名無し@沢村
NGNGSetWindowPos()
0810
NGNG0811デフォルトの名無しさん
NGNG付属のMSDN Libraryで調べた?
0812デフォルトの名無しさん
NGNGよろしこおながいします。m(__)m
自作のcppとhファイルをコンパイルして、いくつかのプロジェクトで
使いまわしたいのですが、プロジェクトでヘッダだけインクルードしても
「実装がない」といってビルドできません。(cppをファイルに追加すれば
もちろんいけるのですが...)
MFCとかはヘッダだけのインクルードでいいのになんで自作のだと
ダメなのでしょうか?
0813デフォルトの名無しさん
NGNG多分、リンカでバイナリのファイルを指定してやらないと
ダメなんでしょうけど、詳しくは他の方に。(w
MFCの場合はその辺が自動的に設定されていると思われ。
0814デフォルトの名無しさん
NGNGVC側から見ると、MFCは実装がどこにあるかわかってるけど、
君が作ったものはどこにあるかわからないから。
0815812
NGNGレスありがとうございます。
納得できました^^
またよろしくおながいします。。。
0816763
NGNGこれで明日から安心してVC++を学べます。けっきょく詳しい原因はわかりませんでした。
板の皆様、問題解決にご協力いただき本当にありがとうございました。
いつか皆さんのように他人に教えられるくらいになってきます。
それでは失礼しました。ではでは・・・
0817新入社員@インターフェイス開発
NGNGいきなり仕事を渡されて〜〜 わかんないからCと同じようにズラズラとmainに文を書こうとしたら、main()がないでやんの。
VC++の場合はどこから読めばいいんですか?
先輩に質問したら「一応、最初に読むインスタンスはあるけど、オブジェクト指向がわかってたら別にmainから関数を読まなくても、モジュールを読めばいいだけ」
見たいに言われたんですけど、オブジェクト指向ではモジュールを読んだらmain()に何かの値を返さなくてもいいんですか?
モジュールからモジュールを読んでたら、いつ、どうやって終了するんだ? 見たいな疑問があるんですけど・・・・
0818デフォルトの名無しさん
NGNGWindowsプログラミングの場合は、WinMain() がエントリになります。
でもVC++の場合は、プロジェクトによっては WinMain もインクルード
ファイルの中に隠されてしまってるかも。
0819デフォルトの名無しさん
NGNG*crtexe.c - Initialization for client EXE using CRT DLL (Win32, Dosx32)
*
* Copyright (c) 1991-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* Set up call to client's main() or WinMain().
*
*******************************************************************************/
0820デフォルトの名無しさん
NGNG・Win32コンソールアプリケーションならmain()スタートであなたの
やってたのでできると思います。
・Win32アプリケーションだとコンソールアプリとコードはかなり違うのも
多いのですが、Cに近い感覚で文字を表示したり計算したりできます。
http://www.kumei.ne.jp/c_lang/index_sdk.htmlの5章ぐらいまでを
勉強するとすぐにつかめると思います。
・MFCAppWizardが先輩の言ってたものかな?僕は挫折しました。
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
ココはそのスレです。
システム系ならコンソールアプリ、その他なら、理系が得意ならウインアプリ
文系が得意ならMFCにするとか。
0821デフォルトの名無しさん
NGNGドッキングツールバーのつまみのとこが白くてかっちょ悪いんですけど
なんかちがう感じにできないですか?
0823デフォルトの名無しさん
NGNGエラー1 警告0 などはでるんですが。
他のスレで親切な方に再インストしてみと言われたのでしてみたのですが、
JINT35.DLL、VBAR332.DLL、MSXBSE35.DLLというファイルが開くことができませんでしたとでました。
無視するとそのままインストールできるんですが、最後にシンボルファイルをセットアップするようにとでてきます。
それをセットアップしないとデバッカは呼び出し関数のコンテキストを決定できませんと・・。
セットアップするアイコンをクリックしてセットアップしようと思ったんですが
このマシン上の対応するdllファイルとマッチしませんとでて、
最後にすべてのシンボルファイルはシステム上へ正しくインストールされませんとでます・・。
これはエラーメッセージがでないのに関係あるんでしょうか。
向こうのスレではスレ違いだったのでこっちにきました。
分かる方いましたら教えてくださいお願いします。
0824デフォルトの名無しさん
NGNGとりあえずOSとVCのバージョンを教えてください。
0825デフォルトの名無しさん
NGNGVC6以前で「新規作成」→「Win32 Dynamic-Link Library」→「シンボルをエクスポートするDLL」と
なっているものは.NETではどうやればよろしいのでしょうか?
「新規作成」→「MFC DLL」とは思うのですが、その後の
「DLLの種類」でどれを選べばよいのかがわかりません。
アドバイスよろしくお願いします。
0826デフォルトの名無しさん
NGNGOSはXP
VCのバージョンは6.0です。
0827デフォルトの名無しさん
NGNGあるポインタに構造体を連続して連結コピーする方法を教えてください
std::vector<stScreen4_1> _stScreen4_1;
LPDIRECT3DVERTEXBUFFER8 pVB;
void* pVertices;
if( FAILED( pVB->Lock( 0, sizeof(stScreen4_1)*_Ten, (BYTE**)&pVertices, 0 ) ) ) return E_FAIL;
//イメージとしてはこんな感じの事がしたいのですがコンパイルできません(´Д`)
for (i=0;i<_Ten;i++){
memcpy( pVertices+sizeof(stScreen4_1)*i ) ,&_stScreen4_1.at(i) ,sizeof(stScreen4_1) );
}
stScreen4_1 は構造体宣言されています。
こうすると void*が型宣言されていないとでます。
かといってvoid* pVertices;を stScreen4_1* pVertices 代えると危険な香りがします。
なぜなら構造体の要素数が増えたり減ったいするからです。(大丈夫なのかなぁ?)
分かる方、アドバイスお願いします。
0828デフォルトの名無しさん
NGNGまずなによりも、もうちょっと自分のやった手順と結果をきちんと
整理して説明できるようになった方がいい。
本題については済まないがよく分からない。
実はadministrator権限のないユーザーでやってるとか、
WindowsXP Home Editionだったとか…?
>>827
コンパイラがやってることとは違うかもしれないけどこんな感じかな?
pVertices + sizeof(stScreen4_1)*i ) という式だと、
pVertices に (voidのサイズ(!) × sizeof(stScreen4_1)*i ) )を足そうとするが、
voidのサイズなんてものは無いので困る、と。
BYTE* pVertices;
にしてみたらどうだろう?
0829デフォルトの名無しさん
NGNG先生! ありがとう!うまくいきました。
1時間はまってました 感謝感激です。
0830新入社員@インターフェイス開発
NGNGそのサイトを見るたびに俺は猫以下なのかって鬱になるんですけど。
0831デフォルトの名無しさん
NGNG猫未満
0832デフォルトの名無しさん
NGNG1500以上のポイントのポリゴンを印刷するコードを書きました。
この処理は動的DLL内で行っています。
しかし無茶苦茶遅いのです。約7秒も掛かる。
試しに静的DLL内で行ってみると処理に1秒も掛からない。
因みにデバッガで
Polygon(hdc, ppoint, npoint);
関数のみ計測したのです。
こんなもんなのでしょうか?
なんか特別なお呪いが必要なのでしょうか??
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGあぅ、、、
以下の意味と捉えてください。
静的DLL=MFC 拡張 DLL
動的DLL=MFC と動的にリンクするレギュラー DLL
お願いします。
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG静的DLLをMFC拡張DLLに読み直してください。
0837デフォルトの名無しさん
NGNGのラッパクラスCWioを使って組んでるんですが、
いまいち使い方がわかりません…
公開メソッドにおいて
m_wio.ReadPort(BYTE &,Word);
との記述があり、まんま呼び出して使おうとしてるのですが、、
BYTE &←この&はいったいどういった意味なのでしょうか?
BYTE byte;
m_wio.ReadPort(byte,0x2b);
といった記述で実行してるんですが、とりあえずエラーは吐かないんですが、
肝心の実行結果が思い通りに出ません…
WIN上で直接I/O叩くのはあまり行儀よくないらしいですが、
もしよろしければ教えてください…
0838デフォルトの名無しさん
NGNG横に分割はできるんですが縦に分割ができません。
縦に分割する方法はありますか?
ディスプレイが横長のノートPC使ってるんで縦に分割できるとありがたいんです。
0839デフォルトの名無しさん
NGNGバージョンとかも書いてないからよくわからんが、
マニュアルみればいいんとちゃうん?
それとも割れ厨ですか?
0840838
NGNGパッケージについてくるわけないじゃないですか。
ツールバーのウィンドウに、横分割しかないので縦分割はできないのかな、と思ったんです。
バージョンはVS.NET アカデミックです。
これは書いてなかった私の落ち度です、すいません。
0841デフォルトの名無しさん
NGNG参照。
0842838
NGNGおさわがせしますた。
0843デフォルトの名無しさん
NGNGそれとも6.0ですか?
これから言語を買おうと思うのですが、6.0は発売終了で手に入らなくて.netしか売ってない・・・。
どうしよう。
.netだけで勉強しても差し支えないですか?
0844デフォルトの名無しさん
NGNG当たり前に身に付いているはずのことを
いまさら勉強しなければならない時点で、
人生をやり直した方が良さそうだが
0845デフォルトの名無しさん
NGNGこれからプログラムを勉強するのです。
職場ではどうなってるのでしょうか。
6.0は近いうち.NETに取って代わられそうでしょうか。
0846デフォルトの名無しさん
NGNG言語の勉強以前に、製品を正しく比較できると思ったら大間違い。
0847デフォルトの名無しさん
NGNG.netだけで勉強して、6.0が使われてる職場で対応できるのでしょうか。
0848デフォルトの名無しさん
NGNG両方使ってる。
6.0が欲しけりゃVS2003 with MSDNを買ってMSDNで6.0を落とせ。
>>845
職場による
>>847
知らん
0849デフォルトの名無しさん
NGNG.netと6.0が両方使われている職場を考慮したまえ。
0850デフォルトの名無しさん
NGNGアホか?
■ このスレッドは過去ログ倉庫に格納されています