トップページ⇒tech
1001コメント306KB

★初心者にVisual C++を教えるスレ★ Part5

■ このスレッドは過去ログ倉庫に格納されています
0001987NGNG
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
0794787NGNG
他の方法をかんがえます・・・・・・
0795デフォルトの名無しさんNGNG
>>793
試してないからわからんが、
LButtonDownでGetCapture()して、キャプチャー中はWM_MOUSE_MOVEメッセージを
破棄というのはどうだろう?
0796デフォルトの名無しさんNGNG
最近VC++.NETの質問増えてきたねぇ。みんな乗り換えてんのかな。
0797780NGNG
>>782
ごめん、やっぱ、.netは全然違う。
.netが手元にないのでちょっとお手上げかも。
.net持っている人、ヘルプ782です。
0798デフォルトの名無しさんNGNG
>>782
.netは持ってないから勘で答えてみるけど、
__gc
ってやつを使う場合、コンパイルオプションに/clr を指定しないと
いけないみたいだけど、やってる?

参考
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcrefEECOMCompilation.asp
0799デフォルトの名無しさんNGNG
>>782
.NET2003からだけど問題なくコンパイルできた
0800763.782NGNG
>>798
1.プロジェクトの [プロパティ ページ] ダイアログ ボックスを開く。
2.[構成プロパティ] フォルダをクリック。
3.[全般] プロパティ ページをクリック。
4.[マネージ拡張] プロパティを変更。
というMSDNに書いていた手順で変更すればよいのでしょうか?
だとしたら私のVisualC++.NETでは4番の[マネージ拡張]プロパティというのが出てこないのですが・・・

>>799
コンパイルできましたか・・・ご報告ありがとうございました。
0801デフォルトの名無しさんNGNG
C#ってC言語よりもVBに近いんですか?
0802デフォルトの名無しさんNGNG
>>800
まあ、勘なのでそんなもん。

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcgrfmanagedcprojecttypes.asp
の「Managed C++ アプリケーション」というやつでプロジェクトを作っとかないと4.が出ないとか?
でも2003で問題ないということは、関係ないかも。
0803763.782NGNG
>>802
問題が発生しているのは、まさにその「Managed C++アプリケーション」っていうやつで作っているプロジェクトなんですけど4.は出てこないです。
0804デフォルトの名無しさんNGNG
>>776
ゲームってのはVBでもそうだけど基本的にイベントドリブンじゃなくて、
メインループを作ってその中をぐるぐる回すパターンが多い。
メインループとかいじるとMFCの意味無いじゃん。
だから必然的にSDKでやっちゃう。てかゲーム作成サイトなんてみんなそうでしょ。
まあ、最初MFCで作ってみるといいよ。みんなMFCで最初作ってあれこれ悩んで
SDKに移ったクチが多いと思うから。

こことかゲームの基本的な作り方の参考になると思うよ。
http://www.edit.ne.jp/~skyfox/axis/
上記HPの[AXIS ROOM] の [AXISゲーム製作入門(シューティング編)] てとこ。
今、ライブラリはDLできないけど、読めばなんとなくわかると思うです。
0805デフォルトの名無しさんNGNG
>>803
とりあえずC1102をMSDNで調べてみたら?
クラスというのがanimalクラスを指すのか、別のものを指すのか分からん。
0806763NGNG
>>805
高度な検索というヤツにC1102をかけてきましたが0件でした・・・
0807デフォルトの名無しさんNGNG
>>804
板違い
0808 NGNG
誰か、常に最前面にCFrameWndを置く方法教えてくだされ〜
0809名無し@沢村NGNG
>>808
SetWindowPos()
0810 NGNG
>>809 サンクス
0811デフォルトの名無しさんNGNG
>>806
付属のMSDN Libraryで調べた?
0812デフォルトの名無しさんNGNG
VBから最近移ってきた初心者です。
よろしこおながいします。m(__)m
自作のcppとhファイルをコンパイルして、いくつかのプロジェクトで
使いまわしたいのですが、プロジェクトでヘッダだけインクルードしても
「実装がない」といってビルドできません。(cppをファイルに追加すれば
もちろんいけるのですが...)
MFCとかはヘッダだけのインクルードでいいのになんで自作のだと
ダメなのでしょうか?

0813デフォルトの名無しさんNGNG
>>812
多分、リンカでバイナリのファイルを指定してやらないと
ダメなんでしょうけど、詳しくは他の方に。(w

MFCの場合はその辺が自動的に設定されていると思われ。

0814デフォルトの名無しさんNGNG
>>812
VC側から見ると、MFCは実装がどこにあるかわかってるけど、
君が作ったものはどこにあるかわからないから。
0815812NGNG
>>813,814
レスありがとうございます。
納得できました^^
またよろしくおながいします。。。
0816763NGNG
763です。このたびVisualC++.NETを再インストールしたところ問題が解決しました。
これで明日から安心してVC++を学べます。けっきょく詳しい原因はわかりませんでした。
板の皆様、問題解決にご協力いただき本当にありがとうございました。
いつか皆さんのように他人に教えられるくらいになってきます。
それでは失礼しました。ではでは・・・
0817新入社員@インターフェイス開発NGNG
Cはちらっとだけやったことがある、新入社員です。 
いきなり仕事を渡されて〜〜 わかんないからCと同じようにズラズラとmainに文を書こうとしたら、main()がないでやんの。 
VC++の場合はどこから読めばいいんですか?
先輩に質問したら「一応、最初に読むインスタンスはあるけど、オブジェクト指向がわかってたら別にmainから関数を読まなくても、モジュールを読めばいいだけ」
見たいに言われたんですけど、オブジェクト指向ではモジュールを読んだらmain()に何かの値を返さなくてもいいんですか?
モジュールからモジュールを読んでたら、いつ、どうやって終了するんだ? 見たいな疑問があるんですけど・・・・ 
0818デフォルトの名無しさんNGNG
>>817
Windowsプログラミングの場合は、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
>>817 かなりてきとうですが。
・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
あのー。とってもくだらないんですけど。
ドッキングツールバーのつまみのとこが白くてかっちょ悪いんですけど
なんかちがう感じにできないですか?
0822780NGNG
>>816
おめ。
0823デフォルトの名無しさんNGNG
VCでコンパイルしてもエラーメッセージがでないんですがなぜでしょうか。
エラー1 警告0 などはでるんですが。
他のスレで親切な方に再インストしてみと言われたのでしてみたのですが、
JINT35.DLL、VBAR332.DLL、MSXBSE35.DLLというファイルが開くことができませんでしたとでました。
無視するとそのままインストールできるんですが、最後にシンボルファイルをセットアップするようにとでてきます。
それをセットアップしないとデバッカは呼び出し関数のコンテキストを決定できませんと・・。
セットアップするアイコンをクリックしてセットアップしようと思ったんですが
このマシン上の対応するdllファイルとマッチしませんとでて、
最後にすべてのシンボルファイルはシステム上へ正しくインストールされませんとでます・・。
これはエラーメッセージがでないのに関係あるんでしょうか。
向こうのスレではスレ違いだったのでこっちにきました。
分かる方いましたら教えてくださいお願いします。
0824デフォルトの名無しさんNGNG
>>823
とりあえずOSとVCのバージョンを教えてください。
0825デフォルトの名無しさんNGNG
参考書でやってるDLL作成の項での質問です。
VC6以前で「新規作成」→「Win32 Dynamic-Link Library」→「シンボルをエクスポートするDLL」と
なっているものは.NETではどうやればよろしいのでしょうか?
「新規作成」→「MFC DLL」とは思うのですが、その後の
「DLLの種類」でどれを選べばよいのかがわかりません。
アドバイスよろしくお願いします。
0826デフォルトの名無しさんNGNG
>>824
OSはXP
VCのバージョンは6.0です。
0827デフォルトの名無しさんNGNG
VC6で質問させてください。
あるポインタに構造体を連続して連結コピーする方法を教えてください


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
>>823
まずなによりも、もうちょっと自分のやった手順と結果をきちんと
整理して説明できるようになった方がいい。

本題については済まないがよく分からない。
実はadministrator権限のないユーザーでやってるとか、
WindowsXP Home Editionだったとか…?


>>827
コンパイラがやってることとは違うかもしれないけどこんな感じかな?

pVertices + sizeof(stScreen4_1)*i ) という式だと、
pVertices に (voidのサイズ(!) × sizeof(stScreen4_1)*i ) )を足そうとするが、
voidのサイズなんてものは無いので困る、と。
BYTE* pVertices;
にしてみたらどうだろう?

0829デフォルトの名無しさんNGNG
>>828
先生! ありがとう!うまくいきました。
1時間はまってました 感謝感激です。

0830新入社員@インターフェイス開発NGNG
>820
そのサイトを見るたびに俺は猫以下なのかって鬱になるんですけど。
0831デフォルトの名無しさんNGNG
そんなことはないから安心汁
猫未満
0832デフォルトの名無しさんNGNG
先生教えて!

1500以上のポイントのポリゴンを印刷するコードを書きました。
この処理は動的DLL内で行っています。
しかし無茶苦茶遅いのです。約7秒も掛かる。
試しに静的DLL内で行ってみると処理に1秒も掛からない。

因みにデバッガで
Polygon(hdc, ppoint, npoint);
関数のみ計測したのです。

こんなもんなのでしょうか?
なんか特別なお呪いが必要なのでしょうか??
0833デフォルトの名無しさんNGNG
それ以前に静的DLLというのが意味不明
0834デフォルトの名無しさんNGNG
>>833
あぅ、、、
以下の意味と捉えてください。
静的DLL=MFC 拡張 DLL
動的DLL=MFC と動的にリンクするレギュラー DLL

お願いします。
0835デフォルトの名無しさんNGNG
静的はスタティックリンクのことじゃなかったっけ?
0836デフォルトの名無しさんNGNG
ひぇ〜ごめんなさい。
静的DLLをMFC拡張DLLに読み直してください。
0837デフォルトの名無しさんNGNG
http://member.nifty.ne.jp/~masumoto/embed/wio/
のラッパクラスCWioを使って組んでるんですが、
いまいち使い方がわかりません…

公開メソッドにおいて
m_wio.ReadPort(BYTE &,Word);

との記述があり、まんま呼び出して使おうとしてるのですが、、
BYTE &←この&はいったいどういった意味なのでしょうか?

BYTE byte;
m_wio.ReadPort(byte,0x2b);

といった記述で実行してるんですが、とりあえずエラーは吐かないんですが、
肝心の実行結果が思い通りに出ません…
WIN上で直接I/O叩くのはあまり行儀よくないらしいですが、
もしよろしければ教えてください…
0838デフォルトの名無しさんNGNG
マジで初心者丸出しの質問で申し訳ないんですが、ウィンドウの分割をしたいんですが
横に分割はできるんですが縦に分割ができません。
縦に分割する方法はありますか?

ディスプレイが横長のノートPC使ってるんで縦に分割できるとありがたいんです。
0839デフォルトの名無しさんNGNG
>>838
バージョンとかも書いてないからよくわからんが、
マニュアルみればいいんとちゃうん?
それとも割れ厨ですか?
0840838NGNG
そんな、手取り足取りメニューのコマンド1つ1つをすべて解説したマニュアルなんて
パッケージについてくるわけないじゃないですか。
ツールバーのウィンドウに、横分割しかないので縦分割はできないのかな、と思ったんです。

バージョンはVS.NET アカデミックです。
これは書いてなかった私の落ち度です、すいません。
0841デフォルトの名無しさんNGNG
>>937
参照。
0842838NGNG
スレ立てるまでもない質問スレいってきます。
おさわがせしますた。
0843デフォルトの名無しさんNGNG
今、職場で.netって使われてますか?
それとも6.0ですか?

これから言語を買おうと思うのですが、6.0は発売終了で手に入らなくて.netしか売ってない・・・。
どうしよう。
.netだけで勉強しても差し支えないですか?
0844デフォルトの名無しさんNGNG
まず言語の勉強以前に、製品を比較する勉強が先
当たり前に身に付いているはずのことを
いまさら勉強しなければならない時点で、
人生をやり直した方が良さそうだが
0845デフォルトの名無しさんNGNG
>>844
これからプログラムを勉強するのです。
職場ではどうなってるのでしょうか。
6.0は近いうち.NETに取って代わられそうでしょうか。
0846デフォルトの名無しさんNGNG
>>844
言語の勉強以前に、製品を正しく比較できると思ったら大間違い。
0847デフォルトの名無しさんNGNG
いろいろ調べてるんだが、マジでわかりません。
.netだけで勉強して、6.0が使われてる職場で対応できるのでしょうか。
0848デフォルトの名無しさんNGNG
>>843
両方使ってる。
6.0が欲しけりゃVS2003 with MSDNを買ってMSDNで6.0を落とせ。
>>845
職場による
>>847
知らん
0849デフォルトの名無しさんNGNG
>>847
.netと6.0が両方使われている職場を考慮したまえ。
0850デフォルトの名無しさんNGNG
.NET買ってももMCを使わなければいいだけの話だろ
アホか?
0851デフォルトの名無しさんNGNG
そのMCというものが、.NET特有の機能のうちのひとつだということですか?
6.0+MCの機能≒.NET
ですか?
0852デフォルトの名無しさんNGNG
プログラム実行時に、無限ループを任意で抜け出して(ボタンかなんかを設定して)、
次のプログラムに進むことはできますか?
たとえば、円周率を求めてる途中でボタンを押したら、そこまで求めた
値を使って円の面積を求めるとかです。
0853デフォルトの名無しさんNGNG
raiseでシグナルを送る
0854デフォルトの名無しさんNGNG
>>852
マルチスレッドを使うとかそういうのじゃねーの?
0855デフォルトの名無しさんNGNG
GetPriorityClassでプロセスのハンドルが必要ですが
自身のプロセスの場合はwinmain関数の引数にあるhInstanceが
プロセスのハンドルになるんでしょうか?

0856デフォルトの名無しさんNGNG
CStringクラスを利用するときについて、

int型をLPCTSTR型に変換は
a.Format("%d",〜);

でできますが、その逆の
LPCTSTR型をint型に変換
はどうやるんでしょうか?
自分で関数作るしかないですか?
0857デフォルトの名無しさんNGNG
atoi
0858デフォルトの名無しさんNGNG
_ttoi
0859856NGNG
>>857
ありがとうございました。
0860デフォルトの名無しさんNGNG
くだ質で流されてしまったのでこちらで質問させていただきます。

現在VC++.NETを使って勉強しています。
ですが、参考書などは.NET以前(VC++5〜6)のものが多く、例題通りにできないこともしばしばです。
それで質問なのですが、.NETは6以前のものをすべて含んでいると考えてもよろしいのでしょうか?
.NETになってから一気にプロジェクトの作り方などが変わっているので疑問に思いました。
一応6も持っているので6以前の参考書では6を使った方がイイ、などとかはありますか?
.NETと6以前は別物と考えた方がいいのでしょうか。
0861デフォルトの名無しさんNGNG
なんで勉強段階の人が6と.NETの両方持ってるんだ?
6は何の為に持ってたの?割れ物?
0862デフォルトの名無しさんNGNG
>>861
どっちも割ってんだろ。
0863デフォルトの名無しさんNGNG
>>860
MS好きなら.NET使えばいいじゃん。
勉強で.NET持っていてわざわざVer6つか必要もないと思うが。
0864デフォルトの名無しさんNGNG
文字をTextout関数で書きたいんですけど
色を指定することはできないのでしょうか・
今のところ黒でしか表現できなくて・・
SelectObject関数を使うのでしょうか
0865デフォルトの名無しさんNGNG
>>864
文字はSetTextColor、背景はSetBkColor。
0866デフォルトの名無しさんNGNG
>>864
それくらい調べろやヴォケが!
0867860NGNG
>>863
ありがとうございます。
860で書いた通り、ちょっと例題通りにいかなかったりで勉強がしにくかったので、
ver6を使った方が効率いいのか、などと思ったもので。
今後のためにも.NETで慣れて行こうと思います。

>>861
6を手に入れたのが2000年初期でして、
その時はゲームを作りたく、知り合いに聞いてみたところVCで簡単に作れるぞ、と。
それで当時高校生だったからアカデミックを手に入れ、VCの本を買い、勉強を始めたところ、
3日で挫折。そりゃC,C++もできなきゃサパーリ。
PC関係ではない専門学校へ進んだのですが、中退し、去年の暮れ近くから
Cの勉強を本格的に始めたワケでして…現在VCをば。
0868デフォルトの名無しさんNGNG
>>860>>867 がんがれ!!
0869デフォルトの名無しさんNGNG
アカデミックバージョンだと、シェアウェアとして公開できないのですか?
0870デフォルトの名無しさんNGNG
>>867
そんなレベルなら6の参考書は6でやっとけ。
0871デフォルトの名無しさんNGNG
>>869
大丈夫
そのレベルの質問をしている時点で、
レジストしてもらえるソフトを作るのは不可能だから、悩む必要など無い
0872デフォルトの名無しさんNGNG
>>869
安心汁!
誰もお前が作ったソフトになんかレジストしないから。
0873871NGNG
おい、>>872
ケコーン
0874デフォルトの名無しさんNGNG
アカデミックバージョンだと、シェアウェアとして公開できないのですか?
0875デフォルトの名無しさんNGNG
老いた頭の回転の悪い貧乏リーマンは先が無くて大変だな。
0876デフォルトの名無しさんNGNG

土方として、どうやって生活していこうと思ってるんだ?あ?
0877デフォルトの名無しさんNGNG
>>874
むかしはできなかってkど、今は制限なしだよ。
アカデミック版でもOK!
0878デフォルトの名無しさんNGNG
>>874
大丈夫
そのレベルの質問をしている時点で、
レジストしてもらえるソフトを作るのは不可能だから、悩む必要など無い
0879デフォルトの名無しさんNGNG
>>874
安心汁!
誰もお前が作ったソフトになんかレジストしないから。
0880デフォルトの名無しさんNGNG
デジャブ?!
0881デフォルトの名無しさんNGNG
デジャヴ
0882871NGNG
ヒデブ
0883デフォルトの名無しさんNGNG

OSのファイル/ファイルシステムに拡張情報を埋め込むことって
できないものですかね。

特にmp3などの管理を想定しているのですが、漢字ファイルネーム
の他に、ふりがな情報を埋め込めると管理や検索が楽になると
思うんですよね。他にはmp3に限りませんがCRC情報なども管理
できるといいと思うのですが。

ファイルのお尻に埋め込むことも可能だと思いますが、これだと
Winampなんかで再生できるのかどうか。各フォルダに隠しファイル
を置いて、管理する方法も考えてみましたが、エクスプローラで
ファイルを移動させたときに整合性を取るのが面倒だなと。

なんか良い方法ないもんですかねぇ。

0884デフォルトの名無しさんNGNG
mp3のフォーマット自体に情報を埋め込むためのタグがある
0885デフォルトの名無しさんNGNG
>>883
Mac 使えば。
0886デフォルトの名無しさんNGNG
>>883
NTFS使え。
0887デフォルトの名無しさんNGNG
>>883
IPropertySetStorage
IPropertyStorage
0888デフォルトの名無しさんNGNG
おせてくださーい!
シェルでDSWファイルをダブクリするとVCが立ち上がりますが、既存の
VCが閉じられてしまいます。別のプロセスとして立ち上げたいのですが
方法はあるのでしょうか?
0889名無し@沢村NGNG
>>888
ヌヒよ、VCを立ち上げてからプロジェクトを開けばいいだけだと思うが
0890デフォルトの名無しさんNGNG
沢村に教えてもらうとは…
プログラムをやめることを考えた方がいいかもよ
0891888NGNG
>>889
シェルからじゃ無理なんですかね。
オプションで「別のプロセスとして起動する」とかありそうな
気がしたのですがなさそうなので。。。
0892デフォルトの名無しさんNGNG
あるプロジェクト内で作ったクラスを、また別のプロジェクトで利用するには、
どんな手順でやればできるのでしょうか?
0893デフォルトの名無しさんNGNG
>>892
クラスのcppとhをその別のプロジェクトに含めれば良いだけじゃん?
■ このスレッドは過去ログ倉庫に格納されています