★初心者にVisual C++を教えるスレ★ Part28at TECH
★初心者にVisual C++を教えるスレ★ Part28 - 暇つぶし2ch178:デフォルトの名無しさん
07/12/17 19:24:56
>>177は馬鹿デツカww
>検索したらなんか「ABIの違いでできない」


179:デフォルトの名無しさん
07/12/17 19:30:28
windows ABIについて勉強するか

180:デフォルトの名無しさん
07/12/17 19:44:03
Windows アクティブBasic インターフェース

181:デフォルトの名無しさん
07/12/17 19:44:29
application binary interface

182:デフォルトの名無しさん
07/12/17 19:46:06
Windows アプリケーション ベーシック インターナショナル

183:デフォルトの名無しさん
07/12/17 19:47:55
ApplicatiomBinaryInterfaceてのがあるのか。
説明を読んでも、いまいちピンとこないが。

184:177
07/12/17 20:27:23
>>178
何か変でした?
このへん↓を参考にしたんですが。
URLリンク(ja.wikipedia.org)

あまりにも初歩的な質問かもしれませんが
何か具体策がありましたらお教えください。

185:デフォルトの名無しさん
07/12/17 20:39:37
まあでも、読めたら読めたで、64bitプロセス側で32bitメモリへ
マーシャリングするひつようがあったり、32bitから64bitへの
コールバックで悩まされたり、64bitポインタと32bitポインタの区別を
つけなきゃならなくなったりで、結構大変そうな気はするな。

186:デフォルトの名無しさん
07/12/17 20:55:57
>>177はスレタイも読めないのか・・・・
★初心者にVisual C++を教えるスレ★ Part28

187:177
07/12/17 21:19:23
>>185
やはりDLLを64ビットにビルドし直すほうが
結果的に問題が少なくなりそうですね。
その方向で検討してみます。

>186
スレ違いだったようですね。
スレ汚し失礼しました。

188:デフォルトの名無しさん
07/12/18 08:27:06
ostringstreamにDWORD型を<<すると10進になるのですが
16進で入れるにはどうかけばいいでしょうか

189:デフォルトの名無しさん
07/12/18 08:38:07
<< std::hex <<
を入れるとできました
ググり方が悪かった。。。

190:デフォルトの名無しさん
07/12/18 08:52:48
C++の基本的なお勉強ができてきたのでいろんなライブラリをみてまわろうと思っています。
STL、BOOST、ATL、WTL、MFC、POCOあたりは見てきたのですが、
他にメジャーとか、開発効率がよくなりそうなライブラリを教えてもらえないでしょうか。

191:デフォルトの名無しさん
07/12/18 10:04:52
ボーランドC++

192:デフォルトの名無しさん
07/12/18 10:34:35
質問です。
大量の各国語の文字が書かれたテキストデータから
任意の文字を検索するプログラムを作っているのですが
wchar_tで内部の処理をする場合、読み込むテキストの文字コードはutf-8にするんでしょうか?
それともeucでしょうか?

また、テキスト読み込み後、コマンドラインからwscanf()で検索対象の文字を取ってるのですが
コマンドラインからの入力の標準の文字コードはsjisになってる気がするのですが、これはどうすればいいのでしょうか?

よろしくお願いします。



193:デフォルトの名無しさん
07/12/18 10:38:26
charでも検索できるし高速だよ
ワイド文字とのちがいは、文字単位が判明するかどうかだけ
char型は1バイト、2バイト文字が混在する

194:デフォルトの名無しさん
07/12/18 10:40:50
wchar_tはutf-16のはず
char型はなんでも受け入れる
前者ならutf-16にして渡し、後者はsjisにでもしておけばよい

195:デフォルトの名無しさん
07/12/18 10:41:59
すまん
日本語限定ではないのか
それならwchar_tにするしかないな

196:デフォルトの名無しさん
07/12/18 10:52:49
char型にしてUTF-8にするか、wcharでUTF-16にするかな

197:デフォルトの名無しさん
07/12/18 10:57:18
多言語だと4バイト文字とかも出てくるから、wvharでも文字単位は判別できないのかなあ?

198:デフォルトの名無しさん
07/12/18 10:59:18
wcharはunsigned shrot int型だよね 自動的に一語が入るように拡張しないよね?
万能な言語処理する型はないのか

199:192
07/12/18 11:04:39
レスありがとうございます。
なるほどwchar_tはUTF-16でしたか・・・

char&sjisを使わないのは、1つの領域に1バイトしか格納されないので
もし、検索対象とたまたま一致する別の1バイトずれた文字列までヒットしてしまうと
まずいからです。あと、後々アルゴリズム的に正確な文字数がわかった方がうれしいので・・・。



200:デフォルトの名無しさん
07/12/18 11:10:18
sjisだと多言語無理だろう uft8ならcharでもズレとかでないはず

201:デフォルトの名無しさん
07/12/18 13:24:55
ちょっときになったんだけどグラフソフトとかでたくさんの
窓出すときって,ウインドウ登録するときに使うプロシジャー関数を
同じにしてもいいのかな?

202:デフォルトの名無しさん
07/12/18 13:31:18
ウインドウ登録ってウインドウクラス登録のこと?
別にいいけど、同じウィンドウクラス使ってCreateする方が多いんじゃない?

203:デフォルトの名無しさん
07/12/18 13:38:59
>>202
ああそうかw馬鹿だ自分w
じゃあ実際書くときはウインドウハンドルとかの必要な情報を構造体のメンバーにして
リストでつないでいけばいいのかな.

204:デフォルトの名無しさん
07/12/18 15:25:19
あの、VC++で16*16の画像を256*256に拡大したいのですが、どうすればいいですか!?
画像は、モノクロです。

205:デフォルトの名無しさん
07/12/18 15:33:44
ツールの使い方なのかプログラムなのか

206:デフォルトの名無しさん
07/12/18 17:01:46
VC++6.0でCFileDialogを使っているのですが
最近の豪華なファイルを開くダイアログを表示するにはどうすればいいでしょうか?
CFileDialog *dlgFile;
dlgFile = new CFileDialog(
TRUE,// 種類 TRUE : FileOpen
_T("*"),// デフォルトの拡張子
_T("*.*"),// 初期ファイル名
OFN_FILEMUSTEXIST, // ダイアログの設定フラグ:既存のファイル
_T("全て(*.*)|*.*||")// フィルタ
);

dlgFile->DoModal();

現在はこのようなコードです。

207:デフォルトの名無しさん
07/12/18 17:04:36
>最近の豪華なファイル
昔はしょぼかったんだろうか。

208:デフォルトの名無しさん
07/12/18 17:14:18
MFC使わずにAPI呼んでみ。
::GetOpenFileName() のほうな。

209:デフォルトの名無しさん
07/12/18 17:28:59
>>208
ありがと!
豪華になりました!

210:デフォルトの名無しさん
07/12/18 17:48:17
>>198
Unicodeには結合などがあるから、
例えUTF-32を使っても1文字が1単位で表せるとは限らない。

あと、C++だと規格上wchar_tは独立した型でなければならず、
VC++でも8からそれが既定。7.1でも/Zc:wchar_tで使える。

211:デフォルトの名無しさん
07/12/18 18:35:18
vector<char>とUTF8を使って多言語のクラスでも作ろうか

212:デフォルトの名無しさん
07/12/18 18:40:00
>>176の質問はスルーですか?


213:デフォルトの名無しさん
07/12/18 18:41:53
>>212
よく判らんが、DoModal()を多発してメモリ食い潰すって落ち?

214:デフォルトの名無しさん
07/12/18 18:43:42
メッセージループの中でDoModalは無謀だろう

215:デフォルトの名無しさん
07/12/18 18:47:40
>>211
山ほど作り直さないといけない文字列操作系のメソッドが・・・

216:176
07/12/18 18:48:51
こんな感じです
BOOL ***Dlg::PreTranslateMessage(MSG* pMsg)
{
 INT_PTR nChar;
 if( pMsg->message == WM_KEYDOWN )
 {
  
  nChar = pMsg->wParam;
  switch( nChar ){
   case VK_NUMPAD0 :    // 0 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD1 :    // 1 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD2 :    // 2 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
 }
 return CDialog::PreTranslateMessage(pMsg);
 }
 return 0;
}

217:デフォルトの名無しさん
07/12/18 18:53:06
>>216
そういうときは、目的のキーのときはそのまま0リターンして
ダイアログでWM_KEY受け取っては?

218:デフォルトの名無しさん
07/12/18 19:18:39
bluetoothを使った通信プログラムを組みたいのですが、
なにからはじめればいいかまったくわかりません。
通信系には弱くて、winsockを使ったudp通信ぐらいしかしたことがありません。
ご教授おねがいします

219:176
07/12/18 19:28:49
>>217
具体的に教えてください、インプリメントしてもらえば更に、理解し易いのですが


220:デフォルトの名無しさん
07/12/18 19:36:53
>>149
亀レスだけど俺はVisual C++ Express EditionとIE7入れてるけど問題ないよ
SP1も適応してない

221:デフォルトの名無しさん
07/12/18 22:58:57
すいません C言語を一通り終え、先輩から
「よしじゃあVC++で電卓作ってみようか。Cと変わらないからすぐ出来るでしょ」
とMFCの使い方の本を渡されたんですが、正直全くわかりません。

一体何から学べばいいでしょうか・・・?

222:デフォルトの名無しさん
07/12/18 23:19:18
電卓はプロでも難しい

223:デフォルトの名無しさん
07/12/18 23:36:53
電卓舐めたら痛い目見るぜ。

とりあえず整数の四則演算だけ実装してみたら?
ダイアログベースで、EditBox一個とボタンをいくつか貼り付ければそれなりの形はできる。
EditBoxにメンバ変数を割り当てる際、値ではなくコントロールにしておくのがコツか?

224:デフォルトの名無しさん
07/12/18 23:37:39
MFCより前にC++言語を一通りやれ。

225:デフォルトの名無しさん
07/12/18 23:38:51
Visual C++ 2005 Express EditionってVisuaStudioみたいに「リソースの追加」
で自動でリソースファイルとヘッダファイル作ってくれない?
自分で直接打ち込んで作れってことですか?

226:デフォルトの名無しさん
07/12/18 23:45:42
>>224
ですよね・・・
coutとかprintf関数と一緒?けど関数の形してないしな とか疑問がすごかったです・・・。
とりあえずC++からやってみます。
今週中に電卓つくってねーとか言われたけど無理だろこれwwwwwww

227:デフォルトの名無しさん
07/12/18 23:53:32
これ提出すればよろし

file://localhost/C:/WINDOWS/system32/calc.exe

228:デフォルトの名無しさん
07/12/18 23:57:30
C++でCの構文そのまま使えるから
時間があればC++を勉強すればいいけど
とりあえずMFCを触ってみたいってだけなら
基本的にCで書いて、MFC独特の所だけ覚えれば良いんでないかい?
printfも使えるし。

ま、MFCならprintf使ってもしょうがないけどな。
MFCなら多分コンソールアプリじゃないだろうし。



229:デフォルトの名無しさん
07/12/19 01:28:30
boostのspiritというものを使えば楽にできるらしいよ

230:デフォルトの名無しさん
07/12/19 01:49:12
四則演算の電卓を作るだけなら本見ながらやれば1週間でできるだろ
ただそれは作った。であって作れるようになった。ではないけど

231:デフォルトの名無しさん
07/12/19 02:08:08
無理だろ。Cでコンソールアプリしか作ったことないなら、
クラスも知らない、WinAPI も知らない、ウィンドウやメッセージの概念も知らない、
そんな状態で MFC を使わされても 「???」 しか浮かばないだろうぜ

232:デフォルトの名無しさん
07/12/19 09:13:55
コンソールアプリでも関数電卓になると途端に難しくなる
たしかに基本のアルゴリズムに関して覚えるいい勉強にはなったけど・・・
まあ、四則演算だけならできそうだが・・・いきなりMFCとかすごいねw

233:デフォルトの名無しさん
07/12/19 09:41:00
その先輩は自分のすごさをアピールするために
さも簡単そうに言ってるだけだな。
本当は自分も昔苦労したくせに。


234:デフォルトの名無しさん
07/12/19 10:19:09
とりあえずボタン押したら数字表示する
ここまでが第1目標

235:デフォルトの名無しさん
07/12/19 10:34:06
シェルの実装ができるようになりたい

236:デフォルトの名無しさん
07/12/19 11:14:33
>>219
ちょっと試したけど、とりあえず問題ないぞ?
問題があるのはその最後に出すダイアログなんじゃないの?
使いまわししてるのか?

237:デフォルトの名無しさん
07/12/19 12:46:11
初心者ですが質問させてください.
WinMainやmainで計算された結果を格納している数値配列を
プロシジャーに渡したいんですが何かいい方法がないでしょうか?
ちなみに配列は動的に確保しているのでグローバルにするのはできません.
渡すことができれば描画関係はプロシジャーの中でできるのですが・・・

238:デフォルトの名無しさん
07/12/19 12:52:29
引数にすればいい、、、、ってここでいうプロシジャーは何?
ウィンドウプロシージャのことか?
メッセージか何かで渡したいなら、WM_COPYDATAがプロセス間でも使える。

239:デフォルトの名無しさん
07/12/19 13:03:39
>>238
そうです.ウインドウプロシージャです.すいません.
自作メッセージを送るときだけ配列をウインドウプロシージャに渡したいのです.
WM_COPYDATAというのが使えるんでしょうか?少し調べてみます.
ありがとうございました.

240:デフォルトの名無しさん
07/12/19 13:12:22
218おねがいします

241:デフォルトの名無しさん
07/12/19 13:41:43
218はスルーでおねがいします

242:デフォルトの名無しさん
07/12/19 15:20:35
bluetoothなんてVC++では制御できないよねー

243:デフォルトの名無しさん
07/12/19 15:35:13
さあ?自分で調べれば?
金くれたら調べてやってもいいけど

244:デフォルトの名無しさん
07/12/19 16:07:34
218と221の扱いの差に吹いたw
可愛そうだからレスしてやるw

確かvistaのSDKだったらwinsock2でいけたはず
詳しいことはわからん、後誰かよろしく

245:デフォルトの名無しさん
07/12/19 16:48:09
メニューリソースにセパレータを追加するにはどうすればいいでしょうか?
「-」を入れればいいかと思ったのですがだめでした。

246:デフォルトの名無しさん
07/12/19 16:50:09
すみません。セパレータというチェックボックスがありました。orz

247:デフォルトの名無しさん
07/12/19 21:12:06
>>239
同一プロセス内だったら、自分で好きなメッセージを作って
それをやり取りすればいいんだよ。

値はWM_APP + nの中から、nは0以上0x4000未満。

248:デフォルトの名無しさん
07/12/19 21:30:39
a.hとb.hがありそれぞれがそれぞれを参照しているのですが
コンパイルエラーになります。
これを回避する方法はあるでしょうか?
#include "a.h"
#include "b.h"

#include "b.h"
#include "a.h"

どちらにしても、相手を参照しているのが問題のようなのですが
対策がわかりません。よろしくお願いします。

249:デフォルトの名無しさん
07/12/19 21:37:04
まずはインクルードガードでググレ

250:デフォルトの名無しさん
07/12/19 22:15:10
>>248
前方宣言でググれ。
まあ設計見直すのが先だな。

251:デフォルトの名無しさん
07/12/19 22:31:32
>>249
なんか違うような・・・

>>250
ありがとうございます。たぶんわかりました。

252:デフォルトの名無しさん
07/12/19 22:53:32
VC++2005 Express Edition + Windows SDK + DirectX を使い、
Win32アプリケーションのゲームを作ろうとしている所です。

プロジェクト設定:コンソールアプリケーション
アプリケーションの種類:Windowsアプリケーション

としてプロジェクトを作成しました。

さて、ここで質問です。この場合にフォームの追加、編集はどのようにすればよいのでしょうか?
.NET Frameworkのアプリですと、Borland C++ Builderのような感じで
フォームをGUIで編集できるようなのですが、上記のようなWin32アプリでも同じような
フォームの編集機能はありますでしょうか?

とりあえずプロジェクト作成時に作られたフォームのメニューIDだけはVC++6.0の
リソースエディターで編集できましたが、新フォーム追加や呼び出し、
ウィンドウのプロパティの編集などがさっぱりです

どなたか同じような環境でやっておられる方、助言下さい。よろしくお願いします。

253:デフォルトの名無しさん
07/12/19 23:19:56
EEでは無理

254:デフォルトの名無しさん
07/12/20 00:07:00
>>253
EEでは無理、という事は、逆に言えばStanderd Edition等であれば
Win32アプリケーションであってもフォームのGUIによる編集機能が備わっている、
という事なのでしょうか?

とりあえず、ゲームのオプション設定等ができる別ウインドウをいくつか作れればいいので
特にGUIでのフォーム編集に拘っているわけではないです。
もちろんできるに越したことはないですけれども。

何かしら良いやり方があれば教えてください。

255:デフォルトの名無しさん
07/12/20 00:09:47
Std以降も、ダイアログエディタとMFC/ATLが付くってだけで、
VC6時代のやりかたとそんなに変わってないよ。

256:デフォルトの名無しさん
07/12/20 00:14:54
>>255
VC6はインストールはしてあったのですが、何分BCBばかり使っていましたので
VC6時代のやりかた自体がわかっていない状態です

長くなりそうな内容でしたら、何か参考になるページとかありましたら教えてほしいです。
よろしくお願いします

257:デフォルトの名無しさん
07/12/20 00:37:08
VC++ 6.0を使用してます。

初めてサブクラス化に挑戦していて、同じクラス(ボタンとかチェックボックスとか)では成功したのですが、
リストボックスとボタンなどを一緒に SetWindowLong で同じ新規プロシージャ当てると、どちらかが非表示か無効状態になります。
異なるクラス名での同一プロシージャへのサブクラス化は出来ますでしょうか・・・?
またその場合、するべき事はどのような事がありますか?

VBやMFCを使ったサブクラス化のソースはあるのですが、Win32SDKでのサブクラス化の例が少なくてここにたどり着きました。
どうか助言のほどよろしくお願いします。

258:デフォルトの名無しさん
07/12/20 01:10:15
>>256
画面が必要なトコをMFCアプリケーションで作ってCreateProcessで起動したら?
DLLでもいいけど

259:デフォルトの名無しさん
07/12/20 01:43:11
>>257
CallWindowProcでは、それぞれの基のウィンドウプロシージャを呼んでいる?
リストボックスまでボタンのウィンドウプロシージャを呼んでいるなんて事態になっていないか。

260:257
07/12/20 05:57:09
>>259
なるほど、GetWindowLongはそのためのものだったんですね。
それぞれのクラスのデフォルトプロシージャを取得しておいて、
まとめたプロシージャでクラス名ごとにreturnするCallWindowProを変えたら上手く行きました。

非常に勉強になりました。ありがとうございました。

261:デフォルトの名無しさん
07/12/20 18:21:48
HTMLのリンクにマウスを持っていったときに指マークになりますが
あれはどうやってやればよいでしょうか?

262:デフォルトの名無しさん
07/12/20 18:52:50
ロードカーソル

263:デフォルトの名無しさん
07/12/21 08:27:30
CInternetSessionを使う場合は自動的にIEの持っているクッキーを
送信してくれるのでしょうか?
それともGetCookieやSetCookieを使って自分でセットしてやる
必要があるのでしょうか?

264:デフォルトの名無しさん
07/12/21 08:44:09
経路上か鯖側で通信内容確認できないの?
そんな状況ならやめた方いいよ

265:デフォルトの名無しさん
07/12/21 12:56:35
>>264
キャプチャしてみたところついてました。
助かったー

266:デフォルトの名無しさん
07/12/21 16:14:43
Visual C++ 2005 Express Edition でWindowsアプリケーションを作れないかと調べたら、
Microsoft Windows SDK をダウンロードして設定をいじったらできる、という記述を見つけました。
しかしMicrosoftのホームページを調べてみても、「Windows SDK for Windows Vista」みたいなのしか見つかりません。
XPではこのやり方では無理なのでしょうか?

267:デフォルトの名無しさん
07/12/21 16:15:57
for Vistaと書いてありますがXPでも使えるという罠です

268:デフォルトの名無しさん
07/12/21 16:26:08
ありがとうございました、早速ダウンロードしてみます!

269:デフォルトの名無しさん
07/12/21 17:37:46
今までBorlandC++でコンパイルできてたソースをVC++でコンパイルしてみたら、

○ 番目の引数を 'char [○]' から 'LPCWSTR' に変換できません。

というエラーが大量に出てきました。
ヘルプで調べて、暗黙の変換をしようとすると出るから明示的に型キャストしろ、
とあったので、 (LPCWSTR)"文字列" という形にしたところほとんどのエラーは消えたのですが、
CreateWindow関数の第二引数だけ、このやり方でも同じエラーが出てしまいます。
文字列を一度char配列に格納して型キャストしたポインタを入れてもだめでした。
どうしてなのでしょうか?

270:デフォルトの名無しさん
07/12/21 17:40:23
>>269
今のVCはUnicodeがデフォだから。
両方で共通に使いたいならANSIビルドにすればいいし
UNICODEのままでやるつもりなら、_T()マクロとか、TCHAR、LPCTTRとか駆使して書き換え。

271:デフォルトの名無しさん
07/12/21 17:41:57
あと、とりあえずなんでもキャストすんな。
文字列は、_T("")でくくれ
"string" -> _T("string")

272:デフォルトの名無しさん
07/12/21 17:42:33
URLリンク(oshiete1.goo.ne.jp)

273:デフォルトの名無しさん
07/12/21 17:46:35
なるほど、文字コードの違いのせいでしたか。
ありがとうございました。

274:デフォルトの名無しさん
07/12/22 07:37:22
WinXP、VisualStudio2005ExpressEditionです。

パソコンの名前:AAA   XPのユーザー名:BBB
VisualStudio2005で操作するプロジェクト名:CCC

のときに、「CCC.BBB.AAA.user」という名前のファイルがプロジェクトのあるフォルダに勝手に作成されています。
個人情報が漏れそうで怖いんですが、VisualStudio2005で作成した実行ファイルにもユーザー名が埋め込まれていたりしますか?
それとも、.userのファイルだけ気をつければパソコンの名前やユーザー名は分からないですか?

275:デフォルトの名無しさん
07/12/22 08:50:51
わかります

276:274
07/12/22 09:25:47
作成した実行ファイルを右クリックして見られるプロパティにはユーザー名が含まれていないようでした。
ファイルのヘッダ?みたいな部分に書かれているんでしょうか?
確かめる方法と消す方法を教えてください。
OSのユーザー名は最初に作成したadministrator権限のなので、変更は不可能みたいです。

277:デフォルトの名無しさん
07/12/22 10:04:06
exeをバイナリエディタで検索かけてもユーザー名は検出されなかったけど
>>275は適当言ってるだけじゃねーの?

278:デフォルトの名無しさん
07/12/22 11:29:12
VC++もMFCがあればVBとあまり変わらないんですね。
なんかほっとしました。

279:デフォルトの名無しさん
07/12/22 13:42:39
?!

280:デフォルトの名無しさん
07/12/22 14:19:49
デバッグ情報出力するようになってると
プロジェクトのフォルダのパスが埋め込まれるから
マイドキュメントなんかにいれてるとわかる。

281:デフォルトの名無しさん
07/12/22 14:39:48
よくわからないんだけど普通のC++とかとVisual C++ってのは違うの??

282:デフォルトの名無しさん
07/12/22 14:46:37
C++ってのはプログラミング言語の名前。
VC++ってのはC++でプログラムを作成するのをサポートしてくれるソフトウェア。

htmlとホームページビルダーみたいな関係だと思えばいい。

283:デフォルトの名無しさん
07/12/22 14:48:11
じゃあここはVC++を使ったC++プログラミングスレというわけか、さんくす

284:デフォルトの名無しさん
07/12/22 16:23:27
ある本を参考にして、勉強しています。

プログラムを開こうとすると、
「Classview情報ファイルにアクセスできません。ClassView 情報を取得できません。」
と怒られるのですが、何が原因なのでしょう?

ファイルが読み取り専用から、チェックを外しています。

285:デフォルトの名無しさん
07/12/22 16:53:43
そのある本とやらを教えろ。話はそれからだ

286:デフォルトの名無しさん
07/12/22 17:05:38
ClassView情報ファイルを消して、再作成させろ。
*.clwだっけ?たしか。

287:デフォルトの名無しさん
07/12/22 17:31:19
>>286
有難うございます。
.clw? 等を全て削除。(主ファイルだけ残しました。)
再びVCを立ち上げて再ビルド。

何故か 成功 何故ですか?w
バグが怖いので、最初から作ります。

288:デフォルトの名無しさん
07/12/22 20:09:49
環境 VC++ 6.0 SDK
初めてUnicodeでのビルドに挑戦して文字列操作に悩んでます。
プリプロセッサで _UNICODE 設定し、リンクアウトプットに wWinMainCRTStartup としてメイン関数は wWinMainにしました。

例えば

static LPTSTR szAppPath;
GetModuleFileName(NULL, szAppPath, MAX_PATH);

のようにやると、コンパイルは通るのですが、実行時にデバッグ画面に移ります。
これを TCHAR szAppPath にすると問題有りません。
マルチバイトとワイドバイトの違いとchar周りを調べてるのですが、いまいち理解出来ずに居ます。
助言頂けたら幸いです。

289:デフォルトの名無しさん
07/12/22 20:19:21
>>288
static LPTSTR szAppPath;

LP~はポインタ。実質

static wchar_t* szAppPath;

と同義。TCHAR だとコンパイルとおらないと思うんだけど?

290:デフォルトの名無しさん
07/12/22 20:41:47
static TCHAR szAppPath; 
ならコンパイルは通るでしょ。ただ1文字分しか領域が無いから落ちると。
static TCHAR szAppPath[MAX_PATH]; でOK

291:デフォルトの名無しさん
07/12/22 20:43:48
あ、エラーは2行目か

292:288
07/12/22 21:25:05
分かりづらかったですね、すいません。
そうです、TCHARで配列指定すれば通ります。
LPTSTR指定すると2行目のGetModuleFileName関数で落ちます。

293:デフォルトの名無しさん
07/12/22 21:31:42
LPTSTRとか訳の分からないものが出てきたら、それを選択してF12押すと正体が見れるよ。
ただ>>288はMBCSとかUnicodeとか関係のない、ただのロジックミス。

294:デフォルトの名無しさん
07/12/22 21:51:22
というか、ぬるぽだろそれは。
実体を確保してやれよ。

295:デフォルトの名無しさん
07/12/22 21:51:46
wWinMainCRTStartup としてメイン関数は wWinMain
みたいないらんことする必要ない

296:デフォルトの名無しさん
07/12/22 22:12:03
>>292
今までこんなことやったことあるか?
static char *szAppPath;
GetModuleFileName(NULL, szAppPath, MAX_PATH);

297:288
07/12/22 22:17:50
8bitでの char *szAppPath; と同様ということですね。
初めて16bitを扱うので、ちょっとまだ混乱気味ですが TCHAR szAppPath[MAX_PATH]; にするか、
もしくはAlloc関数などで動的確保すれば自分のやりたい事が出来るという事であってますでしょうか・・・。

298:デフォルトの名無しさん
07/12/22 22:31:34
別に今まで通り普通に作るだけだろ
今までどうやってたか不思議

299:デフォルトの名無しさん
07/12/22 23:00:51
サンプル探して真似するだけ
慣れるまでは自分で勝手にコード書いちゃダメ

300:デフォルトの名無しさん
07/12/22 23:51:51
サンプルがなかなか見つからない

301:デフォルトの名無しさん
07/12/23 00:46:34
サンプルは簡単に見つかる

302:デフォルトの名無しさん
07/12/23 02:07:12
Visual C++ (やりたい事) でぐぐれ

303:デフォルトの名無しさん
07/12/23 03:17:02
Visual C++ アクションゲーム

出てこないよ

304:デフォルトの名無しさん
07/12/23 03:40:40
いっぱい出てきたよ

305:274
07/12/23 04:25:21
>>280
プロジェクトのフォルダの絶対パスに、ユーザー名が含まれていなければセーフってことですね。
それならたぶん大丈夫です。ありがとうございました。

306:デフォルトの名無しさん
07/12/23 05:07:52
>>304
詳しく

307:デフォルトの名無しさん
07/12/23 06:16:47
VC6のやつ 他にMSDNのサンプルにもある
ATL\Include\ATLBASE.H(4934): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(4976): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5042): GetModuleFileName(m_hInst, szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5925): GetModuleFileName(pM->m_hInst, szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5987): GetModuleFileName(pM->m_hInstTypeLib, szModule, _MAX_PATH);
ATL\Include\ATLWIN.H(1353): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLWIN.H(1379): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH);
CRT\SRC\ASSERT.C(151):if ( !GetModuleFileName( NULL, progname, MAX_PATH ))
CRT\SRC\CRT0MSG.C(242):if (!GetModuleFileName(NULL, progname, MAX_PATH))
CRT\SRC\DBGRPT.C(477):if (!GetModuleFileName(NULL, szExeName, MAX_PATH))
CRT\SRC\HEAPINIT.C(92):GetModuleFileName(NULL,env_app_name,sizeof(env_app_name));
CRT\SRC\STDARGV.C(103):GetModuleFileName( NULL, _pgmname, sizeof( _pgmname ) / sizeof(_TSCHAR));
MFC\SRC\APPINIT.CPP(79): VERIFY(::GetModuleFileName(m_hInstance, szBuff, _MAX_PATH));
MFC\SRC\APPUI1.CPP(109): GetModuleFileName(NULL, szAppName, _MAX_PATH);
MFC\SRC\CTLLIC.CPP(36): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH);
MFC\SRC\CTLREG.CPP(87): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH);
MFC\SRC\DLLINIT.CPP(118): GetModuleFileName(m_hModule, szName, _countof(szName));
MFC\SRC\DUMPSTAK.CPP(58): cch = GetModuleFileNameA((HINSTANCE)memoryBasicInfo.AllocationBase,
MFC\SRC\FILECORE.CPP(700): ::GetModuleFileName(hInst, szLongPathName, _MAX_PATH);
MFC\SRC\OLETYPLB.CPP(75): GetModuleFileName(AfxGetInstanceHandle(), szPath, _MAX_PATH);
MFC\SRC\VIEWHTML.CPP(447): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
MFC\SRC\VIEWHTML.CPP(468): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))


308:デフォルトの名無しさん
07/12/23 17:27:27
JPEGの画像を扱いたいプログラムを構想中です。
現在 VC6.0なのですが、難しいですか?

少し検索してみたのですが、VC7.0には
「CImageクラスという便利なクラスが追加されました。」
と言う事なのですが、VC7.0にした方が良いですか?
その時の利点と欠点を分かり易く説明ヨロ

309:デフォルトの名無しさん
07/12/23 17:53:33
何が利点・欠点になるかは作るモノ次第。
他にもlibjpeg、Susie plug-in、GDI+とかいろいろあるから、自分で調べて判断してくれ。

310:デフォルトの名無しさん
07/12/23 18:17:46
Susieをスーシーって読んでた俺は間違いなくおかしい
友人はスージーと読んでいてよく議論した

311:デフォルトの名無しさん
07/12/23 18:18:37
むしろスシエって読んでた

312:デフォルトの名無しさん
07/12/23 19:32:02
CImageあれば使えばいいし、
CImageなかったら作れないものでもないし

313:デフォルトの名無しさん
07/12/23 21:21:33
>>307
マジですか うほー

314:デフォルトの名無しさん
07/12/23 23:06:54
DWORD(unsigned long)をprintfなんかで表示する場合

%ul と %lu どっちが正しいの?

315:デフォルトの名無しさん
07/12/23 23:47:03
>>314
%ulなんてない。%uをlで修飾して、%luが正解だ。
つーか、%ulじゃ単に、%uの後にlが出力されるだけだ。

316:デフォルトの名無しさん
07/12/24 01:24:49
ありがと

317:デフォルトの名無しさん
07/12/24 09:59:08
UTF-8の文字列をMS932に変換したいのですが
どのような関数がありますでしょうか?

318:デフォルトの名無しさん
07/12/24 13:26:04
MultiByteToWideChar/WideCharToMultiByteやMLangなど。

319:デフォルトの名無しさん
07/12/24 14:26:20
Visual C++ 2008 には Snippet 機能はありますか?

320:デフォルトの名無しさん
07/12/24 14:38:17
有るが大して役に立つものではない

321:デフォルトの名無しさん
07/12/24 14:42:48
EEですが2005用Snippetどこでダウンロードできますか?

322:デフォルトの名無しさん
07/12/24 14:54:13
デフォルトのコピーコンストラクタと代入演算子が
生成される条件はなんでしょうか?
常に生成されるのでしょうか?

もしそうであれば,「浅いコピー」を勝手にしてもらっては
困るなどの場合,両者をあえて宣言だけして
定義せずに private にしておくなどの方法で
明示的に使えなくするしかありませんか?

ちなみに IntelliSense には operator== は出てきません.
自分であえて宣言した場合には出てきますが.

323:デフォルトの名無しさん
07/12/24 14:55:31
URLリンク(d.hatena.ne.jp)

324:デフォルトの名無しさん
07/12/24 17:02:26
>>322
>明示的に使えなくするしかありませんか?
うん
それかboost::noncopyableからprivate派生するという手もある。

325:デフォルトの名無しさん
07/12/24 17:12:32
あー後、デフォルトのやつはメンバ変数・基本クラスのコピーコンストラクタ/operator=を呼び出すから
std::iostreamみたいにコピー出来ないものがあってもコピー不可になる。

326:デフォルトの名無しさん
07/12/24 18:34:21
MFCでActiveXコントロールを作っています。
それをIEに貼り付けて右クリックイベントを拾ったんですが
OnLButtonUp(UINT nFlags, CPoint point)

pointに入っている値がどうもコントロール内での位置で
これを
ClientToScreen(&point)で変換してみたのですが
変換された値が画面上の位置とずれているようです。

画面上の位置を取得するにはどうすればよいでしょうか?



327:326
07/12/24 18:53:33
すみません。GetCursorPos()で取れました。
いいのかな。こんなやりかたで。

328:デフォルトの名無しさん
07/12/25 08:55:54
オーナードローボタンを作ってみました。
if( nState & (ODS_FOCUS|ODS_SELECTED) ) {
}

としてフォーカスと選択状態のときに色を変えるようにしたのですが
この他にマウスポインタが乗っているときにも色を変えたいのですが
そのような状態を取得するにはどうしたらよいでしょうか?


329:デフォルトの名無しさん
07/12/25 10:14:49
>>328
TrackMouseEvent 使う。
昔は、WM_MOUSEMOVE でSetCaptureしてたけど、
今はこれ使えるからいいね。

330:デフォルトの名無しさん
07/12/25 10:34:47
>>329
ありがとうございます。調べてみます。

331:デフォルトの名無しさん
07/12/25 23:57:59
これからVisual C++ 2005 Proを使ってWindowsのGUIアプリを作成しようと思います。
C/C++の知識はあるのですが、CLI等はまだ詳しく知りません。
Visual C++を用いたアプリの作成の経験もありません。
このとき、どのようにしてGUIアプリの制作を始めるのが適切だと思いますか?

1. アプリのフォーム部分のみ.NET Frameworkを使って、
内部の処理はMFCやWinAPIを使ったC++で実装する
2. フォーム部分も内部も全て.NET(CLI)で実装
3. 全てC++とMFCで実装

言語自体が変わってしまう(C++でなくCLIになってしまう).NETはあまり使いたくないです。
ただGUIのデザインはMFCを使ったやり方よりも.NETのフォームデザイナを使用した方が
やり易いので、そうい意味で.NETを使うのは魅力的です。

言語をとるか、GUIデザインのしやすさをとるか・・・

332:デフォルトの名無しさん
07/12/26 00:00:01
というか、NetFrameworkなフォームの内部をMFCで作るって、㍉でそ。

333:デフォルトの名無しさん
07/12/26 00:27:44
Visual C++のCLIでWindowsMediaPlayerコントロールを使用してAVIファイルを再生しようと考えているのですが、
参考書の通りに打ち込んでいるのですがビルドに失敗してしまいます。
Ctlcontrols->からのsetModeやpause、playを使用したコードが'WMPLib::IWMPSettings' のメンバではありません。というエラーになり、
WMPLib::WMPPlayState::wmppsPlayingというコードに対して、以下の2つのエラーが発生します。
①'WMPLib' : 識別子がクラス名でも名前空間名でもありません。
②'wmppsPlaying' : 定義されていない識別子です。
何か設定が必要なのでしょうか?ご教授お願いします。

334:デフォルトの名無しさん
07/12/26 00:33:09
MFCなら間違いはないよ、一応

335:デフォルトの名無しさん
07/12/26 00:35:03
>>331
クロスプラットフォームなフリーのGUIライブラリでも使ったらいいんでね?

336:デフォルトの名無しさん
07/12/26 03:24:20
>>333
参照追加した?

337:デフォルトの名無しさん
07/12/26 11:19:29
Visual C++6.0,および2005を使っています。
2005で作成したソースコードを6.0に移植したいと思っているのですが、
strcpy_sなどの関数が6.0で使用できず困っています。
バッファオーバーランなどの可能性を考慮すると、安易にstrcpyで置き換える事も出来ません。
やりようによっては、strncpyを使うという手段もありますが、これだとstrcat_sをどうしたら良いか分からなくなります。
素直に、VC6.0でもstrcpy_sや、strcat_sを使いたいと思っているのですが、どうしたら良いでしょうか?
何かしらのSDKをインストールすればいいんでしょうか。
一応、Microsoft .NET Framework SDK v2.0はインストールしてみたのですが、その中にこれらの関数は存在しませんでした。

338:デフォルトの名無しさん
07/12/26 14:17:28
>>336
COMコンポーネントでタブをチェックしてOKボタンを押しただけで参照は選択していません。
参照で何を追加すればよいのでしょうか?

339:デフォルトの名無しさん
07/12/26 14:29:33
>>338
どこの操作の話?
ソリューションエクスプローラーからプロジェクトを右クリックして
参照・・・選んで新しい参照の追加選んでCOM選んでWindowsMedia Player 選んでOKってやったの?

340:デフォルトの名無しさん
07/12/26 15:24:40
>>339
ツールボックス上で右クリックしてアイテムの選択をクリックし、そこからCOMコンポーネントでWindowsMediaPlayerを追加しました。
そこ際、参照というボタンがあったのですがそれは何もしてなかったので。
ソリューションエクスプローラーからという操作はしていません。

341:デフォルトの名無しさん
07/12/26 15:31:04
プリコンパイルドヘッダーって,
なければ自動的に作る,あれば使う,ってできませんか?
昔は /YX オプションがあったようなのですが.

ヘッダファイル common.h をすべての *.cpp から
インクルードしています. common.h にはよく使う
ライブラリのヘッダをインクルードし,最後に
#pragma hdrstop しています.

342:デフォルトの名無しさん
07/12/26 15:42:19
>>340
で、>>339はやったの?

343:デフォルトの名無しさん
07/12/26 15:52:09
>>342
それはやっていなかったので、今やってみたらエラー数が増えました。

344:デフォルトの名無しさん
07/12/26 16:05:46
よかったね

345:デフォルトの名無しさん
07/12/26 18:31:19
>337
strcpy_sや、strcat_sなんかたいしたことやってないから
自分で書くかソースコピーして移植

346:デフォルトの名無しさん
07/12/26 18:34:38
strcpy_sって何ぞ?

347:デフォルトの名無しさん
07/12/26 18:36:05
>>346
VC2003以前から2005以降にプロジェクトもって行くといやというほどお目にかかれるw

348:デフォルトの名無しさん
07/12/26 18:39:39
なんか警告対策だっけ、なんだっけ

349:デフォルトの名無しさん
07/12/26 19:53:27
安全性を向上さしたMS独自の拡張関数。
警告出るけど今まで通りのANCII関数
をちゃんと使えてれば無駄な警告。

350:デフォルトの名無しさん
07/12/26 20:24:10
ここでstrsafe.hが奇跡の大復活を

>>341
stdafx.h/cppは駄目なん?
/YXは無駄に再作成される事が多く、あまり役に立たなかったので削除された。
たぶん。個人的には無くして正解だと思う。

351:デフォルトの名無しさん
07/12/26 21:01:11
VC++ 2008 Expで、マネージコードとネイティブコードを混在させて
プログラムを作成する方法を教えてください。

プロジェクトはCLR、Win32のどちらで作成するのですか?
具体的にどのようにして2つのコードが識別されるのですか?


352:デフォルトの名無しさん
07/12/26 21:07:30
Std以上ならCRTのソースも付いてるお

353:デフォルトの名無しさん
07/12/27 05:17:15
VC++ 6.0 SDKです。
半透明ウィンドウを作成しようと色々調べて、
取り敢えずuser32.dllから動的に関数を読み込むやり方までは出来ましたが、
新しい Windows Server 2003 PSDK を入れても SetLayeredWindowAttributes が未定義となってしまいます。

インストールした C:\Program Files\Microsoft SDK\ 以下のlibとincludeフォルダをそれぞれオプションでパス指定しましたがダメでした。
6.0では動的に確保しなければ、6.0以降のAPIは静的に使う事が出来ないのでしょうか・・・?
PlatformSDKは最新のだと6.0に対応してないそうなので、
URLリンク(www.microsoft.com)
から落として、CoreSDKのみインストールしました。

どうか助言のほどよろしくお願いします。

354:デフォルトの名無しさん
07/12/27 05:25:01
#define _WIN32_WINNT 0x0500

355:デフォルトの名無しさん
07/12/27 10:23:41
二つのスタティックライブラリ a.lib b.lib があります。
b.lib は a.lib の関数を呼び出しています。

b.lib を使ったアプリケーションを作成するにあたって、
a.lib も b.lib もリンカに指定しなければならないのですが、
b.lib をビルドするときに a.lib の必要なものも
取り込んでしまうということはできるのでしょうか?

リンカに「あれがない、これがない」と連鎖的に
ないないと言われないようにしたいのですが。

なお、すべて自作のものなのでライセンス上の問題はありません。

356:デフォルトの名無しさん
07/12/27 10:43:38
>>355
VC++の話だよな?
b.lib 使うときに b.h もインクルードすると思うが、
そのb.h の中に、
#pragma comment(lib, "a.lib")
#pragma comment(lib, "b.lib")
両方入れておけば?

つか、a.hにa.libの設定を入れてb.hでインクルードすればいいか?

357:デフォルトの名無しさん
07/12/27 10:44:50
あとスタティックリンクなら、両方まとめて1つのlibにするとか・・・

358:デフォルトの名無しさん
07/12/27 10:59:33
質問させてください.
今,あるプログラム内で_beginthreadにより別ウインドウを作成します.そのウインドウを作成する
具体的な関数(hogeとする)にデータを渡したいので構造体のポインタ(data *a)で渡しています.
_beginthread(hoge,0,a)のかたちです.
関数hogeの中でdata *b;を宣言して
b=(data *)aにして利用するのはできるのですが,
渡したデータを書き換えたあと(b->member=hogehoge;)
もとのメイン関数の中でa->memberの値は書き換わっているのでしょうか?
ポインタの基本的なことなんですが混乱してきました・・・
今のプログラムでは書き換わっていません.
どなたかご教授お願いします.

359:デフォルトの名無しさん
07/12/27 11:08:43
>>358
マルチスレッドでの共有変数の読み書きはタイミングの問題が付きまとうから
ちゃんと同期してやらんといかんよ。

360:デフォルトの名無しさん
07/12/27 11:09:39
変わらない

361:デフォルトの名無しさん
07/12/27 12:33:37
>>359
おっしゃるとおり同期の問題でした.
メイン関数側に書き換わったのを待つループを入れたら
解決しました.ありがとうございました.


362:デフォルトの名無しさん
07/12/27 22:04:58
質問です。
アニメーションを表示するためのプログラムを詳しい人に書いてもらったのですが
「アニメーション表示。vcproj」(?)というファイルを開いてデバックの開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」
というエラー表示がでます。
オブジェクトファイルというのはもらったファイルの中にあるのですが
リンクするとは、どうすればいいのでしょうか?
教えてください。
ちなみに私はまったくC++わからないので
詳しく教えていただけるとありがたいです。

363:デフォルトの名無しさん
07/12/27 22:47:12
C++わからないならバイナリ貰えよ。
読めないならソース貰っても意味ないし。

364:364
07/12/27 23:48:57
Visual C++ で「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。

人にC++を使ってアニメーションを表示するプログラムを書いてもらいました。
もらったファイルの「アニメーション表示.vcproj」というファイルを開いてデバッグ開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。

調べたところオブジェクトファイルをリンクする必要がある、というところまではわかりましたが
オブジェクトファイルと何をどうやってリンクさせるのかわかりません。
しかも送ってもらったファイルの中にはobject fileというものが3つ(AssemblyInfo,stdafx,アニメーション表示)あります。どれを使うのでしょうか?

C++についてまったく知識がないので全くわかりません。
出来るだけ詳しく教えていただけたら幸いです。

365:デフォルトの名無しさん
07/12/27 23:56:27
リビルドで一発じゃね?

366:デフォルトの名無しさん
07/12/28 00:41:40
>>351
CLRのプロジェクトを作れ。

ソース内で#pragma unmanagedと書くと、そこからアンマネージコードになる。
#pragma managedと書くとマネージコードが始まる。
どっちも現れる前のファイルの先頭はマネージコード。

367:デフォルトの名無しさん
07/12/28 08:15:29
プロジェクトはWIN32プロジェクトです。
環境はXP VC++2005です。

参考書のリソースの追加という項目を読んでいるのですが、
「ファイル」→「新規作成」の中にリソーススクリプトという選択肢がある、
と参考書には書いてありますが、VC++2005には見つかりません。
代わりにリソーステンプレートを選択してやってみましたが、
"resource.h"が作成されていないため、エラーとなりました。
どうすればこのプロジェクトにリソースを追加することができるでしょうか?
よろしくお願いします。

368:デフォルトの名無しさん
07/12/28 08:27:29
2008 Express Editionをインストールしたのですが、
スタートメニューの[Visual Studio Tools]からコマンドプロンプトを起動すると
URLリンク(www.uploader.jp)
このように表示されるのですが、何が問題なのでしょうか。

369:デフォルトの名無しさん
07/12/28 08:38:49
>>367
ソリューションエクスプローラの
プロジェクト右クリック→追加→リソース

370:デフォルトの名無しさん
07/12/28 09:35:34
>>368
PATH 環境変数の変な所に二重引用符が入っているかもしれないね.

371:デフォルトの名無しさん
07/12/28 10:44:55
>>370
その通りでした。ありがとうございます。

372:デフォルトの名無しさん
07/12/28 19:51:28
普通、テンプレートの定義はヘッダファイルでしますよね。

【hoge.h】
template <typename T>
void foo(const T& t) {
std::out << t << std::endl;
}

しかし、T が int と double しかありえないとわかっている場合、
(完全な)特殊化の宣言を翻訳単位に書くことでテンプレートの
インスタンスが生成されていました、少なくとも Visual C++ 2005 では。

【hoge.cpp】
template <typename T>
void foo(const T& t) {
std::out << t << std::endl;
}
template <>
void foo(const int&);
template <>
void foo(const double&);

373:つづき
07/12/28 19:51:48
Visual C++ 2005 では hoge.h をインクルードしてそのつど
テンプレートをインスタンス貸し手もよかったし、
かわりに hoge.cpp をリンクするということもできました。

しかし Visual C++ 2008 では hoge.cpp をコンパイルしても
hoge.obj にはテンプレートのインスタンスは含まれません。
コンパイラは「なに実体(定義)のない特殊化してるの?」
と無視するようで、当然リンカは「解決できない参照があるよ」
と怒ります。

この挙動はコンパイラ依存なのでしょうか?それとも何か
C++ の標準が変わったのでしょうか?

374:デフォルトの名無しさん
07/12/28 19:57:21
wr

375:371=372
07/12/28 20:13:31
完全特殊化とインスタンシエーションを間違えてました。
template <> ってなにやってんだよ俺。
正しくは <> いりませんでした。

376:デフォルトの名無しさん
07/12/29 07:27:20
>>369
ありがとうございます。できました。

377:デフォルトの名無しさん
07/12/29 09:46:24
VS2005EEでコンパイルしたら.exeの他にいろんな拡張子のファイルができるんですが、
.exeを配布するときに同じフォルタにつめなければいけないファイルってどれですか?
bccのときは、.exeだけで大丈夫だったんですが

378:デフォルトの名無しさん
07/12/29 09:49:03
小数点を扱うときに ふと思ったのですが、
.NET における System.Decimal みたいな型って、
アンマネージドなVC++に存在するんでしょうか?
もし無いならば、精密な小数点計算ではどう対応してるのでしょうか?
よろしくお願いします。

379:377
07/12/29 10:22:35
自己解決しました。何もつめなくても大丈夫みたいでした。

380:デフォルトの名無しさん
07/12/29 10:48:58
>>378
System.Decimalは、
OLEオートメーションで使われていたDECIMAL型が元になっていると思う。

381:デフォルトの名無しさん
07/12/29 12:47:43
switch caseのcase内でreturnする際にもbreakをつけたほうがいいでしょうか?

382:デフォルトの名無しさん
07/12/29 13:13:12
>>381
VCというより、Cの話だな。
当然、イラン

383:デフォルトの名無しさん
07/12/29 13:54:43
>>382
ありがとうございました。

384:337
07/12/29 15:32:24
>>345
そうですね……似たようなコードを自分で書くことにします。

385:デフォルトの名無しさん
07/12/29 15:34:47
VC++6.0です。
非MFCでモーダルダイアログを作成したいのですが、
DialogBoxとリソースを使わずにCreateWindow(Ex)で作る事は出来ますでしょうか・・・?
拡張スタイルにTOOLWINDOWを使うと、コントロールメニュー無し・タイトルバーあり・閉じるボタンのみありを作れるものの。
タイトルバーが小さな感じになってしまい、他のスタイルを何通りか試してみても、
コントロールメニューが残ったりと再現が出来ません。

マクロと書いてあったので、どうにか出来るかなと思って試行錯誤してますが、どうもこれと言った設定が見つかりません。
助言頂けたら幸いです。

386:デフォルトの名無しさん
07/12/29 17:33:55
>>145
むちゃくちゃ遅いですが回答ありがとうございました><

387:デフォルトの名無しさん
07/12/29 21:21:13
>>377
変にオプションをいじっていなければ、exeだけ。
ただし、別途ランタイムが必要。

388:デフォルトの名無しさん
07/12/29 21:54:00
x64でインラインアセンブラは使えないんですか?
まだ対応してないというだけで、新しい2008では使えるんですか?

389:デフォルトの名無しさん
07/12/29 22:07:42
>>388
使えないよ。
MSは組み込み関数を使えってスタンスなんだと理解してる。

390:デフォルトの名無しさん
07/12/29 22:54:36
>>380
ありがとうございました。

391:デフォルトの名無しさん
07/12/30 13:27:33
VS2005MFCです
カスタムコントロールのサイズを取得する、関数って準備されてない?

392:デフォルトの名無しさん
07/12/30 13:29:28
>>391
■MFC相談室 mfc18d.dll■
スレリンク(tech板)

393:デフォルトの名無しさん
07/12/30 17:08:00
visual c++ 5.0 express
だとメイクファイルのエクスポートってできないんですか?
どのバージョンならできます??

394:デフォルトの名無しさん
07/12/30 20:16:30
VC6.0は少なくともできる。ってか5でもできると思うけど持ってないから何とも・・・

395:デフォルトの名無しさん
07/12/30 22:57:37
express ???????????????????

396:デフォルトの名無しさん
07/12/31 01:41:41
Visual C++ 2005 Express Editionについて質問します。

昨日始めたばかりで右も左もわかりませんが、よろしくお願いします。
コーディングする時に、スペースを打つと・が表示され、
TABを打つと、→が表示されますが、これを消すにはどうすればいいんでしょうか?

分かりにくかったらすいません、よろしくお願いします。。。


397:デフォルトの名無しさん
07/12/31 01:56:45
[編集]-[詳細]-[スペースの表示]

398:396
07/12/31 02:01:36
ググろうにもどうやってググればいいのか分からなくてほんと困ってたんです。

>>397さんありがとですmm

399:デフォルトの名無しさん
07/12/31 03:08:41
>>394
ありがとうございました。

400:デフォルトの名無しさん
07/12/31 06:27:05
VC2008のExpression Editionで生成した.exeファイルを、開発した計算機以外で実行させるにはどうしたらよいでしょうか?
現状では『アプリケーションの構成が正しくないため・・』というエラーメッセージ表示と共に止まってしまいます。

取りあえずググった結果、2005では 構成プロパティ->ランタイムライブラリ の項を『マルチスレッドMT』にする事で解決できるという記事を目にしたので試して見たのですが、
実行できるようになっただけで、正しく動きません。
(.exeファイルをエントリポイントとした、いくつかの.dllで構成されたアプリケーションなのですが、.exeファイルの機能だけが実行されていて、他の.dllの機能が実行されている様子がない。因みにこれら.dllファイルもマルチスレッドMTで構成しています)

これは2008では有効な対処法方ではないのでしょうか?それとも自分が開発したアプリに問題があるのでしょうか?

どなたか解決方法に心当たりございましたら、御教授の程宜しくお願い致します。

401:デフォルトの名無しさん
07/12/31 06:37:15
>400 はスルーしとけ
答えてやってももろくなことはないぞ

402:400
07/12/31 06:56:31
何か問題ありましたでしょうか・・・

403:デフォルトの名無しさん
07/12/31 09:00:38
>何か問題
対処法方
心当たりございましたら
御教授の程

404:デフォルトの名無しさん
07/12/31 10:37:06
>>400

多分、共有ライブラリのバージョンが合つてない。
とりあえずスタティックリンクにすれば直ると思う。


405:デフォルトの名無しさん
07/12/31 10:50:33
実行ファイルには、単純にDLLのインポートライブラリをリンクしただけなのか、
起動後に動的に読み込ませているのか、はっきりしる。
C++/CLIなのか、MFC使っているのか、そこらへんも全て書け。
>.dllの機能が実行されている様子がない。
何を根拠に?

406:デフォルトの名無しさん
07/12/31 11:32:51
Visual C++ Express Editionの2008と2005、どちらを使おうか迷っているのですが、
C言語とDirectXの勉強に使うには、2008と2005どちらの方が良いですか。

407:デフォルトの名無しさん
07/12/31 11:38:58
>>406
どっちも使って使いやすいほうにすれば?その為の無料なんだし

408:デフォルトの名無しさん
07/12/31 11:47:11
今って2008のExpressってのも出てるのか
知らんかった

409:デフォルトの名無しさん
07/12/31 11:54:52
2005じゃないの、今なら、勉強用なら

410:デフォルトの名無しさん
07/12/31 12:12:28
>>409
2008は扱いが難しいのでしょうか。
それとも、2005の方が情報が多くて問題解決がし易いという意味ですか。
2005の方が問題解決のヒントが多いのであれば、2005の方を使ってみます。

411:デフォルトの名無しさん
07/12/31 12:29:11
まあそりゃあ多いだろうよ

412:デフォルトの名無しさん
07/12/31 13:34:39
勉強していくなら情報が転がってる2005のほうがいいでしょ
2008でやっていくなら自分でその情報を発信する側になるぐらいの勢いないとな

413:デフォルトの名無しさん
07/12/31 13:35:52
2008はでたばかりだしね

414:デフォルトの名無しさん
07/12/31 14:50:38
VCって無料(フリー)のソフトですか?

415:デフォルトの名無しさん
07/12/31 14:51:13
いいえ


416:デフォルトの名無しさん
07/12/31 14:54:47
機能制限された無料版もあるソフトです

417:デフォルトの名無しさん
07/12/31 14:55:19
ありがとうございます

418:デフォルトの名無しさん
07/12/31 15:11:59
Visual C++ 2005 Express Edition、Windows SDKの環境での質問です

リソースエディタでタブコントロール付きのダイアログボックスというものを
作ってみたのはいいのですが、これをアプリケーション内で利用するにあたり、
MFC等を使わずに実装する方法がよくわかりません
別のダイアログを貼り付ける、みたいな話はあるようなのですが
実際どのようにコーディングするのかがわからないのです

タブコントロール実装のためのコーディング手順などを教えていただきたいです
長くなるようでしたら、このあたりがわかるようなサイトなどありましたら教えて下さい
よろしくおねがいします

419:デフォルトの名無しさん
07/12/31 15:34:26
知ってるけど教えようがない

420:デフォルトの名無しさん
07/12/31 15:39:29
コーディング手順ってのもまた珍妙な語だな、考えてみると

421:デフォルトの名無しさん
07/12/31 16:43:56
だいたいはプロパティシートを使うんじゃないの。

422:デフォルトの名無しさん
07/12/31 16:50:56
MFC等を使わずに実装する方法がよくわかりません

423:デフォルトの名無しさん
07/12/31 17:09:19
タブはボタンみたいなものだよ
ボタン押した時に何をするかは作る人の勝手だし、
タブで何をするも作る人の勝手

424:418
07/12/31 17:51:23
質問の仕方が悪かったでしょうか?
普通にリソースエディタでタブコントロールを追加したダイアログボックスを
ただDialogBox()関数で呼び出しても、何もない四角が表示されるだけなのですが、
これを選択できる状態にするには具体的にどういった手順を踏めばよいのか、
別のダイアログボックスを貼り付けるにはどうすればよいのかが知りたいです。
よろしくお願いします。

425:デフォルトの名無しさん
07/12/31 18:17:52
>>424

URLリンク(www.kumei.ne.jp)

↑直接的にはこれだけど、他のページも見てみると良いよ。


426:418
07/12/31 19:52:13
>>425
ありがとうございます
そのサンプルだとタブコントロールの作成自体が自前だったので多少混乱しましたが
GetDlgItem()でリソースエディタで作ったタブのハンドルを取得する事で
項目追加については解決しました

そちらのソースを見た感じだとタブ用のウィンドウの上に後からボタンを作っているようなのですが、
リソースエディタ上でタブの上に見えるようにボタンを配置し、それを表示非表示で切り替えたり
する事はできないのでしょうか?

手動で作るか、別のダイアログを固定位置の子ウィンドウとして呼び出すとかしかないでしょうか

427:デフォルトの名無しさん
07/12/31 20:13:34
そりゃ、ShowWindow(GetDlgItem(**),SW_HIDE)とか駆使しればできるだろうけどさ。
ダイアログエディタが混雑するぜ。

428:デフォルトの名無しさん
08/01/01 14:40:45
MSDNて使いにくいね。
特にC言語やC++言語の標準ライブラリの調べにくさはC++Builderのヘルプの比ではない。

429:418
08/01/01 15:17:20
ダイアログをタブコントロールの子ウィンドウとして呼び出して
なんとか実装できました
どうもありがとうございました


430:デフォルトの名無しさん
08/01/01 22:07:34
VC関係のサイトを回っていると、何の説明もなく

throw "あいうえお";

みたいな記述を良く見るのですが、これはどういう意味なのでしょうか?
プログラムを実行させるとランタイムエラーメッセージが出て処理が止まるのはいいのですが
たとえば配布したプログラムでこのthrowが呼び出されてしまったときに、
この"あいうえお"という文字列は、何をもって確認するのですか?

431:デフォルトの名無しさん
08/01/01 22:09:12
>>430
VC以前の問題。
throwって知ってる?

432:デフォルトの名無しさん
08/01/01 22:09:43
おおもと(mainとか)でcatchしとくんだろ。
char*を投げるのはあんまし感心しないけど。

433:デフォルトの名無しさん
08/01/01 22:15:06
正直throwというのが良くわからないです
この場合どういう効果があるのでしょうか
ランタイムエラーメッセージが出る時にthrowで送られた情報が
そのメッセージの中で見られるのかと思ったのですが、見られないのですか?

434:デフォルトの名無しさん
08/01/01 22:16:34
throwはC++の機能、try/chatchあたりでも勉強してくればいい
当然の如くVCには全く関係ないから

435:デフォルトの名無しさん
08/01/01 22:26:20
char*とか、std::exception継承クラスならともかく、かってな
ユーザオブジェクトを投げられたら、いずれにせよランタイムは
情報を出すことが出来ないからなー。

436:デフォルトの名無しさん
08/01/01 22:36:15
throw知らね、って言ってる人には分かる内容じゃないだろうな。

437:デフォルトの名無しさん
08/01/02 09:12:15
・XPでパスワードLOOK中かどうか判断する方法(ctrl + del + altのあれ)
わかる方お願いします。ヒントだけでも結構です。



438:デフォルトの名無しさん
08/01/02 11:37:22
スロー(throw)だけじゃなくてスルー(through)も一部では需要ありそうだなw

439:デフォルトの名無しさん
08/01/02 11:40:09
MSDNのLockWorkStationの解説より
>There is no function you can call to determine whether the workstation is locked

440:デフォルトの名無しさん
08/01/02 15:38:52
結局,関数の宣言の際に例外仕様ってつけるべきなんですか?

441:デフォルトの名無しさん
08/01/02 15:41:36
宣言関係ないと思うが、、、仕様どおりでおk
誰が作って誰が使うかによってかわるし、こうしろという決まりごとはないよ。

442:デフォルトの名無しさん
08/01/02 22:58:47
>>440が言ってるのって、
void hoge() throw()
見たいなのじゃないの?

C++FAQ第二版で例文がそう記述されてて、
試してみたら(コンパイラに言われたんだか誰かに言われたんだかネットで見たんだか定かでない)けど
「古い記述方法」
という感じだった。 凄くうろ覚えでゴメン。

443:デフォルトの名無しさん
08/01/03 05:48:25
>>442
そう.それ.
例外仕様を頑張って記述したところで,例外仕様の部分って
関数の型としては扱われないし,何かつけてて意味あるのかなって.

444:デフォルトの名無しさん
08/01/03 17:20:05
別スレから、こちらに書き込みます。

リソースの編集したいのだが、
RCの中から、そこいらのヘッダをインクルードしてるファイルだと
フリーソフトではエラーが出て読み込めない。

どうしたら良いですか?
 あきらめたほうが良いですか?お金はびた一文も出しませんので
お金がかからない何か良い方法はないでしょうか?


445:デフォルトの名無しさん
08/01/03 17:20:42
>>444
あきらめた方がいい

446:デフォルトの名無しさん
08/01/03 18:43:29
テキストファイルだから手動でコピペするだけ

447:デフォルトの名無しさん
08/01/03 23:26:43
自分はプロジェクトのプロパティ(コンパイルオプションとか)
をプロジェクトごとに指定することはあまりやらなくて,
あらかじめ用途ごとの vsprops ファイルを作っておいて
組み合わせて適用しているのですが,そうすると
プロジェクトごとに最初から指定されているオプションがうざいです.

デフォルトで全部「親から継承」に簡単にすることってできないんでしょうか?

448:デフォルトの名無しさん
08/01/04 21:16:05
C++/CLIでファイルから特定の文字列を検索する部分なのですが、
C++/CLIのStringクラスのCompare(ryメソッドでは、
完全一致は探すことができたのですが、部分一致を探し出すことができませんでした
Cのstrstr関数やC++STLのStringクラスのfindメソッドのような、
文字列から文字列を探すことのできる、C++/CLIのクラスメソッドはないのでしょうか?

449:デフォルトの名無しさん
08/01/04 21:42:44
>>448
単にオーバーライドを見つけられていないだけな気もするけど、一応。

ファイルの内容が全てメモリに収まる程度という前提なら、
内容をSystem::Stringに全部押し込んだ後で、System::String.IndexOfか?
System::Text::RegularExpressions辺りで一気にやるほうが楽かもしれん。

450:449
08/01/04 21:44:22
オーバーロードだった orz

451:448
08/01/04 22:20:11
>>449
すぽーんと見落としてました・・お恥ずかしい
読み込むのはファイルの一部だけなので、IndexOfで大丈夫そうです
どうもありがとうございました

452:デフォルトの名無しさん
08/01/05 00:48:48
構成プロパティの文字セットをUnicodeを使用するにした状態で

int _tmain(int argc, _TCHAR* argv[])
{
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}

というような感じでコードを書いたのですが、
abcまではDOS窓に表示されるんですが、あいうえおが表示されません
Unicodeだとどうすれば日本語も表示されるようになるのでしょうか?

ちなみにマルチバイト文字セットにすると上手く行きます
できるだけマルチバイトでもUnicodeでも正常動作するようにしたいのです
_Tで囲むことで期待通りの表示になるかと思ったのですが…

よろしくお願いします

453:デフォルトの名無しさん
08/01/05 00:51:40
あ、abcではなくてtestでした_| ̄|○よろしくお願いします

454:デフォルトの名無しさん
08/01/05 00:54:21
>>453
本当に表示されてるのはtestだけなんだな? その後に何も表示されてない?

455:デフォルトの名無しさん
08/01/05 00:56:57
>>454
えーと、入力待ちのカーソルが、間隔を開けずにtestの真横に表示されます
文字化けしてでるとかもないです

456:デフォルトの名無しさん
08/01/05 00:57:00
setlocale

457:デフォルトの名無しさん
08/01/05 01:26:48
>>456
ありがとうございます。こんな感じでいいのでしょうか?
一応あいうえおの表示はされたのですが、何か弊害などはありますか?

int _tmain(int argc, _TCHAR* argv[])
{
  _tsetlocale( LC_ALL, _T( "Japanese_Japan.932" ) );
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}


458:デフォルトの名無しさん
08/01/05 02:29:07
CLRのSystem::Windows::Formsクラスを使用するWindowsアプリケーションでは、
処理は全てFormクラス内のメソッドにまとめるものなのでしょうか?
WinAPIでのWindowsアプリケーション作成もしたことがないので、混乱しています・・

459:デフォルトの名無しさん
08/01/05 02:35:48
好きにしなさい

460:デフォルトの名無しさん
08/01/05 09:36:58
>457
そういうプログラムなら標準Cで作った方が汎用性が高いから
そんな見苦しいことやって喜んでるのはお前ぐらいだと思う

461:デフォルトの名無しさん
08/01/05 10:03:22
マジですか
もはや時代はユニコードだと思っていたのですが違うのですか?

462:デフォルトの名無しさん
08/01/05 10:17:10
自己完結しているアプリなら言語は関係ないだろ
ウェブとか、多言語つかうならユニ

463:デフォルトの名無しさん
08/01/05 10:56:10
VC++の_t系はWindows APIとの整合性を取るためのものだと俺は思っている。

464:デフォルトの名無しさん
08/01/05 14:23:23
COM の BSTR は MBCS ですか? Unicode ですか?
もしくはそういうことは COM の規格の範囲外のことですか?

465:デフォルトの名無しさん
08/01/05 14:25:30
COMの規約ではどうなっているかしらないが、
Win16ではMBCS、Win32以降はUTF-16 (x86ならリトルエンディアン)。

466:デフォルトの名無しさん
08/01/05 14:57:05
>>465
API でいえば hogehogeA と hogehogeW の話ですよね?
主要な COM コンポーネントでも二種類の
インターフェイスが用意されていると思ってたんですが,
そうではないのでどうしたものかなぁ,と.

しかしよく考えたらたとえば MSXML が XML 文書を
受け取るのも BSTR なわけで,その時は文字コードに
よらずなんでも受け取るのだから BSTR は文字コード
を限定しないなにか(32ビットで領域のサイズが
明示的に前置された何か)だと思うことにします.

467:デフォルトの名無しさん
08/01/05 17:56:23
>>457
寝てたわ・・・
プログラムよりも、デフォルトで開くコンソールのコードページの問題だからねえ。

468:デフォルトの名無しさん
08/01/06 02:01:00
猫本見ながら何度もやってるんですが、画像を表示するところで詰まってます><
ビットマップをrcに変換し
LoadBitmapでインスタンスハンドルを取得するところでエラーが出ちゃうんですが
正しい手順教えて下さい><

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "IDB_BITMAP1");
GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info);
w = bmp_info.bmWidth;
h = bmp_info.bmHeight;
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hBmp);
BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY); //描画
DeleteDC(hdc_mem);
DeleteObject(hBmp);
EndPaint(hWnd, &ps);
break;

C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。
C:\temp\a.c(102) : warning C4047: 'function' : 間接参照のレベルが 'struct HINSTANCE__ *' と 'int ' で異なっています。
C:\temp\a.c(102) : warning C4024: 'LoadBitmapA' : の型が 1 の仮引数および実引数と異なります。
cl.exe の実行エラー

開発環境はVisualC++6.0です

469:デフォルトの名無しさん
08/01/06 02:21:40
>>468
> C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。

470:468
08/01/06 02:31:52
ありがとうございました
hInstを宣言したらエラーが消えました。

でも画像が表示されない><

471:デフォルトの名無しさん
08/01/06 03:36:53
宣言しただけかよw

サンプル丸写しして出直して来い

472:デフォルトの名無しさん
08/01/06 04:20:07
せめてhBmpがまともかチェックくらいしたら
たぶん、"IDB_BITMAP1" を MAKEINTRESOUCE(IDB_BITMAP1) にすればいいとは思うが・・・

473:デフォルトの名無しさん
08/01/06 06:24:14
C++/CLIで作ったリストボックスの項目にツールチップ表示をさせる方法ってありませんか?
ググってもMFCとか他言語ばかりで・・

474:デフォルトの名無しさん
08/01/06 07:22:03
>>469
hInstっつーのはそのアプリケーションのメイン関数 _tWinMain()の
引数で渡されているHINSTANCE型の引数のことだよ

これはそのアプリケーションに一つしかないものだから
グローバル変数にでも保持しておいて使えばいい

475:デフォルトの名無しさん
08/01/06 07:22:27
>>458だた

476:デフォルトの名無しさん
08/01/06 07:22:54
>>468だたw寒くて指がずれるw

477:468
08/01/06 16:01:38
>>471さん
サンプルまる写しで出来ないんです><

>>472さんのやりかたでやっても画面が真っ白のままでした><
プロジェクトフォルダの中身を覗いたらScript1.rcのサイズが2kbなんですけど
ちゃんとビットマップ画像入ってないのかと思ってダブルクリックしてみたところ
VisualC++が立ち上がって
Script1.rc

Bitmap
└IDB_BITMAP1
ってなってるんですけど問題無いですよね?

ちゃんと#include <windows.h>の下に

#include "resource.h"は書いてあるんです><

>>474さん
Cコンソールの時にやったコマンドライン引数みたいな解釈でいいですか?
猫本にはインスタンスハンドルとしか書いてなかったのでよくわからないまま読み進めてました><


478:デフォルトの名無しさん
08/01/06 16:28:57
VS2005でWin32プログラムをデバッグで開始すると問題なく実行できるんですが、
Debug Release問わずデバッガ無しで実行すると途端に
---------------------------
cppwin.exe - アプリケーション エラー
---------------------------
"0x00000000" の命令が "0x00000000" のメモリを参照しました。メモリが "read" になることはできませんでした。


プログラムを終了するには [OK] をクリックしてください
プログラムをデバッグするには [キャンセル] をクリックしてください
---------------------------
OK キャンセル
---------------------------
で落ちてしまいます。
どういう事なんでしょうか。自殺すればいいんでしょうか。

479:デフォルトの名無しさん
08/01/06 16:30:52
はい、よく分かってらっしゃる

480:デフォルトの名無しさん
08/01/06 16:36:33
そんな殺生な。
もう2005が出てから2年以上経つんですから
デバッガなしだと表面化するバグがどういうものかくらいの情報はあるはずです。
教えてください。

481:デフォルトの名無しさん
08/01/06 16:38:01
>>478
デバッガで落ちてそうな所を見つけるしかないんじゃね?
MFC使ってるのなら、AfxCheckMemoryとかが有効っぽいケースに見えるけどな。

482:デフォルトの名無しさん
08/01/06 16:39:33
>>480
デバッガを疑いたい気持ちは痛いほどわかるが、デバッガのせいじゃないと思うよ。


483:デフォルトの名無しさん
08/01/06 16:40:50
>>481
落ちそうな所も何もデバッガ付きならちゃんと意図したとおりに動いてくれるんですが・・・。

484:デフォルトの名無しさん
08/01/06 16:48:12
>>483
例外ダイアログからデバッガを起動できるから、起きた場所を特定しよう

485:デフォルトの名無しさん
08/01/06 16:58:00
とりあえず変数を初期化せずに使ってるんじゃね

486:デフォルトの名無しさん
08/01/06 17:01:22
>>477
hBmpはいくつだったんだよ
0ならいつまでたっても絵は出ないぞ
試しに>>468のまるまるコピーして
IDB_BITMAP1版(MAKEINTRESOURCE使用)と"IDB_BITMAP1"版どっちも
ビットマップ表示できてるけど

487:486
08/01/06 17:02:46
hInstはInitInstanceでグローバル変数に格納してるVC++が作ったソースのまま
一応念のため

488:デフォルトの名無しさん
08/01/06 17:47:29
>>483

int *a;
a = NULL;

どっかでメモリ確保

if( a )
{
// aのメモリが確保されていた時の処理
}

とかやって落ちている気がするよ
デバッガ使うと何もしなくても変数が0初期化されてる事が多い

489:デフォルトの名無しさん
08/01/06 17:49:08
あ、しまった
a=NULLしたら正常動作するなw

>>488のa=NULLを飛ばしてる気がする

490:デフォルトの名無しさん
08/01/06 18:06:38
>>489
初期化されてないのが正常動作です。

491:468
08/01/06 18:57:43
hBmpに正しく数値入ってるかどうか調べるために、表示させようと思ったんだけど
Printf使えないから試行錯誤で頑張って見たけど
HBITMAP hBmp;
BITMAP bmp_info;
RECT rc;
int w, h;
char *szStr="a";

DRAWTEXTPARAMS dtp;

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "MAKEINTRESOUCE(IDB_BITMAP1");
szStr = BITMAP.bmWidth; //hBmpの情報をszSTRに代入
SetTextColor(hdc, RGB(0, 0, 0));
//szStrの中身を表示
DrawTextEx(hdc,
szStr,
-1,
&rc,
DT_WORDBREAK | DT_EXPANDTABS | DT_TABSTOP,
&dtp);

(110) : error C2275: 'BITMAP' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
よくわからないエラーが…変数の表示ってどうやるの?(´;ω;`)ブワッ

492:デフォルトの名無しさん
08/01/06 19:14:22
まさかブレイクポイントも知らないんじゃないだろうな

493:デフォルトの名無しさん
08/01/06 19:18:13
VC++のスレだから、当然デバッガ使える環境だと思ったんだが

494:デフォルトの名無しさん
08/01/06 19:22:18
>>491
hBmp = LoadBitmap(hInst, MAKEINTRESOUCE(IDB_BITMAP1));
こうな。
そんでコンパイル通る状態にして、この行の次にカーソル移して
F9押してF5押してとまったらhBmpの上にマウスのポインタ置いてみな

495:デフォルトの名無しさん
08/01/06 19:29:11
>>491
あのさー、型名と変数名の違いぐらい勉強してからこいよ

BITMAP 型名
bmp_info 変数名

君ははっきり言って基本的な知識がなさすぎる
まずはコンソールでCの勉強から始めなさい

496:468
08/01/06 19:53:43
大学の課題で締切が迫っておりのっぴきならない状況なのでもう少し質問させてください><
ブレイクポイントは初めて聞いたのですぐに調べて
>>494さんのやり方で出来ました。マウスを載せたら型名と変数のHBITMAP hBmpが表示されて
エラー内容はa.obj : error LNK2001: 外部シンボル "_MAKEINTRESOUCE" は未解決です
Debug/a.exe : fatal error LNK1120: 外部参照 1 が未解決です。
って出ました><

>>495さん
半年前にやったCコンソールの本で構造体の部分読み返してみます><

497:デフォルトの名無しさん
08/01/06 19:55:23
ごめんよ、
MAKEINTRESOURCE
こうね。

498:468
08/01/06 20:07:37
エラーが消えたけど画面がすごく・・・白いです><

499:デフォルトの名無しさん
08/01/06 20:36:45
>>498
そこで>>494

500:デフォルトの名無しさん
08/01/06 21:29:03
>>468のソースで、hInstさえ正しい値を与えれば表示されるっしょ。

501:デフォルトの名無しさん
08/01/07 10:31:24
VS2005 C++のテキストエディタの画面で、
タブキーや、スペースコードが →や・マークで表示されてしまう様になってしまいました。
何かのキーを触ったら偶然そういう設定になってしまったのですが、
戻し方が解りません。どなたか教えて下さい。

502:デフォルトの名無しさん
08/01/07 10:40:33
>>501
超FAQだと思ったが、ここのテンプレはわからなかったので、、、
編集 - 詳細 - スペースの表示 (Ctrl+R, Ctrl+W) で

503:501
08/01/07 11:24:14
>>502
ありがとうございました。無事元に戻りました

504:デフォルトの名無しさん
08/01/07 19:23:12
VS2005 で手元のプロジェクトをコンパイルするときに
WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)
という warning が現れます。
出力ウインドウを見ていると、.cpp ファイルの時にはこれが現れ、
.c ファイルの時には自動的に WINVER を設定しないようで現れません。
どこでファイルタイプを判別して動作を変えているのでしょうか。
また、なぜこのような違いが出るようになっているのか教えてください。

505:デフォルトの名無しさん
08/01/07 20:08:05
標準Cライブラリのヘッダしかインクルードしていないから。

506:デフォルトの名無しさん
08/01/07 21:11:23
MFCを使ったいろいろな例文が載っているサイトないでしょうか?

507:デフォルトの名無しさん
08/01/07 21:13:32
>>506
本買ったほうがいいんじゃないか。

508:デフォルトの名無しさん
08/01/07 21:22:05
>>506
ぐぐればいくらでもあると思うが……
例えば、こんなのでいいのか?
URLリンク(athomejp.com)

509:デフォルトの名無しさん
08/01/08 00:37:11
vc++ 2005と 2008の違いを教えてください

510:デフォルトの名無しさん
08/01/08 00:45:23
バージョン

511:デフォルトの名無しさん
08/01/08 00:48:29
2005年に出たのが2005、2007年にでたのが2008

512:デフォルトの名無しさん
08/01/08 04:23:40
2005って2004年じゃなかったか?

513:デフォルトの名無しさん
08/01/08 04:50:56
どっちでも良いじゃん

514:デフォルトの名無しさん
08/01/08 06:46:02
>>512
2005年だよ

515:デフォルトの名無しさん
08/01/08 15:23:44
入力したwaveを、エフェクトをかけ出力するプログラムを
作りたいのですがそのようなプログラムの作り方を解説するサイトってないでしょうか?

ググッてみたものの出てきませんでした。

当方『windowsサウンドプログラミング』の本を読んで、
そのまま出力するプログラムは出来ています(サンプルプログラムw)

環境VC++6.0

何か書いている途中にスレチな気がしてきましたがよろしくお願いします。

516:デフォルトの名無しさん
08/01/08 15:28:09
SDKのサンプルになかったっけ?
DirectX使いたいのかな?

517:デフォルトの名無しさん
08/01/08 17:33:40
>>515
その本にはWAVデータの詳細が載っているんじゃないかい?
どのデータが何を意味しているかさえわかれば、
あとはそのデータをいじってから出力すればいいだけだ

518:515
08/01/08 17:55:34
>>516
レスありがとうございます。
SDKとは何でしょう?すいません無知もいいとこで…
DirectXを使ったほうが楽なのでしょうか?

>>517
レスありがとうございます。
それがあんまり載っていなくて、
というか私の勉強不足かも知れないんですが…
ど素人なもんでいじり方がどういじってよいやら…



519:デフォルトの名無しさん
08/01/08 17:59:37
うん、君にはまだ早いんじゃないかな

520:デフォルトの名無しさん
08/01/08 18:04:57
#defineした単語の表示色を変えることはできますでしょうか?
オプションのフォントと色を見てみたのですがそれらしい項目が見つからなくて。

521:デフォルトの名無しさん
08/01/08 18:50:23
WAVの波形をいじるだけだからVCとか関係ない
方程式書いて計算するだけ

522:デフォルトの名無しさん
08/01/08 21:12:04
>>520
標準のエディタじゃ無理

523:デフォルトの名無しさん
08/01/09 08:16:34
今までListBoxへのD&Dは、WM_CREATE後のDragAcceptFilesに失敗してても上手く行きましたが、
エディットコントロールへのD&Dが上手く行かなくて困っています。
MessageBox でテスト確認してみたら WM_DROPFILES メッセージを送ってないようなのですが、
これはサブクラス化するしか方法は無いのでしょうか・・・?
リストボックスでは出来てエディットボックスでは出来ないのは何故でしょうか・・・?
ご教授よろしくお願いします。

524:デフォルトの名無しさん
08/01/09 09:01:53
ひとつのウインドウにリストボックスとエディットボックスを配置して
リストボックスにドロップしたらファイル名
エディットボックスにドロップしたらファイルの内容を表示
みたいにやってるけど特に問題なく動いてる

525:523
08/01/09 10:06:21
もしかして同じ種類のコントロールが複数ある場合はサブクラス化しなきゃダメということでしょうか。。
複数のコントロールでD&D使い分けてるのはDragQueryPoint使ってるのかな・・・。

一応CreateWindowExでWS_EX_ACCEPTFILES指定して、
D&Dの際にはカーソルも変わるんですが、上述の通りWM_DROPFILESで何も起きません。

ちなみに、どのコントロールがアクティブ状態でも共通キー処理したいために、
全てのコントロールを一つのプロシージャにサブクラス化しています。
当然、このプロシージャではWM_DROPFILES動作は出来ました。
(ただし、リストボックスで上手く行く他のソースではメインウィンドウプロシージャでWM_DROPFILES受け取ります)

526:デフォルトの名無しさん
08/01/09 11:35:08
作成時に親ウィンドウorコントロールにメッセージを関連付けるような設定がなかったっけか

527:デフォルトの名無しさん
08/01/09 12:35:07
親ウィンドウで受けてもいいし、コントロールで受けてもいいし、
サブクラス化してもいいし、サブクラス化しなくてもいいし、
どれでもお好きなように

528:デフォルトの名無しさん
08/01/09 22:02:32
試しにリストボックスを適当な場所にCreateWindowExで作って観たところ、
(WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE + WS_CHILD | WS_VISIBLE | LBS_EXTENDEDSEL | WS_HSCROLL | WS_VSCROLL,)
親ウィンドウへ通知するスタイルを指定しなくても WM_DROPFILES メッセージが送られました。
逆に、リストボックスで上手く行く方のソースでエディットボックスを作って同様スタイルにしてもダメでした。

D&D可能にしたいエディットボックスは
WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE, + WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | WS_HSCROLL,
のようなスタイルで作成してます。
最初に書くべきことでしたが、環境は VC++ 6.0 です。リソースではなく一つずつCreateしてます。

エディットボックスとドラッグ ドロップでググって観たら似たような症状が幾つか観られたんですが、
サブクラス化以外でリストボックスのように親ウィンドウでの処理という仕方がどうしても見つけられませんでした。

529:デフォルトの名無しさん
08/01/09 22:22:19
お勧め
URLリンク(www5.plala.or.jp)

530:デフォルトの名無しさん
08/01/09 23:59:08
VC++6.0とVC++2005は何が違うんでしょう

531:デフォルトの名無しさん
08/01/10 00:00:52
すいません、基本的な質問かもしれませんが‥

C言語でファイルを保存するととき(fprintfでいいんですが)
testというフォルダに保存したいのですがどうすればよろしいでしょうか?
フォルダはあります。
(例えば、sample,txtというファイル)
PCの環境はwindowsです
よろしくお願いします

532:デフォルトの名無しさん
08/01/10 00:04:43
ファイル開くときにそのフォルダ指定すればいいだけ
ただしアドレスの\は\\にすること

533:デフォルトの名無しさん
08/01/10 00:07:58
\\test\\sample.txt
みたいな形ですか?

一度試してみます

534:デフォルトの名無しさん
08/01/10 00:11:50
ごめんVCとC/C++スレ隣通しにしてたから勘違いしてた・・・
VCやったことないけど試してみて><

535:デフォルトの名無しさん
08/01/10 00:14:19
すいません、ありがとうございました。

test\\sample.txtみたいな形でやれば上手いことできました。
ありがとうございます

536:デフォルトの名無しさん
08/01/11 05:39:28
VC++2005 Standardです。
リンク中に 「fatal error C1001: コンパイラで内部エラーが発生しました。」 というエラーが出るので困ってます。
__m128 x = _mm_set_ps1(y);
と書かれたところが問題のようです。でも、Debugビルドだと問題なくコンパイルできます。Releaseの場合のみエラーが出てきます。
__m128 x = {y, y, y, y};
とするとReleaseでもコンパイルできたりします。

原因がまったくわからないのでお手上げなんですが・・・

537:デフォルトの名無しさん
08/01/11 08:34:11
エラーの起きる最小限のプログラムに削って調べてみる。それをup

538:デフォルトの名無しさん
08/01/11 21:15:58
__m128とか_mm_set_ps1とか初めて見た。情報がすくねぇw
DebugとReleaseで_mm_set_ps1がコンパイルエラーになるなら_mm_set_ps1の定義見てみては?
俺は環境がないから確認できない・・・
関係ないかもしれないけど↓みたいな話もあるみたいね。
URLリンク(richa850.hp.infoseek.co.jp)

539:デフォルトの名無しさん
08/01/12 12:33:54
VisualC++2008ExpressEditionを今日から使い始めました
1つのソリューション内に複数のプロジェクトがあり、ソリューション内の
あるプロジェクト(コンソールアプリ)から同ソリューション内の他のプロジェクトをインクルードディレクトリに指定する場合
どのようにすればスマートですか?

プロジェクトをコンソールアプリで作成すると構成プロパティのツリー内に
「C/C++」という項目が出てこない為、推移的に「追加のインクルードディレクトリ」という項目もありませんでした
コマンドラインの-I ../hogeを使うのかなと思いましたけど、どこに追加すればいいのやらで

初歩的過ぎで申し訳ありませんがご教授の程お願いします。

540:デフォルトの名無しさん
08/01/12 12:46:45
タスクバーのメニューを消して、タスクトレイにアイコンを表示させるものを作っています。
タスクトレイのアイコンをダブルクリックした際に、ウィンドウを表示、ウィンドウをトレイへ格納の動作をつけたいと思うのですが、
処理が分かりません。
どーいった関数、処理の流れになるのか教えて下さい。
また、参考になるサイト等もあれば教えて頂きたいと思います。宜しくお願いします。

541:デフォルトの名無しさん
08/01/12 13:23:50
なんでググらないんだろう

542:デフォルトの名無しさん
08/01/12 13:27:57
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)


543:デフォルトの名無しさん
08/01/12 15:22:18
>>539
[ファイル]-[新規作成]-[プロジェクト]
[Visual C++]-[全般]
空のプロジェクト

でコンソールアプリを作成してるけど

[プロジェクト]-[xxx のプロパティ]
[構成プロパティ]-[C/C++]-[全般]
追加のインクルードディレクトリ

が見えてる

544:539
08/01/12 16:44:51
>>543
資料を見ながら作っていたのですがその手順の通りだと
あたかも最初から表示されているようにかかれてましたがソースファイルが1つも無いプロジェクトには
どうやらC/C++の項目が表示されないようになっているようです。
1つ適当にファイルを追加した後表示される事が確認できました。
有り難うございました。

545:デフォルトの名無しさん
08/01/13 20:16:06
ググって分からないから書いてんだろ?
キーワードもうまく見つけられないんだろうな

546:デフォルトの名無しさん
08/01/13 21:41:49
beginthreadで開始したスレッドが終わらないうちにプログラム本体をPostQuitMessageで終了すると、
デバッグ時の出力ウィンドウに
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
と表れるんですが、どうすればアクセス違反が起こらないように終了できるんでしょうか。

547:デフォルトの名無しさん
08/01/14 04:42:22
>>546
子供に自殺要求を出して、その死水を取ってから自殺してください。

548:デフォルトの名無しさん
08/01/14 14:42:18
VC++ 2005 でisNaNを使った関数を使用するためには
ソースコード中に
using namespace System

と書けばいいのでしょうか?

549:デフォルトの名無しさん
08/01/14 14:49:31
>>548
isnan()でよければそんなことを書く必要はありませんが。

550:デフォルトの名無しさん
08/01/14 14:59:32
>549
どうもありがとうございます

デバッグかけるとソースコード中の

track_box.angle = !isnan(theta) ? (float) -theta : 0;

のところで、

error C3861: 'isnan': 識別子が見つかりませんでした
と表示されてしまいます…コードがいけないのでしょうか?

551:デフォルトの名無しさん
08/01/14 15:03:41
_isnan()

552:デフォルトの名無しさん
08/01/14 15:10:46
>551
うまくいきました!ありがとうございました

553:デフォルトの名無しさん
08/01/14 17:13:21
デバッグ?って実行しようとしてその前のコンパイルでのエラーか・・・

554:デフォルトの名無しさん
08/01/14 22:31:41
_inran()

555:デフォルトの名無しさん
08/01/15 09:00:58
>>546
メモリ破壊を修正

556:デフォルトの名無しさん
08/01/16 21:33:58
Visual C++ 2005でdirectx9.0でプログラミングしています。
プログラムは動くのですが、終了時に
スレッド 'Win32 スレッド' (0x654) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x98) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x424) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x2e0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x65c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4c0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4d8) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4b0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4a0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x23c) はコード 0 (0x0) で終了しました。
と大量に同じようなメッセージが出力されます。
これは異常なのでしょうか?


557:デフォルトの名無しさん
08/01/16 21:35:54
異常です

558:デフォルトの名無しさん
08/01/16 21:37:46
ウイルス

559:デフォルトの名無しさん
08/01/16 21:47:09
大量に出るのは異常だという根拠があるのなら異常です。

560:デフォルトの名無しさん
08/01/16 21:56:08
>>556
スレッドを作った覚えはあるかどうか。
心当たりが無ければ、実行中に中断させて、デバッグ-ウインドウ-スレッドでスレッドの一覧が出るので、何のスレッドか調べてみよう。

561:556
08/01/16 21:57:04
どうやら音関係の初期化で出てるみたいなんですけど、
//パフォーマンスの作成
CoCreateInstance(CLSID_DirectMusicPerformance, NULL,
CLSCTX_INPROC, IID_IDirectMusicPerformance8,
(void**)&g_pPerformance );
とするとエラーが大量に出てしまうようです。
おかしな所あるでしょうか?指摘お願いします。

562:デフォルトの名無しさん
08/01/16 21:58:41
感染してるとそうなる

563:デフォルトの名無しさん
08/01/17 00:33:52
悪いことは言わない、DirectMusicには手を出さない方がいい
超えられない壁がある

564:デフォルトの名無しさん
08/01/17 12:19:17
(BBSを使うのは)難しい

565:デフォルトの名無しさん
08/01/18 14:39:11
XP(SP2) VC++6.0 MFC ダイアログベースです。
画像をランダムに表示させたいのですが、どうすればいいでしょうか?

566:デフォルトの名無しさん
08/01/18 14:56:33
rand()に時間でもかけて使えばいいと思います

567:デフォルトの名無しさん
08/01/18 15:01:23
ランダムじゃないところまではできてるのなら、それを晒してみ。

568:565
08/01/18 21:42:25
randで自己解決しました。
表示させる枚数も少ないので…。

ご迷惑をおかけしました。

569:デフォルトの名無しさん
08/01/18 21:44:47
自己解決

570:デフォルトの名無しさん
08/01/18 23:29:09
向きを持ったキャラクタを回転させたいんですけど、
3D空間での単位ベクトルの回転ってどうしたらいいですか?
回転といったら行列を掛ければいいとおもったんですけど、ベクトルは3元なので
どうしたらよいかわかりません。

571:デフォルトの名無しさん
08/01/18 23:36:20
ゲーム製作板にでも行け

572:デフォルトの名無しさん
08/01/19 00:50:34
>>568
どこが自己解決だよカス

573:デフォルトの名無しさん
08/01/19 00:53:03
>>570
・単位マトリクスを用意
・用意したマトリクスの平行移動成分にベクトル値を入れる
・回転マトリクスと乗算する

574:デフォルトの名無しさん
08/01/19 01:59:59
>>573
やってみたら出来ました。
ありがとうございます。
しかし、z軸の+の方からみた時は上手く動くのですが、
逆を向いた時に上下が反対になってしまいます。
D3DXMatrixRotationYawPitchRoll(&m_mat,
D3DXToRadian(yaw),
D3DXToRadian(pitch),
D3DXToRadian(roll) );
として回転行列作っているんですが、pitchの回転が上手くいきません。


575:デフォルトの名無しさん
08/01/19 03:51:03
調子に乗るなよカス
ここはVCのスレだ

576:デフォルトの名無しさん
08/01/19 11:55:55
strcpyとか使うと出る例のwarningが、
#define _CRT_SECURE_NO_DEPRECATE 1
ってやっても出たまんまなんですけど、
なぜだか分かりますか?
(#pragma warning(disable:4996)は効きます)


577:デフォルトの名無しさん
08/01/19 12:05:54
ヘッダのインクルードより先に書いている?

578:デフォルトの名無しさん
08/01/19 12:13:16
>>577
ありがとうございました。
解決しました。
自作のヘッダーの方では、ライブラリのinclude前に
あったのですが、mainの方ではそのヘッダーをライブラリよりも
あとから呼んでました。

もしかして、
このdefineはmainのあるcppの頭にだけ
書けばよいものなのでしょうか?


579:デフォルトの名無しさん
08/01/19 13:30:28
ふつうは、コンパイルオプションに仕込むけど

580:デフォルトの名無しさん
08/01/19 14:23:17
Visual C++ってフォームデザイナ付いてんの?

581:デフォルトの名無しさん
08/01/19 14:56:38
>>580
[ファイル]-[追加]-[新しいプロジェクト]
[Visual C++]-[CLR]
Windows フォーム アプリケーション
でプロジェクトを作成すると使えるみたい

582:デフォルトの名無しさん
08/01/19 15:00:17
C++ とうか C++/CLI だけどね.

583:デフォルトの名無しさん
08/01/19 18:30:45
クラスの中で+演算子(などを)定義した際、一時的に、
newで何かを作ったとします。
(こんな感じ?)
type* tmp = new type[num];。
で、その何かは(何らかの処理後)
その演算子定義のreturnで使いたいとします。
return CLASS_X(tmp_s);
このとき、tmpのdeleteはいったい
どこで行ったらよいのでしょうか?
(deleteなしで作成後、実行しても動いてはいる?
のですが、たまたまのような気がして心配なので)

584:デフォルトの名無しさん
08/01/19 18:32:07
訂正
誤:return CLASS_X(tmp_s); 
正:return CLASS_X(tmp); 


585:デフォルトの名無しさん
08/01/19 18:44:40
>>583
tmpの型をboost::scoped_array<type>にでもすればいい。

586:デフォルトの名無しさん
08/01/19 18:59:11
>>583
CLASS_X()の戻り値を変数に保持してからtmpを解放
で、returnで保持した変数を返せばいい

587:デフォルトの名無しさん
08/01/19 19:00:19
ちなみに>>583でも動くだろうが、呼び出す毎にどんどん空きメモリが減っていく

588:デフォルトの名無しさん
08/01/19 19:02:32
>>580
スタンダード以上ならついてる

589:デフォルトの名無しさん
08/01/19 19:12:29
フォームでよければexpressにもついてる

590:デフォルトの名無しさん
08/01/19 19:31:40
>>585
できればboost以外でお願いしたいのですが。


591:デフォルトの名無しさん
08/01/19 19:34:09
>>583
operator=()の中でnewする必要がある状態ってのがよく分からない。
自動変数の値返しじゃダメなのか?
ソース提示可能なら提示よろ。

deleteしなかった場合は587の言うように当然メモリリークしていくぞ

592:デフォルトの名無しさん
08/01/19 19:46:23
標準C++の話なら他所でやれ

593:デフォルトの名無しさん
08/01/19 19:47:08
>>590
std::vector<type>
&tmp[0]のようにすれば、先頭要素へのポインタも得られる。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch