■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part9
251 名前:デフォルトの名無しさん :03/11/29 20:01
>>245
なんだ、マルチの挙げ句に人にものを聞く態度でもない香具師だったんだ。
向こうで答えて損した。

252 名前:灯台離散 ◆777zZZSC5A :03/11/30 00:17
int i;
for(i=0; i<33000; i++) printf("%d", i);

問 これは終了するか否か

独習Cにて上のような問題がありました。
解答を見ると、「終了しない、何故ならintだから」とありました。
intを16bitと仮定した上での解答だと思われますが、実際にやったところ、ばっちり終わりました・・・・アレ?

VisualC++って intはもしかして32bitですか?

253 名前:デフォルトの名無しさん :03/11/30 00:21
ごめんなさい・・・思いっきり書いてありました・・・・・

254 名前:灯台離散 ◆777zZZSC5A :03/11/30 00:21
さらにごめんなさい・・・・・
上のは私です・・・・

255 名前:デフォルトの名無しさん :03/11/30 01:40
>VisualC++って intはもしかして32bitですか?
意味がわからんぞ?

256 名前:デフォルトの名無しさん :03/11/30 02:58
WindowsがIA32の上に乗ってる限りはintは32bitだ

257 名前:デフォルトの名無しさん :03/11/30 02:59
VC++でDLLを作ってみようと、Try & Errorで悪戦苦闘しています。
ひとまず「DLLはビルド時に関数をエクスポートしないと外部から呼び出せない」ってのはわかりました。

で、VC++で作られたDLLの見本(公開されてるものをお手本にしてる)を depends.exe で
覗いてみると、_hogehoge @0 という感じでエクスポートされた関数名が出ています。

そこで、自前のDLLでも void hogehoge(void) を作り、defファイルに EXPORT hogehogeと書いて
プロジェクトに加え、ビルドしたのですが、同じ方法で覗いてみると hogehoge としか出ていません。
アンダースコアと序数(ですか?)はどこへ・・・?('A`)

258 名前:デフォルトの名無しさん :03/11/30 03:22
そりゃ、あなた、見本のほうは defファイルじゃなくて __declspec(dllexport) でエクスポートしてるからだよ。

259 名前:ネットワークといえば :03/11/30 06:30
オマエら、
ブラウザのアドレス欄に、ファイル名称を表示させない方法、
知らね〜だろ。
大手サイト作ってる奴しか知らないワナ♪

260 名前:デフォルトの名無しさん :03/11/30 11:07
誰かブラウザのアドレス欄に、ファイル名称を表示させない方法を教えてください

261 名前:デフォルトの名無しさん :03/11/30 11:11
ツールバー右クリックでメニュー出して「アドレスバー」のチェックを外しやがれ

262 名前:デフォルトの名無しさん :03/11/30 15:35
>>261
もう少しプログラマーらしい回答をしろよ。
IWebBrowser2::ShowBrowserBar()で消すんだよ。

263 名前:176 :03/11/30 16:19
>>235>>240の件に回答いただけませんか?
ここ聞いておかないと話の流れに決着がつかないので
お願いします

264 名前:デフォルトの名無しさん :03/11/30 16:36
>>263
最適化が可能なProf版買えば?('A`)

265 名前:デフォルトの名無しさん :03/11/30 17:09
ダイアログベースのプログラムを作るとき、プログラム共通で使用する変数は
CHogeApp で宣言するか CHogeDlg で宣言するかどちらがいいのでしょうか?


266 名前:デフォルトの名無しさん :03/11/30 17:12
お好きな方で・・・・
#内容による・・・・・・・・・・・ それが分からないなら設計から見直ししろ

267 名前:デフォルトの名無しさん :03/11/30 17:21
描画を一定時間ごとに表示させたいのですが、何故か動かないんです。

case WM_CREATE:
  SetTimer(hWnd, 1, 1000, NULL);
case WM_TIMER:
  if(Time == 0) Time = 1;
case WM_PAINT:
  for(n=0 ; n<MAX ; n++){
    if(Time == 1){   //Time=1だったら描画開始
      //描画イベントコード
    }
    Time = 0;
  }

for文内の処理を一定時間ごとに行うというようなことはできないのでしょうか?

268 名前:デフォルトの名無しさん :03/11/30 17:30
>>267
WM_TIMERで描画しては伺か?

WM_TIMER:
 RedrawWindow();
 break;

269 名前:デフォルトの名無しさん :03/11/30 17:56
タイマーイベント中に描画すればいいだけの話では?

270 名前:デフォルトの名無しさん :03/11/30 18:44
>>263
速度が気になるなら「仮想リストビュー」を使え

271 名前:デフォルトの名無しさん :03/11/30 18:46
>>263
MFCを使わず直接APIを使え。

272 名前:デフォルトの名無しさん :03/11/30 19:32
Visual C++.net Standard Version 2003 ってWindows Meじゃインストール出来ないんですか?
バカバカしい質問ですみません・・・

273 名前:デフォルトの名無しさん :03/11/30 20:10
>>272
MSのサイトはきちんと確認したのか?

274 名前:デフォルトの名無しさん :03/11/30 20:33
Windows Me で開発してる人キタ━━━━━(゚∀゚)━━━━━ ?

275 名前:デフォルトの名無しさん :03/11/30 20:47
キタ━━━━━(゚∀゚)━━━━━ ?ってまだ使ってるの?

276 名前:デフォルトの名無しさん :03/11/30 21:50
>>265
どっかのクラスにメンバ作って、
その他のクラスにポインタ渡す。

277 名前:デフォルトの名無しさん :03/11/30 22:41
>>276
そのクラスをグローバルに宣言するなんだよな。

278 名前:267 :03/12/01 04:04
>>268-269
case WM_PAINT:
for(int i=0 ; i<100 ; i++)
{
char sz[2];
wsprintf(sz, "%02d", i);
TextOut(hdc, 10*i, 10, sz, (int)strlen(sz));
Rectangle(hdc, 10*i, 0, 10*(i+1), 10);
}
break;

といったプログラムで、□で囲まれた1, 2, 3…を1秒おきに表示することを考えているのですが、
WM_TIMER内で、RedrawWindow()やInvalidateRect()できるのでしょうか?
できたら御免なさい。どうやってもできなかったもので。
(実際に作成するのは、数字をランダムに配置します。今回は簡単な例で表記しています。)

279 名前:デフォルトの名無しさん :03/12/01 04:18
>>278
NULL文字は・・・?

280 名前:デフォルトの名無しさん :03/12/01 04:34
>>278
UpdateWindow()は?

281 名前:デフォルトの名無しさん :03/12/01 05:20
つかWM_PAINTでデバイスコンテキストは取得しないのか

282 名前:デフォルトの名無しさん :03/12/01 13:59
>>278
szは2文字分のスペースしかないから>279が言うようにナル文字が溢れる。
余計なメモリを喰うわけじゃないからchar sz[4];とでもしときなさい。

283 名前:デフォルトの名無しさん :03/12/01 21:35
>>277
MFCだとすでにひとつはグローバルになってるからそれ使えばいーじゃん。

284 名前:デフォルトの名無しさん :03/12/01 21:45
じゃあ元質問の>>265ではCHogeAppじゃん
すげー回りくどい回答


285 名前:デフォルトの名無しさん :03/12/02 01:35
>>283 は ::AfxGetApp() と ::AfxGetMainWnd() を知らんのか?

286 名前:デフォルトの名無しさん :03/12/02 08:35
>>285
MFCはあんまり使わんからな。

287 名前:デフォルトの名無しさん :03/12/02 15:26
>>285の意図がわからない。どゆこと?

288 名前:デフォルトの名無しさん :03/12/03 00:52
VC++6で、classの列挙型のインテリセンスは使えないの?

class abc{
enum{a,b,c};
};

abc::a;//ってやつ

289 名前:デフォルトの名無しさん :03/12/03 01:37
vc2003でコンソールアプリを作っていますが、コンソールへの出力を
表示するのはどうすればいいのでしょうか?
コマンドプロンプトから実行した場合は、正常に表示されます。

290 名前:デフォルトの名無しさん :03/12/03 01:45
>>289
コンソールアプリならコマンドプロンプトに表示されればいいんじゃないの???

291 名前:デフォルトの名無しさん :03/12/03 01:47
>>290
VisualStudioから実行した時でも、結果を表示したいのです。
可能でしょうか?

292 名前:デフォルトの名無しさん :03/12/03 01:49
表示はされてるだろ。終了時にすぐ閉じるけど。

293 名前:デフォルトの名無しさん :03/12/03 01:52
>>291
終了直前(mainの最後とか)にgetchar();とか入れておけば。

294 名前:デフォルトの名無しさん :03/12/03 01:55
>288
class abc{
public: enum XXX{a,b,c};
};

abc::a


295 名前:デフォルトの名無しさん :03/12/03 01:56
/* 入力した文字をそのまま出力 */

while ((c = 月藤茶()) != EOF) {
    腐頭茶();
}

296 名前:デフォルトの名無しさん :03/12/03 01:57
>>289
たぶん表示されているのは?
動体視力を鍛えて、もう一度チャレンジ!

297 名前:デフォルトの名無しさん :03/12/03 02:15
>>293
わかりました。

みなさん、ありがとうございました。

298 名前:デフォルトの名無しさん :03/12/03 08:46
>>294
abc::XXXのインテリセンスは機能しますが、
abc::aはでませんよね・・・?
設定が悪いのかな・・・・。

299 名前:頭わるいんです :03/12/03 09:07
DLLを作成した事がないのですが、
VisualC++.NETによるDLLの作成方法を教えて下さい。
EXEをつくるのとどう違うのでしょうか?


300 名前:デフォルトの名無しさん :03/12/03 09:12
>298
abc::XXX までです。
もしかする方法があるのかも知れませんが。

301 名前:デフォルトの名無しさん :03/12/03 17:32
>>291
ctrl+F5 で実行しましょう。
プログラムが終了すると一旦止まります。
デバッグはできなかったと思います。

302 名前:278 :03/12/03 20:02
>>279-282
回答ありがとうございます。
UpdateWindowもできなかったので、メタファイルで強引にアニメ化させてみました。
どうもでした〜。

303 名前:デフォルトの名無しさん :03/12/04 00:48
ライブラリの作成の仕方について教えて戴きたい者です。
JPEG画像を読み込むソフトをつくりたいのですが、かなり苦戦しています。
JPEGを読み込むには、フリーで提供されている「libjpeg」というソースをライブラリ化することで可能だということは調べたのですが、
いかんせん初心者で、ライブリのつくり方がよくわかりません。

ttp://tanack.hp.infoseek.co.jp/libjpeg.html
ttp://www.amy.hi-ho.ne.jp/jbaba/jpeg1.htm
に詳しいやり方がのっていたのですがうまくいきませんでした。

1・コンソールから「make」で作成する
2・Win32 Static Libraryでワークスペースを作成しメイクする(メイクするとは何をすることでしょうか?)
というの2つの方法を試したのですが...

結果
1・'make'は内部、外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません
2・ビルドすると9箇所で同じエラー、warning C4005: 'FAR' : マクロが再定義されました。
となり、ライブラリが作成されませんでした。

かなり自分勝手な質問で大変申し訳ないのですが、知恵を貸していただけないでしょうか。
宜しくお願いいたします m(_ _)m

開発環境:WinXP VC++ Ver.6.0
<libjpeg>
ttp://www.ijg.org/



304 名前:デフォルトの名無しさん :03/12/04 00:58
FARの再定義自体は、警告であるから他にエラーが出たんだろう。
makeはVC++ならvcvars32をやってからnmakeだが。

305 名前:デフォルトの名無しさん :03/12/04 01:07
ATL (CImage) か、WebBrowserコントロールを使ったほうが早いという罠。

306 名前:303 :03/12/04 01:14
>>304
回答ありがとうございます!

1行目の警告への対処はわからないままですが、
2行目の「vcvars32」で検索してみると、いろいろでてきました。
コンソール上から操作するにはいろいろ手順を踏む必要があるのですね...
ただ「make」とうてばよいものだと勘違いしていました。
頑張ってみます。

307 名前:デフォルトの名無しさん :03/12/04 01:26
>>305
いいよなぁATL7.xは・・・・

308 名前:303 :03/12/04 01:46
>>305>>307
むむむ・・・
なにやら便利そうですね。
ぜひ使ってみたい!・・かったのですが、
さらりと検索しみても全く意味不明でした・・申し訳ないです(´д`)
C言語を学び始めてまだ数ヶ月、もう少し基本操作を学んでおきたいのです,,(゚Д゚)
こやつに決着がつき次第、もう少し突っ込んで調べて見たいと思います。
ありがとうございました m(_ _)m

309 名前:デフォルトの名無しさん :03/12/04 05:46
リサイズ時にウィンドウがちらついて非常に気になります。
何か良い手はないでしょうか?

WM_PAINTの中でCreateCompatibleDC()で互換DCを作って
そこに描いてBitbltで元のDCに転送しています
FillRect()だけでも激しくちらつくのはやるせないです

310 名前:デフォルトの名無しさん :03/12/04 09:48
bitmapをバッファにしてストレッチビルトすてみてはどう。
ビデオカードが高速ならばあまり気にならないが。

311 名前:デフォルトの名無しさん :03/12/04 11:02
ちやんとWM_ERASEBKGNDは潰してゐるか?

312 名前:デフォルトの名無しさん :03/12/04 11:06
>>307
mfcでも使えるよ

313 名前:312 :03/12/04 11:08
GDI+を使いたくないならOleLoadPicturePath()がいいかもね

314 名前:デフォルトの名無しさん :03/12/04 13:06
>WM_PAINTの中でCreateCompatibleDC()で互換DCを作って
>そこに描いてBitbltで元のDCに転送しています

バックバッファに描いてるのにWM_PAINTの中でっておかしくない?
WM_PAINTでは普通BitBltのみじゃないっけ?

315 名前:デフォルトの名無しさん :03/12/04 14:09
#defineIDC_LIST200//cppの先頭のグローバルの位置に記述
char* Buff;//cppの先頭のグローバルの位置に記述

//以下ウィンドウの表示関数内での記述
HWNDhWnd;
HWNDhLIST;
hLIST=CreateWindow("LISTBOX","",WS_CHILD|WS_VISIBLE
,100,100,100,100,hWnd,(HMENU)IDC_LIST,hInstance,NULL);
Buff="あぼ";
SetDlgItemText(hWnd,IDC_LIST,Buff);

メインウィンドウ上にLISTBOX表示しようと思い、このように書いたのですが、あぼ がでません。
ちなみに、他にメインウィンドウ上には何も書いてません。
いったい、どうなっちゃってるんでしょ。

316 名前:デフォルトの名無しさん :03/12/04 14:15
>>315の訂正です。
SetDlgItemText(hLIST,IDC_LIST,Buff);
          ~~~~~
#define IDC_LIST200//間空ける
HWND hWnd;//間空ける
HWND hLIST;//間空ける

お願いいたします。

317 名前:315です :03/12/04 14:35
SetDlgItemTextの親元のハンドルをhWndにして、STATICTEXTでやったら あぼ がでました。
どうやらLISTBOXにはSetDlgItemTextは効かないような気がするのですが・・・。
どのようにすれば良いでしょ?

318 名前:デフォルトの名無しさん :03/12/04 14:41
>>315
http://www.kumei.ne.jp/c_lang/sdk/sdk_18.htm

319 名前:315です :03/12/04 14:43
>>318
すみません、ありがとうございます。
まだ、猫のレベルでうろついてます。トホホ・・・

320 名前:デフォルトの名無しさん :03/12/04 16:55
クレーを飛ばしてみたいんだが

321 名前:デフォルトの名無しさん :03/12/04 18:18
射撃場にいくか自分で投げるしかないんじゃないか
それかパチンコのような物を自転車のチューブで作って飛ばすとか

322 名前:デフォルトの名無しさん :03/12/04 19:32
>>320
ttp://pc2.2ch.net/test/read.cgi/tech/1062098350/607 か?

323 名前:デフォルトの名無しさん :03/12/04 22:00
>>311
ありがとうございます。ちらつきが消えました。
こんなイベントもあったんですね・・・

>>314
すみません。よく分かりません。
バックバッファに色々な物を描いてから表示するようにしています。


サイズを変えるとCPU使用率が高くなり、
ウィンドウを小さくすると、少しの間、跡が残るのはどうにかなるんでしょうか。
サイズを変えても描画の必要が無い所は描かない、
部分的に描画する等は可能でしょうか?

324 名前:デフォルトの名無しさん :03/12/04 22:10
IME等に使われている変換候補ウインドウはどういったものでしょうか?
(DirectXフルスクリーンアプリでもゲームが中断されない)

調べたいのですが、検索すべきキーワードが分かりません。
ご存じでしたら、ご教示下さい。

325 名前:デフォルトの名無しさん :03/12/04 22:57
#include するヘッダファイルを増やした時に
「再定義されました」などのエラーが続出するのですが考える原因はなんでしょうか?

もちろん、各ヘッダファイルの先頭に #pragma once を記述しています。

326 名前:デフォルトの名無しさん :03/12/05 00:36
a.h:
#pragma once
#define AKECHI KOGORO

b.h:
#plasma once
#define AKECHI MITSUHIDE

c.c:
#include "a.h"
#include "b.h" // 再定義されますた

327 名前:デフォルトの名無しさん :03/12/05 01:36
>>325
#ifndef〜#endif等を使ってないからだろ。

328 名前:名無し@沢村 :03/12/05 01:45
>>327
#pragma once
#pragma once
#pragma once

329 名前:デフォルトの名無しさん :03/12/05 02:11
>>327
なんで強気で恥ずかしいこと言うかな

330 名前:デフォルトの名無しさん :03/12/05 10:28
>324
ttp://www.honet.ne.jp/~tri/program/noime.html
このあたり参考にしたら?

331 名前:デフォルトの名無しさん :03/12/05 12:55
メッセージボックスの中にあるボタンを動的サブクラス化したのですが、
見えないボタンになってしまいました。
TRACEやMS-Spy++等で調べてみたところ、動的サブクラス化は
一応成功していましたが、どうやら、フレームワークで呼び出されるはずの
DrawItem関数が呼び出されていないのが原因のようです。
WM_DRAWITEMメッセージで代用しようとしましたが
これも駄目でした。
自前のダイアログボックスのだと成功するのに…。

DrawItem関数を呼び出されるようにするには、
どうすれば良いでしょうか?

VC++.net、MFCです。

332 名前:デフォルトの名無しさん :03/12/06 07:30
Temporary Internet Files フォルダ内にあるファイルをCopyFileでコピーしようとすると戻り値0でエラーになってしまうのですが、
このフォルダ内のファイルをコピーする場合どのようにすればよいのでしょうか?


333 名前:332 :03/12/06 08:45
すいません、自己解決しました。

334 名前:デフォルトの名無しさん :03/12/06 10:55
MFCクラスを継承したclass Aをさらに継承したclass Bというクラスを
ClassWizardからみれるようにするにはどうすればいいのでしょうか?

メニュー[挿入]-[クラスの新規作成]からclass Aを作成します。

class AはClassWizardから見える

メニュー[挿入]-[クラスの新規作成]からクラスの種類をGenericクラスとし
基本クラスにclass A指定しclassBを作成します。

class BはClassWizardから見えない


335 名前:デフォルトの名無しさん :03/12/06 13:12
>>334
一旦閉じて.clwを削除して再度開く(無保証)

336 名前:334 :03/12/06 13:39
>>335
.clwを削除だけではダメでしたが、できました。
ありがとうございました。

337 名前:デフォルトの名無しさん :03/12/06 17:37
Spy++ みたいに他のウインドウへのメッセージを監視したいのですがどのようにすればよいのでしょうか?

338 名前:デフォルトの名無しさん :03/12/06 18:43
>>337
「グローバルフック」で検索してみ

339 名前:デフォルトの名無しさん :03/12/06 21:53
>>337
「ブーメランフック」で検索せよ。

340 名前:デフォルトの名無しさん :03/12/06 23:34
>>326
プラズマ once ってなんかすごそうだな。


て言う、お約束の突っ込みは置いといてこのケースは #pragma once じゃダメだろ。
どうしてもやりたいなら、

a.h
#ifndef AKECHI
#define AKECHI KOGORO
#endif

b.h
#ifndef AKECHI
#define AKECHI MITSUHIDE
#endif

ってやるしかないと思うけど、インクルード順序に依存して値が変わるマクロってなんか怖いぞ。

まあ、>>328-329 はヴァカだと言うことはよくわかったけど。

341 名前:デフォルトの名無しさん :03/12/07 00:22
>>340 必死だな

342 名前:デフォルトの名無しさん :03/12/07 00:51
ワロタ

343 名前:デフォルトの名無しさん :03/12/07 02:06
>>340
文意が全然よめてないだろ

344 名前:デフォルトの名無しさん :03/12/07 06:52
つーか、どこからプラズマが出てくるんだ?

345 名前:デフォルトの名無しさん :03/12/07 09:53
>>344

>>326
b.h:
#plasma once

>>341=>>343=>>328-329 なのか ?

346 名前:デフォルトの名無しさん :03/12/07 10:19
つーか>>326は質問者じゃないのに何でそれを元に回答してんだ・・・


347 名前:デフォルトの名無しさん :03/12/07 10:53
>>346
げっ !!
>>325-326 と並んでたから、>>325 が質問で >>326 が具体例だとおもーてたよ。
書き込みの時間が結構あいてるから違うのか...。

>>325 はちゃんと具体例あげれ。

348 名前:デフォルトの名無しさん :03/12/07 11:08
いや、単純にマクロ再定義したんだろ。どこまで引っ張るんだ。

349 名前:デフォルトの名無しさん :03/12/07 17:39
作っているソフトの起動に時間がかかるのでVS.NETとかPhotoshopのように、起動時にスプラッシュ?みたいなのを表示しようと思い、CDialogから派生して作ってみました。
CLogoDlg logo; logo.Create(IDD_DIALOG_LOGO); logo.ShowWindow(SW_SHOW);

これだと、アプリが起動した後だとうまくいくのですが、起動中に表示しようとしても、ダイアログ上のコントロールが表示されず。ベースの灰色の部分しか表示されません。
そして、完全に起動した後に、ダイアログ上のコントロールが表示されてしまいます。
ちなみにDoModal()だと起動中、起動後関係なくダイアログ上のコントロールが表示されますが、それだとアプリの起動が止まってしまいますし・・
どうしたらよいでしょうか?

350 名前:349 :03/12/07 17:40
age

351 名前:デフォルトの名無しさん :03/12/07 18:14
時間のかかる処理は別スレッドに汁

352 名前:デフォルトの名無しさん :03/12/07 18:38
VC++6のエディットボックスの文字入力で、
Enterを押すと改行するようにしたいのですがどうすればいいでしょうか。
現在、プロパティの「複数行」と「改行を許可」にチェックを入れているのですが
これ以外にも設定が必要でしょうか。

353 名前:さすらい :03/12/07 22:19
はじめまして、C++でプログラム作成するのですが問題が解けません。
問題は、入力された2つの整数の差の絶対値を出力するプログラムを作成しなさい。整数には、
負数を入力される場合も考慮する。
次のプロトタイプ宣言を持ち、変数n1とn2の差の絶対値を戻す関数を使用すること。
int Absolute(int n1,int n2)

入力は、キーボードから(getcharを使うこと)。
エラー仕様で、9桁以上の文字列が入力された場合、先頭から8桁のみを有効とし、9桁以降を無視する。
また。数値以外の文字が入力された場合、Enterキーのみ、または、'−'のみが入力された場合は、エラーメッセージを
表示して終了する。

この問題を解けるかたがいましたら、解答をお願いします。


354 名前:さすらい :03/12/07 22:20
int Absolute(int n1,int n2)
{
if(n1 > n2)
{
return n1 - n2;
}
else
{
return n2 - n1;
}

355 名前:デフォルトの名無しさん :03/12/07 22:36
いまどきgetchar()なんかで入力してられるかよ

356 名前:デフォルトの名無しさん :03/12/07 22:37
ライブラリ使ったらだめなのか

357 名前:デフォルトの名無しさん :03/12/07 22:39
つーか、宿題スレに同じ問題あるよ。

358 名前:デフォルトの名無しさん :03/12/07 23:00
>>353
宿題は自分の力でやれよハゲ!
こんな簡単なものも出来んようじゃ止めちまえ!

359 名前:デフォルトの名無しさん :03/12/08 00:30
というか、これC++の問題なのか?マジで

360 名前:デフォルトの名無しさん :03/12/08 06:42
参考にならないようだ

361 名前:デフォルトの名無しさん :03/12/08 11:20
流れを読まず書き
return (short int)n1 - (short int)n2;

362 名前:デフォルトの名無しさん :03/12/08 18:12
VC++6のエディットボックスの文字入力で、
Enterを押すと改行するようにしたいのですがどうすればいいでしょうか。
現在、プロパティの「複数行」と「改行を許可」にチェックを入れているのですが
これ以外にも設定が必要でしょうか。


363 名前:デフォルトの名無しさん :03/12/08 18:50
リソースファイル(*.rc)の保存をしないと、反映されないよ。

364 名前:デフォルトの名無しさん :03/12/08 18:50
>>362
「垂直オートスクロール」が有効でないと、エディットボックスの高さ分の
行数しか受け付けないみたいだけど、そういうことじゃなくて?

365 名前:デフォルトの名無しさん :03/12/08 22:19
>>362
新規作成でダイアログにエディットボックスだけ作ってやってもダメ?
もちろん「複数行」と「改行を許可」と「垂直オートスクロール」を有効にした状態で。
それでうまくいくなら原因は362の文章の中には無いな。
思いつくこととしてはPreTranslateMessageでEnter無効にしてるとか。

366 名前:デフォルトの名無しさん :03/12/09 02:00
>>362はマルチ。

367 名前:デフォルトの名無しさん :03/12/09 03:02
_ , '⌒ ⌒\
\\ ノノレノ )))
  (○) 〒〒|ノ
  'へ゛゛∀ノ  <まるぽ

368 名前:デフォルトの名無しさん :03/12/09 13:26
質問です。

あらかじめ式を何かファイルに保存しておき(例えばY=A+B
その右辺の値(この例でいうとAとBの値)を入力させて左辺の値を求める
というものを作りたいのですが
どのような方法を使うとできるのでしょうか。

例えばAに2を入れるとした場合
Aを2に置き換えるという正規表現?というのを使えば
なんとなくできそうな気はするのですが・・・
どこかのサイトでVCに正規表現はないというのを見たので。
となると、他の言語とリンクさせる必要があるのでしょうか。
調べてみたのですがVCでどうやるかがちょっと分からなかったので
質問させていただきました。

VC++6.0を使ってます。よろしくお願いします。

369 名前:デフォルトの名無しさん :03/12/09 20:10
Visual C++ 6.0を使用しています
アドレスを指定して、そのアドレスの領域の値が書き換わったら
プログラムが止まるようにしたいのですが、方法はないでしょうか?
(止まらなくても場所がわかればよい)

よろしくお願いします


370 名前:デフォルトの名無しさん :03/12/09 20:27
>>369
デバッガのブレーク条件を設定して、デバッグ実行する。

371 名前:デフォルトの名無しさん :03/12/09 20:35
>>368
はっきり言うと簡単にはできない。
Perlのeval()でやっては伺か?
CodeGuruにその手のクラスがあったと思うが。

372 名前:デフォルトの名無しさん :03/12/09 20:41
ttp://www.hi-ho.ne.jp/babaq/

373 名前:デフォルトの名無しさん :03/12/09 20:46
ttp://www.shibu.jp/cppunit/tutorial/cppunit_tutorial05.html

374 名前:デフォルトの名無しさん :03/12/09 20:50
(;´ー`)y-~~.。oO(>>372-373 正規表現で置換したあとどうやって左辺値を求めるんだよ…)

っと駄レス。そういや、boost::spiritってのもあるな。

375 名前:デフォルトの名無しさん :03/12/09 22:27
>>368
とりあえず、
http://www.kmonos.net/alang/boost/
を端から端まで読めば目的の方法は見つかると思う。

そういえば、boostのスレって無いよな・・・

376 名前:デフォルトの名無しさん :03/12/10 01:27
すいません、お伺いしたい儀があるのですが、

ループ文の「for」「while」「do while」文は、
具体的にどういう風に使い分ければいいのでしょうか??

377 名前:デフォルトの名無しさん :03/12/10 01:42
>>376
「for」一定の回数ループするときに。(いろいろ使えるけど)
「while」ループ終了評価をループ処理より前にやりたいとき。
「do while」ループ終了評価をループ処理後にやりたいとき。


378 名前:376 :03/12/10 02:09
>>377
すっきりしますたアリガd!(´▽`)
独学でやってるもんで、誰にも聞けないので、
気になって気になって・・・

379 名前:デフォルトの名無しさん :03/12/10 03:14
>>376
蛇足だが
whileとforはほぼ一緒だ。
一つ注意しなければならないのはcontinueだ。

初期化;
while(条件){
if(処理スキップ) continue;
処理;
条件更新;
}
とうかつにやってしまうと条件更新されないぞ。


後、do while は評価するために処理を1回行う必要がある場合に使う。

printf("続行しますか?(y/n)>");
do{
キー入力;
}while(yでもnでも無い間);


whileだとキー入力を2回記述する必要がある。

printf("続行しますか?(y/n)>");
キー入力;
while(yでもnでも無い間){
キー入力;
}


380 名前:いやはや・・・ :03/12/10 03:35
色々とMSDNを探しても見つからないので質問させていただきます。
ツールバーを作った時にアイコンを作っているのですが
使用できる色が16色しか使えないです。
これは仕様なのでしょうか?

256色から選んで、それをパレットとして保存してリソースファイルに
読み込ませることによって色の変更は出来るとMSDNに書いてあったのですが
同時に使用できる色の追加が出来ないのです。

またコンボボックス等に
黒■
白□
のように表示をさせたいのですが
文字は出ても色が同時に表示されないのは
何が必要なのでしょうか? 


381 名前:いやはや・・・ :03/12/10 03:36
380の続きです。
メニューでも同様に表示させるために
void CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
BITMAP bm;
CBitmap bitmap;
bitmap.LoadOEMBitmap(OBM_CHECK);
bitmap.GetObject(sizeof(bm), &bm);

CDC dc;
dc.Attach(lpDrawItemStruct->hDC);

CBrush* pBrush = new CBrush (::GetSysColor((lpDrawItemStruct->itemState &
ODS_SELECTED) ? COLOR_HIGHLIGHT : COLOR_MENU));
dc.FrameRect(&(lpDrawItemStruct->rcItem), pBrush);
delete pBrush;

382 名前:いやはや・・・ :03/12/10 03:37
381の続きです。

if (lpDrawItemStruct->itemState & ODS_CHECKED) {
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = dcMem.SelectObject(&bitmap);

dc.BitBlt(lpDrawItemStruct->rcItem.left + 4, lpDrawItemStruct->rcItem.top +
(((lpDrawItemStruct->rcItem.bottom - lpDrawItemStruct->rcItem.top) -
bm.bmHeight) / 2), bm.bmWidth, bm.bmHeight, &dcMem,
0, 0, SRCCOPY);

dcMem.SelectObject(pOldBitmap);
}

UINT itemID = lpDrawItemStruct->itemID & 0xFFFF; // Fix for Win95/98 bug
pBrush = new CBrush(gColor[itemID - ID_COLOR_BLACK]);
CRect rect = lpDrawItemStruct->rcItem;
rect.DeflateRect(6, 4);
dc.FillRect(rect, pBrush);
delete pBrush;

dc.Detach();

}

としています。
この作りを基本として貼り付けてみたのですがうまくいきません。
VC++.net EEです。
宜しくお願いします。

383 名前:デフォルトの名無しさん :03/12/10 04:53
>>380
ツールバーに関しては、256色のDIBをビットマップリソースに保存しといて
起動後にSetImageListでツールバーに割り当てる。

384 名前:デフォルトの名無しさん :03/12/10 05:52
>>371-375
レスありがとうございます。

boostですか・・・初めて聞きました。
教えていただいたURLを参考にしてちょっと頑張ってみます。

PerlとかRubyとかも検討してみたほうがよさそうですね・・・

みなさんありがとうございますm(__)m

385 名前:デフォルトの名無しさん :03/12/10 23:24
EXEからDLLファイルの変数へアクセスする方法が分からないのでよろしければ教えていただけないでしょうか。
初心者なりにぐぐってみましたがさっぱりわからないので、せめて検索のキーワードだけでも教えていただければありがたいでつ。



386 名前:デフォルトの名無しさん :03/12/11 00:28
>>385
DLL の方で変数をエクスポートしてないと無理
キーワードとしては「init_seg」あたりかな…

387 名前:デフォルトの名無しさん :03/12/11 11:07
コモンダイアログ(バージョン情報のやつ)が
表示される直前にフックして、
コモンダイアログ上に小ウィンドウ(エディットボックス)を
動的に生成しました。
しかし、その小ウィンドウがフォーカスを受け取ると、
コモンダイアログが閉じてしまいます。
これを閉じないようにするには、どうすれば良いでしょうか?

VC++.net、MFCです。

388 名前:デフォルトの名無しさん :03/12/11 11:24
>>387
MFCならこっちちゃう?
http://pc2.2ch.net/test/read.cgi/tech/1062098350/l50

389 名前:385 :03/12/11 20:03
>>386
エクスポートとファイルマッピングを使って何とか解決しますた。
教えていただいてありがとうございますた。

390 名前:デフォルトの名無しさん :03/12/12 03:01
ダイナミックヘルプでCreateWindow()を探すと英語のヘルプが出てくるんですが
これを「プラットフォームSDK」にある日本語ヘルプを出すように出来ないでしょうか?

何せVC++使うのは初めてなものでよく分かりません・・・
フィルタを設定したり、カテゴリの優先順位を変えてみたりしたんですが一向に日本語ヘルプが出てきません。
検索すれば出てくるんですけどね。

環境は VC++.NET 2003 Std です。

391 名前:デフォルトの名無しさん :03/12/12 13:33
VC++.netを使っています。

何がきっかけか分かりませんが、
ビルド実行時にスキップが行われなくなってしまいました。

例えば、「F7」でビルドを終え、すぐさま「Ctrl+F5」で
実行しようとしても、
「このプロジェクトは古い形式で構成されています」
と表示されます。

原因に検討が付く方がいらしたら、アドバイスをお願いします。

392 名前:デフォルトの名無しさん :03/12/12 13:46
>>390
VC++6.0しかもってないけど、VC++6.0では
MSDNでキーワード「CreateWindow」で検索すると
日本語と英語のリファレンスの両方がヒットしますが。

ダイナミックヘルプっつーのはよくわからんが。



393 名前:初心者 :03/12/12 15:42
2つの子ウィンドウがあり、左側の子ウィンドウのアイコンを
右側の子ウィンドウにドラッグ&ドロップで移動できるようにしようとしています。

左側のウィンドウでマウスのLボタンを押した時、ウィンドウハンドルを取得し、
離した時にもう一度ウィンドウハンドルを取得して比べて、ウィンドウ外であるか
判定しようとしています。
ウインドウ外である場合、右側のウィンドウに元のアイコンのコピーをドロップできるよう
実装したいのですがプログラムできません。。
初心者なんですがぜひ教えてください。



394 名前:390 :03/12/12 20:00
>>392
ダイナミックヘルプっていうのはエディタ上のAPI等にカーソルを持っていくと、
VS上のウィンドウにそのAPIのヘルプ項目が表示される機能で、
それをクリックすると目的のヘルプに簡単に移動できるそうです。

まぁ普通にMSDNで検索すれば問題ないのでいいんですが・・・
明日、本屋で漁って来ます。

395 名前:デフォルトの名無しさん :03/12/12 20:14
>>393
説明はしょり杉。

396 名前:391 :03/12/12 20:23
スキップは行われるようになりました。
一度全てのファイルをいじり(実際にはスペースを打つだけ)
それからビルドすると中間ファイルに記録されるみたいで、
以後のビルドにおいてスキップするようになりました。

しかし何度ビルドしても実行時に「古い形式で・・」という
メッセージが出てきてビルドし直す必要があります。

先ほどは何がきっかけかわからないと書いたのですが、
よく考えたら一度中間ファイルを削除したのがきっかけだた
かも知れません・・・。
どうすれば完全に元にもどせるのでしょうか・・。


397 名前:デフォルトの名無しさん :03/12/12 21:24
VC++.net って2003なのか?

398 名前:391 :03/12/12 21:31
2002です。

399 名前:デフォルトの名無しさん :03/12/12 21:31
上のほうでboostを教えていただいたものです。
ちょっと板違いですが質問させてください。

早速DLして設定してみたのですが
http://www.kmonos.net/alang/boost/
にあるサンプルをそのままビルドしてみても
いくつかエラーが出てしまいました。

date_timeのIO機能、regex、thread、python、signals、test、filesystemライブラリは
使う予定はないのでヘッダをインクルードするだけでできるはずなのに
「〜が未解決です」や「〜のメンバではありません」などとエラーが出て実行できません。

数学関数ライブラリの中の「uBLAS」は正常に動くのに
「interval」が動かなかったりと
動くものもあるのですが
使いたいものがうまく動かないので困っています。

設定がうまくできてないというのが原因のような気はするのですが・・・
もしboostを使ってる方がいましたら
何かアドバイスよろしくお願いします。

400 名前:デフォルトの名無しさん :03/12/12 23:02
2002は窓から(tbs

401 名前:デフォルトの名無しさん :03/12/12 23:19
>>399 その説明じゃ足りん。具体的にどれをコンパイルしようとしたのか限定汁。
〜は未解決ですはライブラリ化が必要なやつとしか思えないが。

402 名前:デフォルトの名無しさん :03/12/13 01:24
>>399
ライブラリとヘッダファイルのパスは設定しましたか?

403 名前:399 :03/12/13 02:47
数学関数のintervalをコンパイルしてみた結果、

'sqrt':'std'のメンバではありません。
シンボルを宣言の中で使用できません。

など48個エラーが出ました。
同じ数学関数ライブラリのrationalをコンパイルしてみると
普通に実行できました。

他のものも、できないものがたくさんあるのですが
エラーがそれぞれ違かったので詳しく書きませんでした、すみません。

パスはこの参考にしたページの「インストール方法」を見ながら
インクルードファイルにboostを追加しました。
それ以外に設定する必要があるのでしょうか?

404 名前:デフォルトの名無しさん :03/12/13 06:10
質問があります。

入門したばかりなので、ちょっと根本的なことがわかりません。

Win32プロジェクトで PlaySound を記述したところ、
”未解決の外部シンボル __imp__PlaySoundA@12 が関数 _WndProc@16 で参照されました。”
というエラーメッセージが表示されてしまいコンパイルできないのですが、どうすれば解決す
るでしょうか?

利用しているのは VC++.NET2002 Academic です。

405 名前:404 :03/12/13 06:12
書き忘れました。

プログラムの先頭に #include <windows.h> だけが記述されています。

406 名前:デフォルトの名無しさん :03/12/13 06:20
>>404
ライブラリをリンクする

407 名前:デフォルトの名無しさん :03/12/13 06:34
>>404
プロジェクトのプロパティダイアログの
[構成プロパティ-リンカ-コマンドライン]ページの[追加のオプション]に
Winmm.lib を追加でOK。

PlaySound関数にカーソルを合わせF1を押して起動したヘルプの下の方にある
Library: Use に書かれてあるファイル名を追加すればOK。


Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Declared in Mmsystem.h.
Library: Use Winmm.lib.                  ←――――――――ここね!ここ!
Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000.

あまり使わない関数を利用するからくりは、初めから設定されていないことが多いので、
今後同じような場面に直面したときも、同じやり方で解決できる。

408 名前:デフォルトの名無しさん :03/12/13 16:41
ソースに

#pragma comment(lib, "winmm.lib")

を追加する手もある。

409 名前:その@ :03/12/14 07:48
すみません、教えていただきたいのですが、for文のところで、
#include <iostream>
using namespace std;
int main(){
int ch =0;
for(int a=0;a<5; a++){
for(int b=0; b<5; b++){
if(ch==0){
cout<<'*';
ch = 1;}
else{
cout <<'-';
ch = 0;}}
cout << '\n';}
return 0;}


410 名前:そのA :03/12/14 07:55
と記述すると、 「 *-*-* 」
と出力されますが、どうにも納得いきません・・・。
aが一回実行されるたびに、bが五回(0含め 0、1、2、3、4)
実行されるならば、*(a)-(b)*(b)-(b)*(b)-(b)
と出力されるのでは?と引っかかって、前に進めません・・・。
具体的な処理の進め方と、僕の間違いを修正していただけませんか?
どうかお願いします。

411 名前:409 :03/12/14 07:59
すみません、ちなみに環境は、
visual c++ 6.0, windows 2000pro sp3, です。
よろしくお願いします。

412 名前:デフォルトの名無しさん :03/12/14 08:08
MFCを使わずに開発してる人は、毎回 CreateWindowEx() とかしているのでしょうか?
それとも自家製ウィンドウクラスやらボタンクラスやらを作り置きしているのでしょうか?
DelphiからVC++に移行したばかりの糞野郎は黙ってMFCでもやってりゃいいんでしょうか?

413 名前:デフォルトの名無しさん :03/12/14 08:30
>>410
(a=0) -> { { {*} {-} {*} {-} {*} } \n }
(a=1) -> { { {-} {*} {-} {*} {-} } \n }
(a=2) -> { { {*} {-} {*} {-} {*} } \n }
(a=3) -> { { {-} {*} {-} {*} {-} } \n }
(a=4) -> { { {*} {-} {*} {-} {*} } \n }

ブロック構造というかC言語の勉強でもしろ。

414 名前:409 :03/12/14 08:55
>>413
!!にゃるほど!!
分かりもうした。(*_ _)人 
低レベルな質問でゴメンナサイ ・・・
>>413ありがとう!!

415 名前:デフォルトの名無しさん :03/12/14 09:56
>>412
最初はそれやってたが、
いちいちプロシージャー作るのがめんどくさくなったから、
クラス作ったよ。
まぁそんなもん作るくらいなら最初からMFCやれって感じだけどなw

416 名前:デフォルトの名無しさん :03/12/14 13:19
>>412
ATL使ってます。

417 名前:デフォルトの名無しさん :03/12/14 14:46
VC++6.0 MFCのSDIかなんかで、ダイアログにエディットボックスをくっつけました。

タブオーダでそのエディットボックスが初期選択されるようにしたのですが、
エディットボックスに初期値をいれると、値が選択された状態で表示されます。

ボックス内の文字(値)の有無に関わらず、キーカーソルを値の先頭に持ってくにはどうすればよいのでしょうか?

418 名前:デフォルトの名無しさん :03/12/14 16:09
>>417
SendMessage

419 名前:デフォルトの名無しさん :03/12/14 22:02
VC++ 2003です。
ウィンドウのタイトルバーについての情報を取得するため、
CWnd::GetTitleBarInfo() という関数をMSDNで見つけたのですが、
<windows.h>
<winuser.h>
をincludeしても「GetTitleBarInfo()が定義されていない」という趣旨の
エラーが出ます。まだ他に何か、includeが必要なものがあるのでしょうか?

420 名前:デフォルトの名無しさん :03/12/14 22:47
>>419
じゃあないんだろ。諦めな。

421 名前:デフォルトの名無しさん :03/12/15 02:51
>>419
MFC ライブラリ リファレンス
CWnd クラス

   (省略)

必要条件

  ヘッダー : afxwin.h


422 名前:デフォルトの名無しさん :03/12/15 13:58
ある子ウィンドウで、
子ウィンドウが受け取る
ある特定の通知メッセージを
親ウインドウに飛ばさないようにするには
どうすれば良いでしょうか?

423 名前:デフォルトの名無しさん :03/12/15 18:29
SetCursorPosでマウスカーソルを別のウインドウの上に
持っていくとこまでは出来るのですが、マウスをクリック
したメッセージ(WM_LBUTTONDOWN)を別のウインドウ
に送るにはどうしたらよいでしょうか?

424 名前:デフォルトの名無しさん :03/12/15 22:36
>>423
別のウインドウハンドルに対して
SendMessage で送れませんかね?

425 名前:デフォルトの名無しさん :03/12/15 22:37
>>423
mouse_event

426 名前:デフォルトの名無しさん :03/12/15 22:54
VC++6 MFCベースでダイアログアプリケーションを開発しています。
ダイアログに貼り付けたボタンが表示されているか非表示なのか
プログラムで取得するにはどうすればよいでしょうか?
表示、非表示を条件分岐の判定に使用したいんです。よろしくお願いします。

427 名前:デフォルトの名無しさん :03/12/15 22:57
IsWindowEnabledかな

428 名前:デフォルトの名無しさん :03/12/15 23:01
いやIsWindowVisible()でしょう

429 名前:426 :03/12/15 23:14
>427-428
ありがとう!試してみます。


430 名前:デフォルトの名無しさん :03/12/16 00:43
プログラミング激しく初心者なのですが
まず何を用意すればいいですか?

431 名前:デフォルトの名無しさん :03/12/16 00:55
検索能力

432 名前:デフォルトの名無しさん :03/12/16 03:44
人に聞かずに自分で調べようとする能力

433 名前:デフォルトの名無しさん :03/12/16 04:54


434 名前:デフォルトの名無しさん :03/12/16 08:04
おとなしく店言って何のソフトが必要か聞いてきます

435 名前:デフォルトの名無しさん :03/12/16 10:24
ていうかスレタイ見てね。

436 名前:デフォルトの名無しさん :03/12/16 18:17
CとC++文法はそれなりに理解していて
VC++.NETの使い方を学びたい場合、
林晴比古の「新Visual C++.NET入門 ビギナー編」
で問題ないでしょうか?

それとも他にいい書籍はあるでしょうか?

437 名前:デフォルトの名無しさん :03/12/16 19:27
>>436
一番いい書籍は自分で探すもの!

438 名前:デフォルトの名無しさん :03/12/16 21:13
VC++6.0 持っています。

ここ数年はスクリプト言語しか使っておらず、再度C++挑戦しようと考えています。
(#GUIの小さいアプリはCでゴリゴリ作ったことはありますが、C++はこれからです。)

C++で、C++らしい書き方をするに boost.org のライブラリを使用しようと考えているのですが、
VC++6.0だと古いせいか動作しないものが多いようです。

VC++6.0 + Intel C++8.0追加購入 とVS.NET2003アップグレード どっちがよいのか識者の方アドバイスを
御願い致します。
(#コスト的にはあまり変わらないです。)


439 名前:デフォルトの名無しさん :03/12/16 23:58
VC++から、今開いているプロセス名を取得するにはどのようにしたらよいのでしょうか?

440 名前:デフォルトの名無しさん :03/12/17 01:34
VC++って、コントロール配列ってないんですよね?
どうにかしてコントロール配列に相当するものができないでしょうか?



441 名前:デフォルトの名無しさん :03/12/17 01:53
>>440
コントロール配列がなんたるかを説明してくれw

442 名前:デフォルトの名無しさん :03/12/17 03:05
配列をメンバ変数で定義してDDXに突っ込む。以上

443 名前:デフォルトの名無しさん :03/12/17 05:08
std::vectorとか?

444 名前:デフォルトの名無しさん :03/12/17 07:33
は?CButton b[256];だろ。

445 名前:デフォルトの名無しさん :03/12/17 10:18
VC++の超初心者です。
プロジェクト名の途中変更というのはどのようにすればいいのでしょうか?
WEBで調べていたらVC++はVer6からプロジェクト名の変更が簡単という記述を
見つけました。
ただ、やり方までは書いてありませんでした。

もしどなたかわかる方がいらっしゃったらよろしくお願いします。

446 名前:デフォルトの名無しさん :03/12/18 14:57
>>445
UIからは変更できないはず。

.ncb とか .opt とか消して、.dsp と .dsw の該当個所を置換、でいけると
思うが、それが簡単かどうかは...

447 名前:デフォルトの名無しさん :03/12/18 22:17
VC++.NETを使い始めたものです。書籍に
明示的に型変換をすることで不要な変換を避けることができる
という記述があったので、コンパイルしたときのコード量に違いが出るのかな?と考え

#include <stdio.h>
main()
{
// 1
double dval1 = 1.1;
int ival1 = 1;
ival1 += dval1;

// 2
double dval2 = 2.2;
int ival2 = 2;
ival2 += static_cast<int>(dval2);
}

このようなコードを書いてコンパイルされたときの1と2の違いをアセンブリで確認したいのですが
やりかた(VC++.NETでアセンブリコードを見る方法)がわかりません。
もしよければ教えてください。

448 名前:デフォルトの名無しさん :03/12/19 01:24
>>447
プロジェクトのプロパティの
C/C++の出力ファイルのアセンプリの出力

449 名前:デフォルトの名無しさん :03/12/19 02:41
>>447
で?それが分かったとしてなんになるんだ?

450 名前:デフォルトの名無しさん :03/12/19 03:04
「プログラミングMicrosoft Visual C++ 6.0マイクロソフト公式解説書」
っていう本に、スモールブロックヒープよりも大きい領域を確保した場合は、
_heapminを呼び出しなさいって書いてあるんですが、これって最近のWin2000
とかXPで開発してる場合も当てはまるんでしょうか? deleteの後に_heapminって
いちいち書くのかな。



451 名前:デフォルトの名無しさん :03/12/19 04:10
>>448
出力フォルダにhoge.asmというのができました。
ありがd。
せっかくのIDEなんだからデバッグ実行中にでも表示してくれたらいいのに。

>>449
1より2のほうが不要なプロモートを避けることができるから
コード量(正しい日本語なのかな..)が少なくなるのなら
for等で大量に代入するときとかに速くなるかなと思ったのですが

コード量増えてるじゃん_| ̄|○ >>452
「明示的に型変換をすることで不要なプロモートを避けることができる」
ってどういう意味なのでしょう_| ̄|○

452 名前:デフォルトの名無しさん :03/12/19 04:10
; Line 5 double dval1 = 1.1;
fldQWORD PTR __real@3ff199999999999a
fstpQWORD PTR _dval1$[ebp]
; Line 6 int ival1 = 1;
movDWORD PTR _ival1$[ebp], 1
; Line 7 ival1 += dval1;
fildDWORD PTR _ival1$[ebp]
faddQWORD PTR _dval1$[ebp]
call__ftol2
movDWORD PTR _ival1$[ebp], eax
; Line 9 double dval2 = 2.2;
fldQWORD PTR __real@400199999999999a
fstpQWORD PTR _dval2$[ebp]
; Line 10 int ival2 = 2;
movDWORD PTR _ival2$[ebp], 2
; Line 11 ival2 += static_cast<int>(dval2);
fldQWORD PTR _dval2$[ebp]
call__ftol2
movecx, DWORD PTR _ival2$[ebp]
addecx, eax
movDWORD PTR _ival2$[ebp], ecx

453 名前:デフォルトの名無しさん :03/12/19 04:14
見にくかった&連貼りスマソ_| ̄|○

; Line 5 double dval1 = 1.1;
fld QWORD PTR __real@3ff199999999999a
fstp QWORD PTR _dval1$[ebp]

; Line 6 int ival1 = 1;
mov DWORD PTR _ival1$[ebp], 1

; Line 7 ival1 += dval1;
fild DWORD PTR _ival1$[ebp]
fadd QWORD PTR _dval1$[ebp]
call __ftol2
mov DWORD PTR _ival1$[ebp], eax

; Line 9 double dval2 = 2.2;
fld QWORD PTR __real@400199999999999a
fstp QWORD PTR _dval2$[ebp]

; Line 10 int ival2 = 2;
mov DWORD PTR _ival2$[ebp], 2

; Line 11 ival2 += static_cast<int>(dval2);
fld QWORD PTR _dval2$[ebp]
call __ftol2
mov ecx, DWORD PTR _ival2$[ebp]
add ecx, eax
mov DWORD PTR _ival2$[ebp], ecx

454 名前:デフォルトの名無しさん :03/12/19 08:56
>>451
混合モードでデバッグしろよ

そこまでやるなら、CPU命令が何クロックかかるか調べて結論だせ

たとえばvoid Hoge(int)とvoid Hoge(CInt)があって、Hoge(4)とcall
するときに、Hoge(CInt)が呼ばれないようにする

455 名前:デフォルトの名無しさん :03/12/19 10:11
>>451
> コード量増えてるじゃん_| ̄|○ >>452

コード量が多い=非効率 じゃないよ。

> 「明示的に型変換をすることで不要なプロモートを避けることができる」
> ってどういう意味なのでしょう_| ̄|○

この場合、

前者:doubleに変換->doubleで計算->intに変換
後者:intに変換->intで計算

文字通りの意味だろ。


456 名前:デフォルトの名無しさん :03/12/19 17:09
VC6の質問です。
現在のスレッドのスタックサイズとスタック消費量を
取得するにはどう書いたらいいのでしょうか?

TIB(Thread Information Block)とESPを使って
計算するのではないかと思うのですがそれから先がわかりません…。
ご存知の方、どうかよろしくお願いいたします。

457 名前:デフォルトの名無しさん :03/12/19 23:55
>>446
ありがとうございました。

458 名前:デフォルトの名無しさん :03/12/20 01:48
>>451
Release版のような最適化されたアセンブラ出力見てる?
Debug版は最適化しないからかなり無駄なコード吐くよ。


459 名前:デフォルトの名無しさん :03/12/20 01:53
WM_NCHITTESTでウィンドウの移動、サイズの変更を行っているウィンドウで
TrackMouseEvent()を使っても正常に動作せず、
マウスカーソルがウィンドウ領域に入るとWM_MOUSELEAVEが垂れ流しになります。
WM_NCHITTESTと共存させる方法、
または他にカーソルがウィンドウ外に出て行ったことが分かる方法はないでしょうか?

460 名前:459 :03/12/20 03:30
やってる事が相反していた事が分かりました。
タイマーで処理する事にしました。

461 名前:デフォルトの名無しさん :03/12/20 13:35
スタティックウインドに文字とかを描写していて、
たまに外にはみ出してしまうのがみっともないのですが
どうにかしてうまく処理する方法ありませんですか?

462 名前:デフォルトの名無しさん :03/12/20 14:05
>>461
GetTextExtent()で計算するとか
DrawText()でDT_EXPANDTABSつけるとか


463 名前:デフォルトの名無しさん :03/12/20 16:25
winmainから始まらないVC++のプログラムってあるんですか?

464 名前:デフォルトの名無しさん :03/12/20 17:31
>>463
VC++がwinmain()から始まってるかどうかソースを見たことないんで知らんが、
VC++でwinmain()のないプログラムを作ることは(当然)できる。

465 名前:デフォルトの名無しさん :03/12/20 19:44
>>464
どうも。
落ちてたプログラムを調べようと思ったんだけどmainが見つからないから
聞いてみました。ちなみに↓がソースです。
ttp://www.codeguru.com/dialog/browse_shell_namespace_proj.zip

466 名前:デフォルトの名無しさん :03/12/20 20:53
>>464
てかwinmainじゃなくてWinMainだがな。

467 名前:デフォルトの名無しさん :03/12/20 20:57
>>465
MFCじゃん・・・・

468 名前:デフォルトの名無しさん :03/12/20 22:23
gcc+linuxで作っていたプログラムをVC++6.0でコンパイルしようと思っているのですが、
例えば、

for( int i; i < 10; i++){
 …
}
for( int i; i < 20; i++){
 …
}

とすると、int iが多重定義されてる旨エラーが出ます。
これを回避する簡単な方法は無いでしょうか?

469 名前:デフォルトの名無しさん :03/12/20 22:25
>>468
VC6 の有名なバグですね

{
    for( int i; i < 10; i++){
     …
    }
}
{
    for( int i; i < 20; i++){
     …
    }
}

とするしか…。


470 名前:デフォルトの名無しさん :03/12/20 22:26
#define for if(false); else for

471 名前:470 :03/12/20 22:28
VC6のfor対策で結構有名な技法ね。
これで>>469と同じことになる。

472 名前:デフォルトの名無しさん :03/12/20 22:35
>>469-471さん
即答有難うございました。
これであたたかい正月が迎えられます。m(_ _)m


473 名前:デフォルトの名無しさん :03/12/20 22:45
つーか
最悪なバグだ

474 名前:デフォルトの名無しさん :03/12/20 23:19
バグっつうか仕様だな。
まぁfor文に定義式入れるなっつう事だ!

475 名前:デフォルトの名無しさん :03/12/20 23:57
初心者だったのですが、掴み所が分からなかったC言語も「著作:高橋麻奈」の本でようやく理解できるようになりました。これ読んでC言語に入れないならまずは日本語を幼稚園から教育してもらうしかないですね。今から始める人には是非オススメしたい本です

476 名前:デフォルトの名無しさん :03/12/21 00:01
なんつーかスレ違い。

477 名前:デフォルトの名無しさん :03/12/21 00:08
C言語を始めたくても始めれない初心者もこのスレにいると思ったので紹介しておきました。そしたら超基本的な質問はしてこないかと思い…

478 名前:デフォルトの名無しさん :03/12/21 00:16
>>473
つーか、ANSIの規格が途中で変わったから悪いんだけどね。

479 名前:463 :03/12/21 01:28
>>467
スレ違いのようですね。すいません。


480 名前:デフォルトの名無しさん :03/12/21 01:42
こんばんわ。
UNIXでいう "profile" を VisualC++ でやりたいんですが、
どうやればいいでしょうか?

481 名前:デフォルトの名無しさん :03/12/21 02:23
ヘルプ嫁

ただしプロとかエンタープライズとかだったがな

482 名前:デフォルトの名無しさん :03/12/21 02:44
ちょっと調べ方変えたらあっさり見つかりました。
ありがとうございました。

483 名前:デフォルトの名無しさん :03/12/21 03:53
ちょっと、おしえてもらいたいんですが、cでいう関数は、
vc++では、メンバ関数というものになるのですか?


484 名前:デフォルトの名無しさん :03/12/21 08:49
質問です。
3DCGやってる者ですが、エラーが出ました。

Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C:\Program Files\AliasWavefront\Maya5.0\bin\maya.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

重いレンダリングをかけたら出たのですが、これってどうにもならないですよねぇ・・・。
月曜日に代理店に電話して確認しますが、今日日曜だし・・・時間が惜しい(泣)

もし、現状PCで出来る対策があったら教えて下さい。お願いします。


485 名前:デフォルトの名無しさん :03/12/21 09:23
>>479
なんか勘違いしてるなこの馬鹿は。

486 名前:デフォルトの名無しさん :03/12/21 10:04
>>484
CG板のAilias/Mayaスレ逝け

487 名前:名無し@沢村 :03/12/21 12:55
>>483
なりません。

488 名前:デフォルトの名無しさん :03/12/21 13:39
>>483
クラスを勉強して出直して来い!

489 名前:デフォルトの名無しさん :03/12/21 16:40
クラスの新規作成でCDC派生クラスはできませんか?

490 名前:デフォルトの名無しさん :03/12/21 17:15
手動で派生クラスを作るしかない模様

491 名前:デフォルトの名無しさん :03/12/21 18:16
手こきオンリーですか。分かりました。

492 名前:デフォルトの名無しさん :03/12/22 01:29
標準出力をVisual Studio上で見るにはどうすればいいんでしょうか?
printfなどでテキスト出力して、それを見たいんですが。

493 名前:デフォルトの名無しさん :03/12/22 02:25
>>492
標準出力ではないが、TRACE()を使うとデバッガで見れるよ。

494 名前:デフォルトの名無しさん :03/12/22 02:36
DOSプロンプトでDebug/YourTargetProcess.exe > foo.txtとでも実行して
foo.txtを開けばいいんでない?
或いはプロジェクトの設定でも同様のことができるし。

495 名前:デフォルトの名無しさん :03/12/23 02:02
>Setargv.obj ファイルをリンクすることによってワイルドカードを処理します
コマンドライン引数のワイルドカード対応って、これだけで良いんだ。ヤター

と思いきや

>引数をダブル クォーテーション (" ") で囲むと、ワイルドカードが展開されません。
この仕様(?)って、どうなん?

ahya.exe "c:\(・∀・)イイ!!\video\*.mpg"

なんて受け取ったら、結局自分で展開するしかないのですか?

496 名前:デフォルトの名無しさん :03/12/23 10:43
何の話だ

497 名前:デフォルトの名無しさん :03/12/24 02:48
>>495
ahya.exe "c:\(・∀・)イイ!!\video\"*.mpg

498 名前:デフォルトの名無しさん :03/12/24 16:40
モードレスダイアログがアクティブになった状態を受けるにはどうしたらよいのでしょうか?


499 名前:デフォルトの名無しさん :03/12/24 17:31
解説サイトを見ると作業フォルダようにc:\workというフォルダを作って
そこにファイルを作ってgccすると書いてあって、そのとおりやってもできないんですが、
どうすればいいのでしょうか?

500 名前:デフォルトの名無しさん :03/12/24 18:14
まず質問するスレを変える。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.