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


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

VisualC++相談室 6
251 名前:デフォルトの名無しさん :02/02/07 20:53
ShellExecuteプログラムを相手のPCで起こせばいい事は分かってるんですが…。
どうしてこんなに難しいんだー!!!

252 名前:デフォルトの名無しさん :02/02/07 20:58
>>245
ペイン
ストリングテーブル

253 名前:デフォルトの名無しさん :02/02/07 21:06
>>249
もしそれが可能だったら、ちょっと手を加えるだけで、

 俺が 246 のメールソフトをリモートから立ち上げて、ウィルスメールをばら撒く

とかできると思わんか?

254 名前:デフォルトの名無しさん :02/02/07 21:07
>250
ゴグれ

255 名前:デフォルトの名無しさん :02/02/07 21:07
>250
コクれ

256 名前:デフォルトの名無しさん :02/02/07 21:09
>246
こっちが何かコマンドを相手に向かって撃ったらその内容に応じてExcuteだっけ?で相手側でたちあげりゃいいんでねーの?

257 名前:デフォルトの名無しさん :02/02/07 21:22
みなさん、すいません。先ほどやっとPCに詳しい人と連絡が取れたのですが、
無理だということが分かりました。
(相手のPCに特別なアプリを立ち上げておけばいいらしいですが、
今回の案件ではそれは無理なので…)
253さん、256さん、せっかくレスを頂いたのに申し訳ありません。

258 名前:デフォルトの名無しさん :02/02/07 21:25
>>245
フォーカスとかいうからWM_SETFOCUSって答えそうになったぞ。
WM_MENUSELECTな。MenuHelp 関数とかも見ておくと小吉。


259 名前:デフォルトの名無しさん :02/02/07 21:30
>257
お前・・・いや、やっぱやめとこう・・・

260 名前:245 :02/02/07 21:46
>>258
ありがとうございます。
どう表現したらいいか分からなかったので(;´∀`)
一番フォーカスがしっくりくるような気がしたものですから・・・
とにかくありがとうございました。
早速やってみます〜

261 名前:デフォルトの名無しさん :02/02/07 22:27
>>244
Yes。だまされたと思ってやってみてくれ。
うまくできたら漏れも使わせてもらうから(w

262 名前:デフォルトの名無しさん :02/02/08 03:06
WinXP上でメモリリークが無いかタスクマネージャ睨んでたら
禿しくりリークしてる様で、newで確保した領域を解放しても
使用メモリが減らず、再確保すると更に増加します。

いくら見直しても穴が見つからず、なんとなく同じプログラムを
そのままWin98で実行してみた所、確保−解放できっちり元に
戻りました。  この様な症状はNTの仕様なのでしょうか?

263 名前:デフォルトの名無しさん :02/02/09 04:38
自分でallocatorを定義しなさい。
いちいち空きメモリをOSに返すやつを。


264 名前:262 :02/02/09 04:46
ではNTの仕様と言う事なんですね…

265 名前:デフォルトの名無しさん :02/02/09 04:57
NTじゃない。
VCの標準のallocatorの仕様だ。


266 名前:262 :02/02/09 04:59
あら…しかしWin98上では即解放されてる様なのですが。

267 名前:デフォルトの名無しさん :02/02/09 05:16
>262 パフォーマンスモニタとはお友達?

268 名前:262 :02/02/09 05:19
いや…エクスプローラ拡張メニューのメモリ情報ですw

Win98上では解放すると、きっちり元のサイズに戻るんですが、
XPでは何故か、逆に増えたりする事もあります(;´Д`)

269 名前:デフォルトの名無しさん :02/02/09 08:30
そりゃ、お前がデブだからだ。

270 名前:デフォルトの名無しさん :02/02/09 11:32
じゃ、262はデブってことでこの話は
     ∧∧  ミ _ ドスッ
     (   ,,)┌─┴┴─┐
    /'   つ 糸冬 了 │
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ _ε3
               ゛゛'゛'゛


271 名前:262 :02/02/09 13:21
すまん、正直ガリぎみ。

272 名前:デフォルトの名無しさん :02/02/09 13:35
アカデミックバジョンってなんですか
異常に安いんですけど・・・・
中身はやっぱり違うんですか?通常版と

273 名前:デフォルトの名無しさん :02/02/09 13:37
アカデミックいいよねぇ。
びんぼ学生でもエンタープライズ買えるし。

274 名前:デフォルトの名無しさん :02/02/09 14:44
>272
たまーにポインタの指す位置がかわることがある。

275 名前:デフォルトの名無しさん :02/02/09 14:49
>274
ヲイ

276 名前:272 :02/02/09 19:00
アカデミックバジョンってなんですか
異常に安いんですけど・・・・
中身はやっぱり違うんですか?通常版と
だれか、マジでおしえてください

277 名前:デフォルトの名無しさん :02/02/09 19:09
ちがわねえよ
学生ならそっち買え

278 名前:デフォルトの名無しさん :02/02/09 19:16
>>272
アカデミックでない用途に使うと警告ダイアログが出る。

279 名前:デフォルトの名無しさん :02/02/09 19:22
VC++特有ってわけじゃない(と思う)けど、
DOSプログラムよりWinプログラムのほうが実行速度が速いのはなぜ?
単純な計算のループなんだけどさ。

280 名前:デフォルトの名無しさん :02/02/09 19:26
先生!どうやって判定するんですか?

281 名前:デフォルトの名無しさん :02/02/09 19:35
>279
OSのパフォーマンスが違うから

282 名前:デフォルトの名無しさん :02/02/09 19:37
>>281
スマソ。
Win上のコンソールプログラムとそうでないプログラム

283 名前:デフォルトの名無しさん :02/02/09 19:39
VC++.NETもやっぱりProfessionalとstandardに別れるのかな?

284 名前:デフォルトの名無しさん :02/02/09 19:41
>>283
.net スレで、商品構成と値段が出てたような気がする。

285 名前:デフォルトの名無しさん :02/02/09 20:02
ところでVC6.0のsetup.exeが起動しないのはどうして?

286 名前:デフォルトの名無しさん :02/02/09 20:09
>285
割れだから

287 名前:デフォルトの名無しさん :02/02/09 20:10
>>285
詳細に関してはマイクロソフト社技術情報
「J053653 [NT]J052309 の修正適用後 Office2000
のセットアップができない」をご参照ください。

288 名前:デフォルトの名無しさん :02/02/09 22:37
とあるツールをSPY++で解析しているのですが,
右クリックのポップアップメニューで,
メニューを選択してもWM_COMMANDとかが飛んでいません。
そもそも,trackpopupmenu()を使っていなさそうなのですが。
WM_COMMANDを送信しないようなメニューの作り方,
またはその場合どうやって項目を選択した事を
ウィンドウプロシージャに伝えるのか,知っている人はいますか?


289 名前:デフォルトの名無しさん :02/02/09 22:42
>288
フックしてメッセージを削除

290 名前:デフォルトの名無しさん :02/02/09 22:50
ちょっくら気になったのですが、
GDIでパレットアニメーションはどうすればできるのでしょうか?
またwindowsの画面モードが256色以外でもできるのでしょうか。

291 名前:デフォルトの名無しさん :02/02/09 22:52
AnimatePalette()
できません。

292 名前:デフォルトの名無しさん :02/02/09 22:54
>>289
フックしてメッセージを削除する事には,どういった意味があるんでしょう?
それと,試しにそのウィンドウに,
メニューの項目のIDと共にWM_COMMANDを送信してみましたが,
反応はありませんでした。
ぼくは何か考えちがいをしていますか?


293 名前:デフォルトの名無しさん :02/02/09 22:58
>>288
自前でWM_LBUTTONDOWNとか見て処理してるんじゃないのか?

294 名前:290 :02/02/09 23:07
> 291
ありがとうございます。
やはり256以外ではできないんですね。

295 名前:login:Penguin :02/02/10 00:27
16の8じょうを Ansi Cを使って計算しようとすると
どうかけばいいですか?

296 名前:デフォルトの名無しさん :02/02/10 00:29
0

297 名前:デフォルトの名無しさん :02/02/10 00:31
>295
16*16*16*16*16*16*16*16

298 名前:デフォルトの名無しさん :02/02/10 00:32
Linux板とのマルチポストなんだな、きっと…

299 名前:デフォルトの名無しさん :02/02/10 00:35
(define (power n x) (if (zero? x) 1 (* n (power n (- x 1)))))
(power 16 8)
4294967296

300 名前:295 :02/02/10 00:42
16のn 乗 を計算せさせるには?

301 名前:デフォルトの名無しさん :02/02/10 00:47
>>300
ヘルプでもWebでも検索しろよ。
こうだよ。

pow(16, n);

302 名前:デフォルトの名無しさん :02/02/10 00:47
スレ違いな書き込みに、あまり餌をやるのはどうかと…

303 名前:デフォルトの名無しさん :02/02/10 01:21
(power 16 32)
340282366920938463463374607431768211456

304 名前:デフォルトの名無しさん :02/02/10 01:23
(power 16 128)
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096

305 名前:デフォルトの名無しさん :02/02/10 03:45
はやい!

306 名前:デフォルトの名無しさん :02/02/10 06:44
VC6でプロファイルを取るため、
ttp://www.bd.wakwak.com/~opapa/VC/Operation/Profile.htm
を参考にVC6のバグを回避してプロファイルを行う設定にしました。
しかし、「ビルド」メニューの「プロファイル」が灰色になっているので
プロファイルが取れませんでした。
環境はWin2k+VC6 Enterprise SP5です。
原因がわかる方は教えて下さい。お願いします。

307 名前:デフォルトの名無しさん :02/02/10 13:50
ftime.batとかあるからソレ使え。
MSDNにやり方載ってる。


308 名前:デフォルトの名無しさん :02/02/10 20:40
VCで「デバッグの中止」ボタンを押して、プログラム中断すると、動的確保した
メモリやら、開いていたハンドルってどうなるの?

309 名前:デフォルトの名無しさん :02/02/10 20:43
解放されるんちゃうかー

310 名前:デフォルトの名無しさん :02/02/10 20:45
>>308
メモリは開放される。
他のリソースもプロセスが終了するときに自動的に開放されるってのが多い。
でも、全部が開放されるかどうかは分からない。

311 名前:直リン普及委員会 :02/02/10 20:46
>>306
今度から直リンでおねがいします。

312 名前:デフォルトの名無しさん :02/02/10 20:48
>>310
少なくともファイルは残るな。ハンドルは開放されるけど、ファイルそのものは
消えない。

共有メモリとか名前つき mutex も残るんじゃない。

313 名前:デフォルトの名無しさん :02/02/10 20:57
>共有メモリとか名前つき mutex も残るんじゃない。
残らないって。

314 名前:デフォルトの名無しさん :02/02/10 21:06
>>313
GlobalAllocしたのも消滅するの?

315 名前:デフォルトの名無しさん :02/02/10 21:09
>312
ファイルハンドル閉じてもファイル自体は残るのが普通だと思いますが。

316 名前:308 :02/02/10 21:11
他のプロセスが確保したメモリって開放できるんですか?
特権とかの関係ですかね?

また、newで例えば 10MB確保して、開放せずにプログラムを終了しても
パフォーマンスモニタなんかを見てると、きちんと 10MB増減するんですが、
メモリリークとはどのような場合を指すのですか?

317 名前:デフォルトの名無しさん :02/02/10 21:16
>>314
開放される。
Win32だとGlobalAllocもLocalAllocも同じ。


318 名前:316 :02/02/10 21:23
newは、中では HeapAllocですよね?
VirtulaAllocは開放されるみたいです。

319 名前:デフォルトの名無しさん :02/02/10 21:23
>>316
メモリリークはプログラム実行中の話。
終了すれば開放される。

320 名前:316 :02/02/10 21:37
>319
はぁ、そういうことですか。
プログラムが終了しても開放されないメモリのことだと思ってた...

321 名前:デフォルトの名無しさん :02/02/10 21:42
>>315
もちろん普通だけど(それがファイルの存在意義だし)、

 正常な手順を踏んで終了した場合には残らないが、強制終了させると残る
 リソース

ということで挙げてみたり。

>>313
Win32 だと共有メモリは残らんのか。昔 UNIX System V で開発してたときに
共有メモリが残ってしまって(正常終了時には、終了処理で消すようにしてた)

 ダサすぎ

と思ったことがあるんで。

322 名前:デフォルトの名無しさん :02/02/10 21:47
>>317
そうなんだ。
ってことはHGLOBALは生成したプロセス終了時に無効になるってことか。
ありがとう、参考になった。


323 名前:デフォルトの名無しさん :02/02/11 01:30
すみませんが、教えて下さい。
CDialogをChangeDisplaySettingsを用いてフルスクリーン表示させるのですが、
このとき、縁(ダイアログ枠?)の部分が残ってしまいます。
スタイルを変更しようと思って以下のような処理をしたところ、
ModifyStyle ( WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX| WS_POPUP |WS_DLGFRAME, 0 , SWP_FRAMECHANGED) ;
ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);
上記のModifyStyleExで0が返ってきてしまうのですが、
なぜでしょうか?
ModifyStyleではスタイルの除去が出来たのですが・・・。

324 名前:デフォルトの名無しさん :02/02/11 02:20
>>ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);
MSDN見たけどSWP_FRAMECHANGEDのことかかれてないなぁ・・・

俺もフルスクリーンとウィンドウを切り替えるモジュール作ってあるけど
ModifyStyle(Ex)は使ってないな
ウィンドウのスタイル変更は『SetWindowLong』『SetWindowPos』使ってやってるけど


325 名前:デフォルトの名無しさん :02/02/11 08:29
Winsockを使う以外でファイルをネットワークからダウンロードすることは出来ますか?

326 名前:デフォルトの名無しさん :02/02/11 10:53
ワークスペースの中のプロジェクトが多くなってきて管理しづらくなってきたんですが、
プロジェクトをフォルダの階層構造みたいにすることはできますか?


327 名前:デフォルトの名無しさん :02/02/12 03:29
>>325
ネットワークドライブからコピー(w
\\hogehoge\dir\file

一応ネットワークからダウンロードだろ。

328 名前:デフォルトの名無しさん :02/02/12 10:50
>326
プロジェクトの中はフォルダ分けできるけど、プロジェクト自体の階層化は無理っぽい。
EXEとDLLといった関係だったら、「ブロジェクトの依存関係」で少しは見通しがよくなるけどね。

329 名前:326 :02/02/12 11:40
>>328
やっぱ無理ですか…。まあ、出来る範囲で見通し良くして頑張ります。


330 名前:デフォルトの名無しさん :02/02/12 18:00
プログラムの生産性を高めようと思い今年の夏くらいからライブラリ化を行うようにしました。
それぞれのプログラムで共通の部分を探してライブラリにまとめたら
ライブラリが5MBくらい(ソースファイルのサイズ)になってしまいました。
ライブラリが巨大過ぎてどこに何があるのか把握し切れません。
プログラムごとにコードを書いて再利用できると思う部分はコピー&ペーストで貼りつけていた頃のほうが生産性が高いくらいでした。
これは慣れてないからでしょうか?
それともライブラリなんて自分で作るもんではないのでしょうか?
ちなみにライブラリ内の各関数は複数のプログラムで使われることは殆どありません。
それどころが無いと思ってライブラリに追加した関数と同じ機能の関数が既に存在していて後でムカついたりと
嫌なことだらけです。
正直辞めたいです。
でも半年かけて作ったものを捨てるのは非常に悲しいです。
どうしましょう?


331 名前:デフォルトの名無しさん :02/02/12 18:10
>>330
人生は出会いと別れの繰り返しさ。
時には悲しい別れと向き合わなければならない。

332 名前:デフォルトの名無しさん :02/02/12 18:12
>330
そりゃ、お前、何も考えてないからだろ。ていうか、何をライブラリにしたんだ?
俺はもっぱらDirectXにしかつかわないが・・・
それぞれの関数を分野に分けて複数のlib作ればいいだろ。

333 名前:323 :02/02/13 01:42
>324
レス、ありがとです。
仕方ないんで、Viewのクライアントレクトをとって、
伸縮してフレームを消しましたです。


334 名前:デフォルトの名無しさん :02/02/13 02:20
>>333
おいおい、マジですか・・・(w
それって非常にマズーよ

335 名前:デフォルトの名無しさん :02/02/14 20:09
DLLのデバッグにおいて、ブレイクポイントやステップ実行は可能なのでしょうか?

現在呼び出し側のプロジェクトに、DLLのプロジェクトを加えています。
キーボードフックのためのDLLなのですが、WM_KEYDOWN等が来ている
(動作はしているので)のに、ブレイクしてくれないので、勘で試している様な体たらくです。

336 名前:デフォルトの名無しさん :02/02/14 20:51
>335
普通にデバッグできるけどナー。
ありがちなのは、実行ファイルがデバッグ対象とは違うDLL
(たとえばリリース版の方とか)をロードして動いているというケース。
まず双方の出力ディレクトリを確認してみては。

337 名前:デフォルトの名無しさん :02/02/14 20:58
デバッグ情報をあらかじめ読み込んでおく設定ができていないという罠

338 名前:デフォルトの名無しさん :02/02/14 21:38
IEとかMSWordとかで、ツールバーがメニューを全て表示できない場合、
">>"ボタンになって、クリックすると隠れているメニューが表示されますが、
あれって、自力で実装するしかないのでしょうか?
MFCで用意はされていないのでしょうか?

339 名前:335 :02/02/14 21:53
>>336
DLL側ののDebugフォルダにある、作成されてたdllを
呼び出し側のDebugフォルダへ、実行の度に一々コピーしてました。
>>337
そういう設定した記憶が全くなかったりします(T-T

なんか根本からダメダメ事がよく分かりました。頂いたヒントを元に
MSDNと旅に出てきます。レスありがとうございました。

340 名前: :02/02/15 01:00
>339
最近のVCって実行パスをプロジェクトフォルダ(DebugやReleaseの1つ上)に設定してなかった?
だからDebugの中にコピーしてもダメな気がするんだけど・・・。

341 名前: :02/02/15 01:01
っていうかそもそもDLLプロジェクトのデバッグ設定がダメダメなのか。

342 名前:335 :02/02/15 02:01
>340,341
それがむしろ、プロジェクトフォルダにDLLおくと、実行すらされないんですよ。

それにしても、下URLを参考に、もう4時間ばかり試行錯誤してるのですが、未だ駄目で‥。
http://www.microsoft.com/japan/developer/library/vccore/_core_methods_for_debugging_dlls.htm

dll内の、他のEXPORT関数は、普通にデバッグできるのですが、
メッセージフックのコールバックプロシージャ関数だけは無理なんです。
誰か、そういうものだと言って楽にして下さい‥。

343 名前:デフォルトの名無しさん :02/02/15 11:39
今までWin32でコードを書いてきました。
しかし開発効率はMFCの方が良いと聞きます。
そこで、MFCを勉強しようと思うのですが良い
MFCの書籍を紹介していただけないでしょうか?
お願いします。

344 名前:デフォルトの名無しさん :02/02/15 11:47
MFCだってWin32ですが。

345 名前:デフォルトの名無しさん :02/02/15 12:03
>>344
343です。
申し訳ないです。
訂正します。
Win32→APIです。

346 名前:デフォルトの名無しさん :02/02/15 13:17
>>345
MFCだってAPIつかってますが。

・・・ま、そんなことはどうでもいいんだけどね。
俺は一応

プログラミング学習シリーズ
VisualC++B
はじめてのMFCプログラミング
ISBN4-88135-823-5
山本信雄 著
SHOEISHA 発行

だったが、今から考えるとなんでもよかった気もする。

347 名前:デフォルトの名無しさん :02/02/15 13:27
343です。
>>346
>>MFCだってAPIつかってますが。
まだまだ無知なのでご指摘感謝します。
また、丁寧な返答もありがたいです。
早速参考にさせていただきます。

348 名前:デフォルトの名無しさん :02/02/15 17:24
STLのsetを使用すると大量の警告が出てしまいます。
これは何故ですか?
また回避する方法はありますか?

349 名前:デフォルトの名無しさん :02/02/15 17:25
>>348
FAQ

350 名前:デフォルトの名無しさん :02/02/15 17:35
>>348
ファッキュー

351 名前:デフォルトの名無しさん :02/02/15 22:21
何の警告かも書かないあほには方法すらない


352 名前:デフォルトの名無しさん :02/02/15 23:43
コマンドラインから情報もってくるのってどうやるの?

たとえばファイル名を指定して実行。

プログラム名 パラメタ1 パラメタ2

↑パラメタ1とパラメタ2を利用したいんですが、、、

353 名前:デフォルトの名無しさん :02/02/15 23:54
>>352
WinMain の第三引数、もしくは main の第一/第二引数

354 名前:デフォルトの名無しさん :02/02/16 07:32
>>353
うわーい
ありがたう

355 名前:大助 :02/02/16 10:52
特定の時刻になったら何かするっていうのはどう実装すれば良いでしょうか?
一定時間経ったら何かするってのは、SetTimer()を使えば良いのですが
私のやりたいのは、定期的にある処理をしていて、ある時刻(例:5時10分)に
なったら別の処理を行うというものです。
内部的に目覚ましみたいなものを作成したいのですが、どのように
作れば良いでしょうか?
よろしくお願いします。

356 名前:デフォルトの名無しさん :02/02/16 11:22
質問なんですが、コンパイルエラーで、クラスが定義されていない、
識別エラーとでてしまいます。
前方宣言、includeミス以外で何が考えられるんですか?

357 名前:デフォルトの名無しさん :02/02/16 11:33
スペルミス。

358 名前:デフォルトの名無しさん :02/02/16 11:34
>>355
3.WM_TIMERで定期的に現在時刻を調べる。


359 名前:( _ 。。) _ バタ。 ◆lUd9keO2 :02/02/16 12:15
>>355
イベントループを使わず、peekmessageを割り込ませた
メインループを作り毎回時間を取得する。

…精密でなくていいなら >>358 の方がおすすめ。 1分か…30秒に1回かな。>チェック

360 名前:デフォルトの名無しさん :02/02/16 12:38
>358 1と2が何だったのか気になる……

361 名前:デフォルトの名無しさん :02/02/16 16:17
>>355
(目的の時刻 - 現在の時刻)の分だけ Sleep() するなり、
SetTimer() でこの値を使うなり、
SetWaitableTimer() (およびそれに付随する奴)で目的の時刻をセットするなりすれ。

362 名前:大助 :02/02/16 22:08
ありがとうございました。
SetWaitableTimer() を使って実装してみることにしました。
サンプルを作っているのですが、ビルドできません。
MSDNによるとSetWaitableTimer()は
ヘッダー:winbase.h 内で宣言
インポートライブラリ:kernel32.lib を使用
とのことなので、winbase.hをインクルードしてkernel32.libはデフォルトで
リンクしているので、そのままとしています。
HANDLE hTimer;
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
というサンプルをビルドすると
error C2065: 'CreateWaitableTimer' : 定義されていない識別子です。
error C2440: '=' : 'int' から 'void *' に変換することはできません。(新しい動作 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
と表示されます。
ちゃんとwinbase.hで定義されているはずなんですが?
ネットでサンプルを探したのですが、適切なものがありませんでした。
何が悪いのでしょうか?
よろしくお願いします。


363 名前:デフォルトの名無しさん :02/02/16 22:11
>362
Windows NT/2000:Windows NT 4.0 以降
Windows 95/98:サポートされていません。
MSDNにはこう書かれてるけど、この辺は大丈夫?

364 名前:大助 :02/02/16 22:46
>363
>Windows NT/2000:Windows NT 4.0 以降
>Windows 95/98:サポートされていません。
>MSDNにはこう書かれてるけど、この辺は大丈夫?

はい。Windows2000で開発してます。
http://members.tripod.com/myyee/cs431/timer.txt
にそのまま流用できそうなソースを見つけたのでやってみましたが
やっぱり同じエラーになります。
さっぱり分からなくなりました。

365 名前:デフォルトの名無しさん :02/02/16 22:49
こんばんわ。VC++というよりWindowsのプログラミングかもしれませんが、
コンソールアプリをプログラムで最初から全画面表示にするには
どうすればいいのでしょうか?
(Alt+Enterを押して切り替えるのではなく、最初から全画面にしたいのです)


366 名前:デフォルトの名無しさん :02/02/16 22:51
>364
#define _WIN32_WINNT 0x0400
NT4.0以上だからこれを定義すればいいんじゃないかな。

367 名前:大助 :02/02/16 22:57
>366
>#define _WIN32_WINNT 0x0400
>NT4.0以上だからこれを定義すればいいんじゃないかな。

おおっ、ビルド出来ました。
ありがとうございました。大変助かりました。(^o^)
これからサンプル動かして確認してみます。


368 名前:デフォルトの名無しさん :02/02/17 03:28
起動後Alt+Enterをプログラムに送る(藁

369 名前:デフォルトの名無しさん :02/02/17 03:41
>365
ショートカットから、プロパティ->オプション->表示オプション->
ウインドウ/全画面?
APIで、というと、GetConsoleDisplayModeはあるが、
SetConsoleDisplayModeは無いみたいだが。

370 名前:デフォルトの名無しさん :02/02/18 11:52
コンパイルエラーの情報は「アウトプット」っていうウィンドウに表示されますよね。
この「アウトプット」ウィンドウに表示されるメッセージが横に長いせいで
非常に見づらいんです。ウィンドウの横幅内で自動改行して表示するような
オプションってありませんかね?

371 名前:鬱…… :02/02/18 16:36
GUI のコントロールのダイアログを閉じてしまったのですが、
再び出す方法が分かりません。どうやったら出せますか?

どうしようもないな、俺……。

372 名前:デフォルトの名無しさん :02/02/18 16:46
>>371
・・・リソースエディタのコントロール選ぶやつの事か?
フレームの、なにも無いところで右クリックしてみい。

373 名前:デフォルトの名無しさん :02/02/18 16:54
>>371
根性ねえな。
メニューを片っ端から開けばみつかるyo。

メニューの「ツール」→「カスタマイズ」
 →タブの「ツールバー」→「コントロール」にチェックをつける。
もしくは
ツールバーの何もないところを右クリックして現れるメニューのコントロール
にチェックをつける。


374 名前:鬱…… :02/02/18 16:58
>>372-373
ありがとう。出た。
自分の情けなさに涙出てきたよ……。

375 名前:デフォルトの名無しさん :02/02/18 23:57
Doc-Viewについて質問。
今作ってるアプリ、オプションで表示フォントを変更できるようにしたいわけだが、
設定の保存法で悩む。
CPropertyPageをCMainFlameのメンバにして保存しようと思ったが、そうなるとViewクラスから
どうやってアクセスすりゃいいのか分からん。というかこの実装はださいと思う。
皆さんオプションダイアログってどうやって実装するんですか?

376 名前:デフォルトの名無しさん :02/02/19 00:15
FTPクライアントを実装しようとしているのだが、MFC提供のクラスを使うと
コマンドを送ることができない…。
どうすれば良いんでしょう?

377 名前:デフォルトの名無しさん :02/02/19 00:16
VC++のリソースエディタで作成したリソースの内容を、実行時に変更することは
可能でしょうか?
たとえば、staticテキストフィールドの文字列を実行時に変更するようなこと。
VBなら簡単だけど。結構こういうことをしたいときは多いと思うのですが。

378 名前:デフォルトの名無しさん :02/02/19 00:17
>>376
CSocketを直接使ってFTPのコマンドを送るというのは駄目??

379 名前:デフォルトの名無しさん :02/02/19 00:20
>>377
GetDlgItem(リソースID)->SetWindowText(文字列)

380 名前:377 :02/02/19 00:22
>>379 thanks!

381 名前:デフォルトの名無しさん :02/02/19 00:26
>378
ソケットを使うのも考えたのですが、挫折してしまいました(恥


382 名前:デフォルトの名無しさん :02/02/20 04:02
forのループ変数のスコープをfor内に収めることはできないの?

for(int i=0;....){};
for(unsigned int i=0;....){};
マズーなんですが.
TurboCはOKだった これが標準なのでしょうか?

383 名前:デフォルトの名無しさん :02/02/20 07:04
#define for if(0);for

384 名前:デフォルトの名無しさん :02/02/20 07:05
#define for if(0);else for

とにかくふぁっっきゅー

385 名前:デフォルトの名無しさん :02/02/20 15:17
>382
MSの独自拡張のチェックを外せばエラーが出なくなったと思うけど、
他のソースがコンパイルできなくなったような。MS逝ってよし?

>384
そんなのあるんか。見るからに嫌な気分になってくるTipsだなぁ。

386 名前:デフォルトの名無しさん :02/02/20 21:15
デバッグ中にSTLの変数の中身を見たいときどうしてますか?

vector<T> v;
v[i] を見たいとき v._First[i]

list<T>, map<T> の iterator i
*i を見たいとき i._Ptr->_Value

ちなみにconst_iteratorの場合、VC++のウォッチで_Ptrが見えるのに
iteratorだと見えないのは、iteratorがconst_iteratorから派生していて
基底クラスのメンバは出てこないためのようです。
(自分で打ち込めば見えるんだけど)

他にいい方法ないですか?

387 名前:デフォルトの名無しさん :02/02/20 21:20
VC++のSTLは何を使ってますか?

付属の奴そのまま
STLPort
SGI

388 名前:デフォルトの名無しさん :02/02/20 23:14
付属のやつそのまま。
糞グラマですが何か?

389 名前:デフォルトの名無しさん :02/02/20 23:18
>>387
STLport

付属のヤツだと auto_ptr に reset() がなかったりと、微妙に仕様が古いので
困ることがある。

390 名前:糞グラマ :02/02/21 01:10
コーディングに関係ないんですが、一応VC相談ちゅことで
VC6にてコマンドラインからビルドするときに

>msdev /make "hoge.dsp/dsw" ...

と書くと楽チンなんですが、ビルドの設定をここで指定したいんですが
具体的にはプリプロセッサ定義の追加と出力ファイル名。
SET CL=/DHOGE
でCL.exeは反応してくれるんですがリソースコンパイラとリンカに
この状態で設定変えることはできるかな?

プロジェクトに追加しる!ってのが現状の結論ですが。

391 名前:デフォルトの名無しさん :02/02/21 02:21
>390
メイクファイルをエクスポートしてNMAKEで作るとか。やったことないけど。

392 名前:名無しさん@お腹いっぱい。 :02/02/21 03:04
VisualStudioを入れると、OS側でアプリケーションエラーが発生したときなどに
それをフックしてデバッグしますか?みたいなダイアログがでますが、アレを解除
する方法ご存知ありませんでしょうか?VS6でWin2kです。

393 名前:デフォルトの名無しさん :02/02/21 03:24
>>392
クラッシュ時に起動されるデバッガは、次のレジストリの値で指定されてる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\AeDebug\Debugger

こいつを VS インストール前の値に書き換えてやれば OK。

394 名前:392 :02/02/21 03:43
>>393
ありがとうございます。やってみます。

395 名前:デフォルトの名無しさん :02/02/21 05:15
>>392
っていうか、
ツール -> オプション -> デバック の「ジャストインタイムデバッグ」のチェックを外す。

396 名前:デフォルトの名無しさん :02/02/21 16:16

PNGを読み込みたいです。
BMP・JPEG・GIF・アイコン・カーソルなどの主要フォーマットはAPIで読み込めるのにPNGはなぜ読み込めないのでしょう?
自分は Win98 なんですがXPやなんかでも読みこめませんか?
新しいPNG読み込みAPIが実装されていたりしませんか?

それとAPIがスレッドセーフかどうかってどうやって調べたらいいですか?
MSDNで特に明記されていない場合スレッドセーフとみなしていいんでしょうか?
もちろんライブラリはマルチスレッド用の物をリンクさせます。



397 名前:デフォルトの名無しさん :02/02/21 17:35
 VC++6.0 のダイヤログベースプロジェクトで、
子ダイヤログとしてモードレスダイヤログを表示させた上で、
親ダイヤログにメッセージボックスなど、
モーダルなダイヤログを出したのですが、
その際にも子のモードレスダイヤログにアクセスできてしまいます。
(フォーカスが移動してしまいます)

親にメッセージボックスを出している最中に、
子のモードレスダイヤログにフォーカスできないようにするために、
何か良い方法は無いでしょうか?
(子モードレスを非表示にすることは仕様上出来ないです)

398 名前:デフォルトの名無しさん :02/02/21 18:11
>>397
子を EnableWindow( FALSE ) しちゃうとか。

399 名前:397 :02/02/21 20:16
>>398さん

 それも考えてはいたのですが(試してないですが・・)(^^;
実際に子窓は、たくさんある状況なので、
モーダルの方に命令1つ・・というスマート?な方法を模索してます。
(MessageBox関数は、代用のダイヤログがあるので、
 実際には全てCDialogのDoModalを利用する事にしています)

 ・・とはいえ、(当たり前ながら)親は全ての子を知っているので、
EnableWindow(bFlag)を、全ての子供に送るようなメッセージを作るなどで、
ある程度煩わしくない対処が出来るのかもしれません。

 ただ・・メッセージボックスは、子にも出す必要があるので、
子→親へSendMessageっていうのもどうかな・・と(^^;;;

400 名前:デフォルトの名無しさん :02/02/21 22:11
>396
IEコンポーネント経由で読み込むことが出来る、と思う。
詳しくは「IEコンポーネントを使い倒すスレ」の過去ログを検索してみて。
解ったら報告のこと。

401 名前:デフォルトの名無しさん :02/02/21 22:57
エディットボックスやリストボックス上に
ドラッグ&ドロップしたファイル(アイコン)のパスとかをそのエディットボックスやリストボックスに
表示してやりたいんですが、どうやって認識してあげたらいいのでしょうか?

402 名前:デフォルトの名無しさん :02/02/22 00:48
>>401
DragAcceptFiles()すると、WM_DROPFILESがやってくる。

403 名前:デフォルトの名無しさん :02/02/22 01:50
>>402
ウワーン
まじでありがとYO!

404 名前:デフォルトの名無しさん :02/02/22 11:48
ヘンなハナシを振らせてください。

gccやVisual C++6.0の実装のハナシだけど、
ifstream(fd)/ofstream(fd)でファイルディスクリプタを渡せますよね。
これでソケットやパイプに対してgetlineやマニピュレーターを適用できる。
(Visual C++だと_get_osfhandle()なんかでハンドル→ディスクリプタ変換)
さあて、ここで、open/read/write/socket/pipeなんてのは
POSIXでもANSIでもありませんよね。

あと、↓の仕様って妥当だと思うけど、これに外れる実装例ってあるのかしら。

ファイルがコンストラクタまたは open メンバ関数を使って開かれているときだけ、
ファイルはクローズされます。

あ、引数にもどしてないや・・・


405 名前:デフォルトの名無しさん :02/02/22 14:33
>>404
このコピペたまに見るけど、なんなの?

406 名前:デフォルトの名無しさん :02/02/22 16:45
ねえねえ、clの最適化オプションなんですけど、

>/G6
> Pentium Pro プロセッサ用にコードを最適化します。
>
>/GB
> Pentium 用に作成されたコードを最適化します。80386 (/G3)、80486 (/G4)、
> Pentium (/G5)、および Pentium Pro (/G6) オプションの最適化をブレンドします。

これ、/GBは/G6を包括してるわけですか?
それとも、/GBよりも/G6のほうが
Pentium Pro向けにはいいコード吐くようになってるってことですか?


407 名前:デフォルトの名無しさん :02/02/22 16:59
>>406
ほとんど変わりません。
たぶん速度が1%変わったら大成功な方でしょう。

408 名前:デフォルトの名無しさん :02/02/22 17:15
MFC初心者です。
ラジオボタンのenable、disenableを切り替えたいのですが、
関数で用意されているのでしょうか?



409 名前:名無しさんに接続中 :02/02/22 18:04
MFC&SDI にて、あるファイルを開いている状態から別のファイルを開く場合に、
Document が view からデタッチされると思うのですが、その時呼ばれる
メッセージかもしくは仮想関数はないでしょうか。
今、OnInitialUpdate で仮想画面を create してるのですが、delete する
タイミングを逸しています。できれば泥臭いことはしたくないのです。
もしだめなようなら、仮想画面を作るタイミングを再検討してみようと思います。

410 名前:409 :02/02/22 18:14
ちなみに SPY を使っても目的のメッセージは見つかりませんでした。
しかし SPY を使うと色々なプロセスが落ちて、システムが不安定になるの
ですが、私だけでしょうか。

411 名前:デフォルトの名無しさん :02/02/22 18:18
vectorのerase()って要素を削除した後後ろの要素を前に詰めてくれるんですか?

412 名前:411 :02/02/22 18:25
あ、スレ違いだったかな・・・

413 名前:デフォルトの名無しさん :02/02/22 18:28
>>412
こっちかな。

●STL スレッド●
http://pc.2ch.net/test/read.cgi/tech/1004287394/

414 名前:411 :02/02/22 18:29
>>413
すいません。逝ってきます。

415 名前:デフォルトの名無しさん :02/02/22 18:39
>>408
EnableWindow

>>409
deleteはOnDestroyかな・・・

416 名前:ぼんぢゅーる :02/02/23 06:23
system()でバッチ処理をすることがあるのですが
あるディレクトリに移って相対パスを使うことってできますか?
system("\hoge1\hoge2\a.exe < \hoge1\hoge2\b.dat");

system("cd \hoge1hoge2");
system("a.exe < b.dat");
のような感じで動かしたいのですが。。。

417 名前:デフォルトの名無しさん :02/02/23 06:50
実際に試してみればいいんじゃないでしょうか

418 名前:416 :02/02/23 07:00
↑このままじゃ動きませんでした、確か。

419 名前:デフォルトの名無しさん :02/02/23 07:31
スクリプトファイルに出力して
それを system で実行するとか
fprintf( fp, "cd \hoge1...
system("temp.bat");

420 名前:デフォルトの名無しさん :02/02/23 07:35
SetCurrentDirectoryしてから、じゃダメなのかな?
確認してなくてごめんだけど。

421 名前:416 :02/02/23 07:40
>>419 >>420
ありがとうございます、試してみます。

422 名前:デフォルトの名無しさん :02/02/23 21:36
初歩的な質問で申し訳ないのですが、
WNDCLASS.lpfnWndProcには普通WndProcが入りますが、
他の関数(例えばWndProc2)にしてもいいのでしょうか?

423 名前:954 :02/02/23 21:54
解決しました

424 名前:デフォルトの名無しさん :02/02/23 21:55
>>422
引数の型が同じで戻り値の型が同じで呼び出し規約が同じ関数なら、
名前は何でもよろしいぞ。…っというか、そうでないと2種類とか
3種類とかウインドウ作りたいときに困るではないか。

cite=MSDN
> The WNDPROC type defines a pointer to this callback function.
> WindowProc is a placeholder for the application-defined function name.

425 名前:デフォルトの名無しさん :02/02/23 21:57
解決しました

426 名前:デフォルトの名無しさん :02/02/23 22:56
MFC不使用の場合ファイルを開くのに、CreateFileとfopenが考えられますが
どちらを使えばいいのでしょうか?

427 名前:デフォルトの名無しさん :02/02/23 23:18
好きな方使え。
移植のこと考えるならfopen
排他とかバッファリングとかの細かい制御をしっかり指定したいならCreateFile



428 名前:学生さん :02/02/24 02:35
ダイアログベースで作っています。
ダイアログのエディットボックスのデータを別のダイアログのエディットボックスに
移すにはどうしたらいいのでしょうか?教えて下さい。




429 名前:デフォルトの名無しさん :02/02/24 02:44
WM_SETTEXTしてくだちい

430 名前:  :02/02/24 09:19
>>428
別のダイアログって言っても、元のダイアログの親なのか、子なのか
はたまた別のプロセスのダイアログなのかで全然違う。

431 名前:デフォルトの名無しさん :02/02/24 09:22
 ATL COM AppWizardでEXEサーバーを作り、ATLオブジェクトウィザードで
ダイアログを追加しました。そして以下のテンプレートクラスを継承させました。
public CAxDialogImpl<CComDialog>,
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CComDialog,&CLSID__ComDialog>,
public IDispatchImpl<IComDialog,&IID_IComDialog,&LIBID_SAMPLELib>
 ダイアログリーソースにエディット、インターフェイスにVisibleプロパティを
追加してクライアントプログラム(クライアントはコンソールアプリケーション)から起
動しましたが、エディットボックスに文字をタイプすることが出来ません。
カーソルは表示されマウス操作によるカット&ペーストは可能です。さらにBackSpace
キーは無効でDeleteキー、カーソールは有効です。
 EnableWindow、SetFocus周りの見落としがあるのかと試行錯誤しました。
このような場合、エディットのテキストエリアに文字を入力できるようにするには、
どうしたらよいのでしょうか?


432 名前:jun :02/02/24 17:06
VC++相談よろしいでしょうか!!お願いします!!

アクセスでOLEオブジェクトでBMP画像を格納して
それを、VC++6.0にODBCで接続して BMP画像をLongバイナリ
データで読み込むのですが、VCで表示するために

BYTE *p = (BYTE*)GlobalLock(m_pSet->m_column1.m_hData);

FILE *fp = fopen("aaa.bmp", "wb");

fwrite(p, 1, m_pSet->m_column1.m_dwDataLength, fp);

fclose(fp);

GlobalUnlock(m_pSet->m_column1.m_hData);

(m_column1 という変数が ロングバイナリはいってます)

とやったのですが、aaa.bmpというロングバイナリにbmp拡張子
つけてみたんですが、ファイルの作成はできるのですが
表示が できません・・・たぶん バイナリデータの頭に
アクセスでペイントを開くデータがあるからだと思います。
どうやって解決したらよいでしょうか?
おねがいします! ながなが すみません!

433 名前:デフォルトの名無しさん :02/02/24 17:20
>>432
マルチポストうざい。
↓で判るだろ。
http://www.codeguru.com/mfc_database/storing_paintbrush_in_accessdb.shtml
http://www.codeguru.com/mfc_database/MSAccessOLEField.shtml

434 名前:jun :02/02/24 20:59
>>433
すみません・・・
迅速なお返事
どうもありがとうございました!!
がんばってみます!!

435 名前:デフォルトの名無しさん :02/02/24 21:54
インライン関数がインライン展開されたかを
確認する方法ってないのでしょうか?

436 名前:デフォルトの名無しさん :02/02/24 22:32
>>435
アセンブリコードを出力させる。

437 名前:デフォルトの名無しさん :02/02/25 00:38
 製作途中のプログラムがあるんですが、ノートからデスクトップにワークスペースを
コピーして続きを作ろうとすると、なぜかフロッピーディスクにアクセスしようとして
固まってしまいます。適当なフロッピーを入れると再び動き出すんですが、なぜでしょ
う?
 ノートがPC98なので、VisualC++がAドライブだったせいでしょうか。フロッピーを
突っ込んでおけば一応問題ないのですが、直し方ってありませんか?

438 名前:デフォルトの名無しさん :02/02/25 00:53
メニューの「ツール」「オプション」「ディレクトリ」あたりをみてみれ。


439 名前:437 :02/02/25 01:11
 全ファイルのパスは正しくCドライブになっておりました。他にチェックすべき
ところありますか?

 質問を重ねて申し訳ありませんが、MFCのクラスのサブクラスを自作して、
他のプロジェクトでFileViewからプロジェクトにファイルを追加したとき、
ClassWizardでハンドラ等の関数を追加できないのですが、解決策はありません
か?それとも別な方法で自作したサブクラスをプロジェクトに追加しないと駄目
なんでしょうか?もしそうなら、方法を教えてください。

440 名前:デフォルトの名無しさん :02/02/25 01:14
MRLが関係しているのかも。
とりあえず、GREPなどかけてみれば?

441 名前:437 :02/02/25 01:23
>>440

 ???何がなんだかさっぱりわかりません…(汁

442 名前:デフォルトの名無しさん :02/02/25 02:11
CByteArrayの値をファイルに書き出す方法をおしえてください。
FILE *fp = fopen("aaa.bmp", "wb");
fwrite(p, 1, ???, fp);
こんな感じでやりたいのですが・・・・

443 名前:デフォルトの名無しさん :02/02/25 02:39
>>442
CByteArray ba;
fwrite(ba.GetData(), 1, ba.GetSize(), fp); // ま、こんな感じでいいんじゃない?

444 名前:デフォルトの名無しさん :02/02/25 02:55
if(this->nPoint >= 3){
this->normal = ::CalcNormal(this->point[0], this->point[1], this->point[2]);
}
何してるか分かりますか?


445 名前:デフォルトの名無しさん :02/02/25 03:07
>>437
*.ncb *.aps *.clwを消して見れ。

446 名前:デフォルトの名無しさん :02/02/25 03:09
>>444
thisを省略すりゃ見やすい。
::CalcNormalでスコープの外側の関数をコール。
namespaceの外側、グローバル関数あたりをコールしている。
thisが分からなければclassを勉強しなさい。



447 名前:デフォルトの名無しさん :02/02/25 03:12
>>446
レスサンクス
つまりnPointが3以上ならばpoint[0]〜[2]をコールしてるってことですよね?
this・・・よくわかんねぇ鬱

448 名前:デフォルトの名無しさん :02/02/25 05:19
http://mappy.mobileboat.net/~seek/up/img-box/img20020225051641.jpg

すいません。
上のようなリストをつくりたいんですがどうやったらいいでしょうか?
ファイル|サイズ|更新日時というやつです。



449 名前:デフォルトの名無しさん :02/02/25 05:26
>>448
CListViewじゃダメなの?

450 名前:デフォルトの名無しさん :02/02/25 08:20
INCLUDE も LIB も設定したのに CL.EXE が

インクルード ファイルがオープンできません。'windows.h'

と言ってきます。なぜでしょうか?
VS6 Windows2000 です。
もちろん Include ディレクトリの中には Windows.h は入ってます。

451 名前:409-410 :02/02/25 08:53
>415
ウインドウを閉じた場合は確かに OnDestroy が呼ばれるんですけど。
SDIで新しいファイルを開いてビューに割り付ける場合は、Ondestroy が
呼ばれません。
メモ帳やペイントはどうやっているのだろう。仮想画面は使ってると思うの
ですが。

452 名前:450 :02/02/25 09:16
事故レスです。
INCLUDE は "" で囲ってはいけません。
LIB は大丈夫なのかな? HelloWorld は正常にコンパイルできたから。

凡ミスでした。

453 名前:デフォルトの名無しさん :02/02/25 09:49
あるある

454 名前:デフォルトの名無しさん :02/02/25 10:19
発掘あるあるプログラミング大事典スレ行きだな。

そんなスレねぇよ!

455 名前:デフォルトの名無しさん :02/02/25 11:02
ないない

456 名前:デフォルトの名無しさん :02/02/25 11:04
コマンドラインからコンパイルしているんですけど、
インクルードしているヘッダがどうしても C のソースとして
解釈されようとしてコンパイルエラーが出ているようです。
拡張子が h なのが原因なのでしょうか?
コンパイルオプションの -Tp をつけても駄目みたいです。
どうしたらいいでしょうか?

457 名前:456 :02/02/25 11:10
勘違いでした。スンマソン。

458 名前:デフォルトの名無しさん :02/02/25 15:17
クリティカルセクションを使って同期をとっているんですがロックをネストさせた場合正常に機能しますか?

CRITICAL_SECTION critical;

void f1()
{
  EnterCriticalSection(&critical);    // @
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // A
}

void f2()
{
  EnterCriticalSection(&critical);    // B
  f1();
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // C
}

こういうプログラムの場合に f2() を呼び出した場合
B@ACの順番で実行されますがCまでロックした状態は維持されますか?
Aの時点で解除されませんか?

自分で試せってのは無しでお願いします。
試そうと思ったのですがどうやって試したらいいのか分かりません。
それっぽいプログラムを作ってみたら見た目ではうまく動いているようですが
本当に同期がとれているかは謎です。
教えてください。


459 名前:デフォルトの名無しさん :02/02/25 16:39
エディットコントロールのスクロールについて教えてください。

マルチラインでテキストログを表示させているのですが
定期的にテキストを追加すると、先頭行にスクロールバーが移動してしまいます。

これを現在の表示位置で固定するにはどうしたらよいのでしょうか?
よろしくお願いします。

460 名前:デフォルトの名無しさん :02/02/25 17:41
>>458
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/htm/cerefEnterCriticalSection.asp

> The thread must call LeaveCriticalSection once for each time that it entered
> the critical section.

とのことなので、EnterCriticalSection()を呼んだ回数と同じだけLeaveCriticalSection()
を呼ぶ必要がある。

試すには

・f2()の「ここで〜」のところでSleep(10000)して、その隙に他のスレッドで
EnterCriticalSection()してみる
・f1()のLeaveCriticalSectionを取っ払ってみて、f2()実行後に他のスレッドで
EnterCriticalSection()してみる

とか。

461 名前:デフォルトの名無しさん :02/02/25 17:51
>>460
WINNT.H で定義されている RTL_CRITICAL_SECTION 構造体 (CRITICAL_SECTION
は RTL_CIRITICAL_SECTION の typedef 名) を見ても

 LONG RecursionCount

というフィールドがあるから、再帰的にロックした数をカウントしてるのは、ほぼ確実。

462 名前:デフォルトの名無しさん :02/02/25 18:13
PropertySheetにビットマップを貼り付けたいのですが
何かいい方法はありませんか?
もし知っている方がいらっしゃったら、教えてください。
おねがいします。

463 名前:デフォルトの名無しさん :02/02/25 18:20
IXMLDOMDocument::save
で保存するとUTF8で出力されるのだが
ShiftJISで出力するにはどうすればいいの?


464 名前:サンコンさん :02/02/25 18:44
いま卒業研究をやっていまして、質問があります。
ダイアログベースで、親ダイアログのエディットボックスにファイルパスを
入れて、子ダイアログのエディットボックスにファイルの内容を表示して、
入力不可にするには親ダイアログのボタンにどのようなコーディングをすれ
ば、よいのでしょうか?教えて下さい。宜しくお願い致します。

465 名前:デフォルトの名無しさん :02/02/25 20:44
スレッドを作るのにCreateThread か beginthreadが考えられるのですが
MSDNには、
C ランタイムライブラリの関数を使うスレッドは、CreateThread 関数と
ExitThread 関数ではなく、_beginthread 関数と _endthread 関数を使う
ようにしてください。

と書いてあります。
そこで、スレッド内でCのランタイムを呼び出しているかわからない場合
(ソースのないDLLを呼ぶので)どうしたらいいでしょうか?

466 名前:デフォルトの名無しさん :02/02/25 22:18
>>465
不明でも_beginthread を呼んでおけば確実じゃん?


467 名前:デフォルトの名無しさん :02/02/25 23:41
>>465
その DLL が MSVCRT.DLL をインポートしてるかどうか調べれば?

もしインポートしていれば _beginthread/_endthread を使えばいいし、
インポートしていなければ、CreateThread/ExitThread を使えばいい。

万が一、その DLL が MSVCRT.DLL をインポートしていないのに、
ランタイムライブラリの _beginthread/_endthread を使っているようなことがあれば、
その DLL、逝ってよし。そいつは DLL がわかってないと思われ。


468 名前:437 :02/02/25 23:57
>>445

 いけました。どうもですヽ(´∀`)ノ

469 名前:デフォルトの名無しさん :02/02/26 00:51
>>467
昔は MSVCRT.DLL の微妙なバージョンの差で問題が発生することがあった
から DLL に libc(mt).lib をスタティックリンクしたという話もあった気がするん
だが、最近は大丈夫なの? (それとも、俺の空耳か)

470 名前:465 :02/02/26 01:55
_beginthread使うことにしました。御意見どうもです。

追加ですが、スレッドのPriority上げるために
DWORD m_dwThreadID = ::_beginthread(ThreadProc, 0 ,(void*)this);
::SetThreadPriority((HANDLE)m_dwThreadID ,THREAD_PRIORITY_HIGHEST);

としたのですがOKでしょうか?
DWORDをHANDLEにキャストしてる部分です。
SetThreadPriorityも成功しています。
MSDNには_beginthreadの戻り値にハンドルが返る、と書いたので大丈夫だとは
思うのですが。

471 名前:デフォルトの名無しさん :02/02/26 02:18
なんであげるの?

より重い処理こそ、スレッドの優先順位を下げなさい。
それ以外はそのままにしておきなさい。


472 名前:デフォルトの名無しさん :02/02/26 12:47
Visual C++ で質問です。
WinMain を使ったプログラムで(プロンプトから起動しても) std::cout が何も出力してくれません。
多分標準出力が割り当てられていないんじゃないかと思うのですが
これはどうしたらいいでしょうか?


473 名前:デフォルトの名無しさん :02/02/26 13:53
>>472
コンソールアプリにすれば?


474 名前:デフォルトの名無しさん :02/02/26 13:56
CreateWindowEx に関して質問です。
何故か CreateWindowEx が失敗します。
GetLastError したら「この関数は正常に終了しました」と出ました。
どういう事なんでしょうか?
RegisterWindowEx はちゃんと正常終了しています。

m_hWnd = ::CreateWindowEx(windowStyleEx, s_szClassName, "", windowStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, s_hInstance, NULL);
if ( !m_hWnd)
{
MessageBox(NULL, (LPCSTR)"CreateWindowExに失敗", (LPCSTR)"デバッグ", MB_OK);

LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL );
MessageBox( NULL, (const char*)lpMsgBuf, "エラー情報", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}

475 名前:デフォルトの名無しさん :02/02/26 14:08
>>474
GetLastError() 呼び出す前に MessageBox() を呼んでるから、CreateWindowEx()
のエラーが MessageBox() の実行結果 (正常終了) で上書きされてる。

とりあえず CreateWindowEx() 直後に

 DOWRD dwError = ::GetLastError();

と入れて、それを FormatMessage() しましょう。

476 名前:デフォルトの名無しさん :02/02/26 14:29
直接VCとは関係無いですが、開発環境がVCです。
ASPIを用いてツールを自作したのですが、配布にあたって
Adaptec に許可を得る必要はあるのでしょうか?
商用・非商用で変わるのですか?


477 名前:デフォルトの名無しさん :02/02/26 17:51
スレ違いかもしれんけど
Dialog項目にInputManProを使わなきゃいけなくなったんだけど
Setfocusのイベントが取れません。
どうしたらいいの?

478 名前:デフォルトの名無しさん :02/02/26 20:25
プロパティとメンバ変数って何が違うの?

479 名前:デフォルトの名無しさん :02/02/26 20:42
何もかも

480 名前:デフォルトの名無しさん :02/02/26 20:59
>>479
そうなんですか。
ではスレ立てて聞くのが良いみたいですね。

とりあえず11時にムとマに立てて、ソレでだめなら
2chの外で聞きます。

481 名前:デフォルトの名無しさん :02/02/26 21:30
>>478
話はオブジェクト指向プログラミングの黎明期、”クラス”の誕生にまでさかのぼる。
共に同じメンバーであったメンバ関数とメンバ変数ははじめは対等な立場であった。
これはUML図法等を見れば分かると思う。それどころか幾分メンバ変数の方が”関数を
データにバインドさせる”というOOPLにおいて主体であったとも言えた。
ところがメンバ関数がメソッドと名を変えた頃から両者の関係に亀裂が生じ始めた。
virtual, abstract, interface等々メソッドは強力になっていった。
”ポリモルフィズムこそOOPLの真髄”とまで言われるようにもなった。
その頃メンバ変数(フィールドという名は定着していなかった)は頭に
m_をつけるかお尻に_をつけるかの不毛な議論のなかに埋もれていた。
「このままではいかん!」
メンバ変数は修行を続け、等々新しく生まれ変わった。それがプロパティ
だった。メソッドにも負けない強力なポリモルフィズム機構、それどころ
か右辺値か左辺値かで振る舞いを変えるなどメソッドをもしのぐ力を備えていた。

482 名前:デフォルトの名無しさん :02/02/26 21:54
>>481
ありがとうございます。
少しイメージが掴めました。

この文章はテキストに保存して後生大事に保管したいと思います。
数々の無礼、お許しください。


483 名前:デフォルトの名無しさん :02/02/26 22:17
>482
MFCスレでもきっちり詫び入れてこいよ。その後カオスに還れ。

484 名前:どどど素人。 :02/02/27 00:47
C++で逆行列を計算するプログラムを作ろうと
したのですが、どうもうまくいきません。
どなたかソースをおもちのかた、ご提供
お願いします。

485 名前:デフォルトの名無しさん :02/02/27 00:49
>484
何がうまくいかないの?

486 名前:どどど素人。 :02/02/27 00:53
#include<stdio.h>
#include<math.h>
#define N 3
#define N1 6
#define epsilon 1.0e-5
#define TRUE 1
#define FALSE 0
float a[N][N1]={
{2,1,0,1,0,0},
{1,1,2,0,1,0},
{3,2,1,0,0,1}
};
float det;
int sw;

void main()
{
int i,j;
void sweep();

printf("\n\n =======元の行列========\n\n");
for(i=0;i<N;i++)
{
printf("%d :",i+1);
for(j=0;j<N;j++) printf(" %10.4f ",a[i][j]);
printf("\n");
}
printf("\n\n");
sw=TRUE;
sweep(&sw);
if(sw==TRUE)
{
printf("\n\n =======逆行列========\n\n");
for(i=0;i<N;i++)
{
printf("%d :",i+1);
for(j=N;j<N1;j++) printf(" %10.4f ",a[i][j]);
printf("\n");
}
printf("\n 行列式 = %8.4f \n",det);
}
else
{
printf("\n 逆行列は求まりませんでした ! \n");
}
}
続く。

487 名前:どどど素人。 :02/02/27 00:55
void swap(wk1,wk2)
float *wk1,*wk2;
{float w;
w=*wk1;wk1= *wk2; *wk2=w;
}

void sweep(sw)
int *sw;
{ int i,j,k,ik;
float ak,aik,p;

det=1.0;
p=1.0;
for(k=0;k<N;k++){
ak=a[k][k];
if(fabs(ak)<=epsilon)
{
ik=k+1;
while((ik<N) && (fabs(a[ik][k])<epsilon)) ik++;
if(ik<N)
{
for(j=k;j<N1;j++){swap(&a[k][j],&a[ik][j]);}
ak=a[k][k];
p=-p;
}
if(ik>=N)
{
printf("ピボットが零です ! \n");
*sw=FALSE;
goto owari;
}
}
det=det*ak;
for(j=k;j<N1;j++) a[k][j]=a[k][j]/ak;
for(i=0;i<N;i++)
{
if(i!=k)
{
aik=a[i][k];
for(j=k;j<N1;j++) a[i][j]=a[i][j]-aik*a[k][j];
}
}
}
det=p*det;
owari:;
}

ていうか実は参考書のまんまに打ったプログラムなんですが、
C用だったのでC++はだめなんですかねぇ?できればポインタとか
使わない分かりやすいプログラムが欲しいです。。。

488 名前:デフォルトの名無しさん :02/02/27 00:56
追う気にはならんが、C用のソースならそのままC++で通るはずだけど。

489 名前:デフォルトの名無しさん :02/02/27 00:57
荒しですか?

490 名前:デフォルトの名無しさん :02/02/27 01:34
>484
で、何がうまくいかないの?

491 名前:デフォルトの名無しさん :02/02/27 04:33
>>490
人生

492 名前:デフォルトの名無しさん :02/02/27 04:33
>>490
ご飯ですよのふたがうまく開かない。

493 名前:デフォルトの名無しさん :02/02/27 04:46
>>490
「自力で作ろうとしたけど挫折しちゃった。テヘ♥」
じゃなかろうかと。

494 名前:_ :02/02/27 12:19
識別子って何文字までいけるの?

495 名前:デフォルトの名無しさん :02/02/27 12:36
>>494
Microsoft 固有の仕様 →

ANSI 規格では、外部識別子として 6 文字、内部 (関数内) 識別子と
して 31 文字までの名前が有効ですが、Visual C++ コンパイラでは、
外部識別子は 32 文字、内部識別子は 247 文字までの名前が有効です。
ANSI 規格との互換性を確保する必要がないときは、/H (外部識別子
名の長さを制限するオプション) を使って、このデフォルトをより小さな
値に変更できます。

← Microsoft 固有の仕様

496 名前:デフォルトの名無しさん :02/02/27 12:43
誰か247文字の関数とか作ってください。templateは抜きで。

497 名前: :02/03/01 11:13
>496
void aaaaaaaaaaaa(中略)aaaaaa(void);

頭、大丈夫か?



498 名前:デフォルトの名無しさん :02/03/01 13:31
.NETの購入案内が来ました。(2週間前くらいですけど)
買いですか?
それともVC6.0で十分ですか?

499 名前:デフォルトの名無しさん :02/03/01 13:33
>>498
俺は郵便受けから取り出した瞬間脊髄反射的に捨てました。

500 名前:デフォルトの名無しさん :02/03/01 14:22
>>499
燃やせ


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