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


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

VisualC++相談室 4
501 名前:デフォルトの名無しさん :01/11/07 18:37
>>500
サブクラス化してWM_SETFOCUSをひっかけてHideCaret。
つーかカレットの出ないEditコントロールなんてDQNなUIのアプリなんか
使いたかねーけどな。

502 名前:jp :01/11/07 19:35
exeファイルしかないのですがその実行ファイルの特定メニューを
使用不可にする方法はありますか。ソースがあれば簡単なんですが
exeしかありません。やはり逆アセンブルとかになってしまうので
しょうか。

503 名前:  :01/11/07 21:11
メニューを探してEnableMenuItem()。
それか、WM_COMMANDをフックする。

504 名前:デフォルトの名無しさん :01/11/07 21:21
>>502
適当なリソースエディタで。

NTならVisualStudioでも可

505 名前:デフォルトの名無しさん :01/11/07 21:55
>>504
MFCアプリだったらOnUpdate〜を引っかけられてたら利かないじゃん。

506 名前:502 :01/11/08 01:13
多分、MFCだと思います。MFCでなかったらEXEファイルのみでも>503
見たいなことできるんですか。

507 名前:デフォルトの名無しさん :01/11/08 01:20
>>506
ケースバイケース。

508 名前:デフォルトの名無しさん :01/11/08 01:28
>>506
>>503 はグローバルフックを使う方法。
Windows標準のMenuコントロールを使っているアプリ全般に利く。
ただし、随伴するアプリを常に同時に起動する必要がある。
また、他のアプリに影響が出ることがあるかも知れないような
気がしないでもない。
無効にしたいメニューのコマンドIDはspy++であらかじめ調べておく。

>>504 は、いちどリソースオブジェクトを分離し、編集(メニュー無効化とか)
して再リンクする。
(VSから「ファイル」→「形式を指定して開く」で「リソース」を指定、対象のexe
ファイルを選択。WinNT/2000のみ可能。9xでは編集できるが再リンク不可。)
実装によってはメニュー無効化だけでは利かないこともあり得る。
メニュー項目自体の削除ならたぶん大丈夫。
ただし、メニュー項目をリソースとして持ってない(実行時に作成する)場合は
利かない(というか編集すべきリソースがない)

509 名前:教えてください :01/11/08 09:57
>>498
->-subsystem:consoleを-subsystem:windowsに変更
どこを修正すればそうなりますか?

510 名前:デフォルトの名無しさん :01/11/08 13:16
SDIのアプリケーションで、右上にある[×]をクリックしても、アプリケーションのダイアログが消えるだけで、その後もずっと動きつづけてしまうのですが・・ どうしたら直せるのかわかりません。知っているかたいましたら教えて下さい。お願いします。

511 名前:506 :01/11/08 14:21
>508さんたち
ありがとうございます。VSはありますのでやってみます。

512 名前:デフォルトの名無しさん :01/11/08 14:44
>>510
ウィンドウが閉じたイベントに反応して、
アプリケーションを終了させるよーに仕向けてください。

513 名前:デフォルトの名無しさん :01/11/08 17:33
MFCの質問はここでいいのでしょうか?

CObListのGetNextメソッド内部の
ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
で落ちてしまいます。
原因がサパーリです。どなたかヒントを・・・

514 名前:デフォルトの名無しさん :01/11/08 19:45
COleDataSource::OnRenderGlobalData
COleDataObject
の、サンプルコードがあるところを教えてください。
達人の方々、簡単なサンプルコードをいただけると幸いです。
サパーリわからなくて困り果てています。うう(泣

515 名前:デフォルトの名無しさん :01/11/08 21:31
>>513
パラメータクラスのコピーコンストラクタをきちんと書いたか?

516 名前:デフォルトの名無しさん :01/11/08 22:10
VC++6.0をアカデミックで
購入しようと思っているのですが、これは
必要に応じて差額を支払い、通常版に
アップグレードすることが可能なのでしょうか?
無理なら、最初から通常版を買うつもりです。

技術的な質問でなくて申し訳ありません。

517 名前:デフォルトの名無しさん :01/11/08 22:29
>>516
通常版って?次のバージョンにアプグレドしたいの?
アカデミックだからと言って機能制限はなかったはず。。。
俺のはアカデミックプロ版だよ〜

518 名前:デフォルトの名無しさん :01/11/08 22:37
>>517
レスありがとうございます。
通常版とは、アカデミックでない
7〜8万円くらいで売ってるもの、という意味でした。

僕が欲しいのはプロフェッショナルですが
アカデミック版では、商用利用が出来ないと
聞いています。
当分、シェアウェアなどを制作する予定はないのですが…
もしも、そうなった時に買い直すのも馬鹿らしいですし。

519 名前:517 :01/11/08 22:42
>>518商用利用とかはわからないけど、
個人でするなら、それほど気にすることはないのでは?

素直にアカデミック買えるなら買っとけ!
得した気分になるぞ!(ワラ

520 名前:516=518 :01/11/08 22:49
そういうものなんですか?
アカデミックを商用利用してる人
って結構いるんでしょうか?

どっちにしろ、差額払っての
通常版へのアップグレードが出来るか
どうかは知りたいところです。

//検索はしているんですが、なかなか見つからない(TT)

521 名前:デフォルトの名無しさん :01/11/08 22:52
ライセンス上違いないよ
商用もok


522 名前:デフォルトの名無しさん :01/11/09 01:03
>>518
> アカデミック版では、商用利用が出来ないと聞いています。
誰から?

523 名前:516=518 :01/11/09 02:57
>>522
高校の時の友達っす。
今、思い返すとデタラメだったのかも…?

さっき、VC++持ってる近所の
友達にアカデミックの使用許諾契約書
を見せてもらいました。
難しく書いてあって、良く分からないけど
コンパイルしたものを売っちゃイカン…
みたいな事は書いてなかったです。
でも、どうなんだろ?
コードのすべてに〜の記述を含めなければいけません、とかあったし。

アカデミックと通常版の違いを書いたものが無いってのが…鬱。

524 名前:デフォルトの名無しさん :01/11/09 03:17
TC++にはそんな制限があった気がするがVC++にはないはずだよ>商用利用不可

525 名前:516=518 :01/11/09 03:25
>>524

そうですか。
もうちょっと調べてから決断を下します。
たぶん、アカデミック買うと思います。

レスしてくれた方々、ありがとうございました。

526 名前:がんばれや :01/11/09 03:30
アカデミックと一般版の価格差に
怒りが頂点にたっしました。
VC++を買うのを止めてBCBプロフェッショナル
を買おうと思います。
しかし、あの価格差は呆れちゃいますね。

527 名前:デフォルトの名無しさん :01/11/09 08:29
>>526
ご怒りはごもっとも。
visualstudioのエンタープライズが
アカデミックなら4万弱ぐらいだよね。
VC++一般版プロフェッショナルより
はるかに安いもんね。

528 名前:デフォルトの名無しさん :01/11/09 13:14
昨日の件は、言っている意味がわかって修正したものの、手詰まりの為続行を断念。
次に入ったところで「拡張子に関連したコンパイルツールが無い為にコンパイル出
来ません」と出てしまいました。対処法を教えてください。

--------------------------------------------------------------------------------

529 名前:デフォルトの名無しさん :01/11/09 13:24
>>528
誰だてめえ。
このスレは貴様のために回ってるわけじゃねえんだから「昨日の件」で通じる
わけねえだろが。おととい来やがれ。

530 名前:528 :01/11/09 13:28
>>498

531 名前:>529 :01/11/09 13:32
江戸っ子ハケーン!!

532 名前:デフォルトの名無しさん :01/11/09 13:33
>>529
4/10点

533 名前:528 :01/11/09 13:34
>>509
重ねてのミス、大変失礼しました。

534 名前:デフォルトの名無しさん :01/11/09 14:39
>>528
command: stop
msgbox: warningbox
msg_titile: 開発者へ
msg_str: あなたの動かしているデバッガが2chに来て
msg_str: 対話デバッグしてますよ
command: popup
command: restart

535 名前:528 :01/11/09 14:45
>>534
つまりどういう意味ですか?

536 名前:デフォルトの名無しさん :01/11/09 17:56
Win98では現在のローカル日時設定出来るのですが、WinNT/200では出来ません
SetLocalTime関数を使用しています
Helpを見るとSE_SYSTEMTIME_NAME 特権を有効にしなければならず、
この特権を割り当てるには、AdjustTokenPrivileges 関数を使いますが、
AdjustTokenPrivilegesのパラメータの意味がまったくわかりません
教えていただくか、別の方法を教えてください

537 名前:デフォルトの名無しさん :01/11/09 18:24
>>536
待て待て待て。
同じ板でマルチポストするな。
新手の荒らしか?

538 名前:デフォルトの名無しさん :01/11/09 18:26
権限の概念自体は共通の筈なので、「NTで再起動するには」系の
Programming - Tipsを検索すれば、それなりに解説が出ているかと。

539 名前:名無し :01/11/09 23:43
VC5.0のlearningだと商用配布できなかったな、確か。

540 名前:デフォルトの名無しさん :01/11/10 02:57
Win32サービスでRegisterDeviceNotificationを使って
USBマウスの接続イベントをとるには
どうすればいいのでしょう?

DEVICE_NOTIFY_SERVICE_HANDLEをして
とりたいのですが?
特にGUIDあたりがさっぱりわかりません.

541 名前:デフォルトの名無しさん :01/11/10 04:41
GetLayeredWindowAttributesをWin2000で使いたい。

542 名前:デフォルトの名無しさん :01/11/10 10:35
Win98SE上でMFCを利用してMDIプログラムを作っているんですが、
一度起動した後、二度目に起動するとアイコンなどにマウスを乗せた瞬間や、
そのままマウスを待機させてツールチップが出る瞬間にAccess Violationが
でて強制終了してしまいます。
一度AccessViolationが出ると、デスクトップの他のアイコンにマウスを乗せるだけで、
Exploreが強制終了してしまって再起動しなければならなくなります。

メニュー項目に対応するSTRINGテーブルなどはツールチップも含めて、
ちゃんと設定できていると思います。

プログラムの構成なのですが、App、MainFrame、ChildFrame、Document、Viewといった
標準的なクラスに加えて、CFrameから派生したものと、CWndから派生したものの、
独自のウィンドを複数追加しています。

newで作成したCWndは親ウィンドのデストラクタでDestroyWindow()とdelete()を使って
後処理していますが、これが原因でしょうか・・・。
原因不明のまま、とりあえず他の関係ない部分のコードを追加していると
突然エラーがでなくなったりします。
何が原因で発生しているバグだと思われますでしょうか。

543 名前:デフォルトの名無しさん :01/11/10 10:52
CWnd派生クラスは自分でdeleteするが何か?

544 名前:542 :01/11/10 10:57
>>543
例えば、CWndオブジェクトへのポインタがm_Wndだったとすると、

m_Wnd->DestoryWindow();
delete(m_Wnd);

と親ウィンドウのデストラクタで後処理しています。
これは通常の事後処理でしょうか。

ただDestroyWindow()がいらないのかなぁ、と思ってこの行をコメントアウトしてみても、
やっぱりAccessViolationがでています。

545 名前:デフォルトの名無しさん :01/11/10 14:30
>>544
CWnd派生クラスをdeleteするときは、そのウィンドウ自身の
PostNcDestroy()を使うのが通常のやりかたでなかった?

546 名前:デフォルトの名無しさん :01/11/10 14:48
ローカル変数が使用されないとコンパイラが警告出しますが
スタティック変数やグローバル変数の場合は警告が出ません。
プログラム中で使用されているか調べる方法ってありますか?

変数をコメントにしてコンパイルしてみる。
スタティック変数の場合エディタで static を auto に置換してコンパイルした後で
auto を static に置換する。( auto は使われていない場合 )
検索機能で変数を調べてみる。

くらいしか思いつかないんですけども簡単な方法ってありますか?

547 名前:デフォルトの名無しさん :01/11/10 15:05
簡単な方法はない。
正確だが少々面倒な方法なら、ある。
MSDN で「BSCMAKE」もしくは「ブラウズ ファイル」を調べてみれ。

548 名前:542 :01/11/10 16:18
>>545
はい。
PostNcDestroy()で
delete(this);
とするように書いてますね・・・。
どこをいじればこのバグがなくなるか色々試す中で、
PostNcDestroyではなく親ウィンドのデストラクタでdeleteしてやれば
エラーが出なくなったことがあったんですが、
どうも因果関係がはっきりしないのでWndのdeleteの問題ではないようです・・・。
この部分は指摘していただいたようにPostNcDestroyでdeleteするようにしてみます。
ありがとうございます。

また別のコードを追加していたらバグがでなくなりました。
もうほとんど完成です。でもなんかすっきりしない。(´д`)マズー

549 名前:デフォルトの名無しさん :01/11/11 23:21
みなさま、VisualC++でどういうソフトを今作っているのですか?

550 名前:デフォルトの名無しさん :01/11/11 23:47
お勧めの書籍教えて

551 名前:デフォルトの名無しさん :01/11/12 06:17

Cの標準ライブラリ(VC++6.0付属のもの)を開いてみても中ではプロトタイプ宣言やマクロの定義しかしていないようにみえるのですが、処理はどこにかかれているのですか?

552 名前:デフォルトの名無しさん :01/11/12 09:07
どのエディションのどこをみてるのか知らんけど。
うちのVS6.0エンタ版のインストールフォルダには
VC98\CRT\SRCってフォルダがあって、
そこに標準ライブラリのソースが並んでるが。

553 名前:デフォルトの名無しさん :01/11/12 09:10
>>552
実は >>551 はヘッダとライブラリ, インポートライブラリの区別がついていないに 6 ガノッサ。

554 名前:A :01/11/12 09:54
VC でアクセスやVBみたいなフォームを扱いたい。
リソースエディタにはサブフォーム(VBでいうGrid
がないです。
どうやればいいでしょうか?

555 名前:デフォルトの名無しさん :01/11/12 14:04
コンソールアプリでマウスの右クリックを検出するにはどうやればいいのでしょうか?

556 名前:デフォルトの名無しさん :01/11/12 14:52
>>555
GetKeyState

557 名前:555 :01/11/12 17:16
>>556サンクスです
GetKeyState(VK_RBUTTON)<0
ですがコンソールではうまくいかないようです

558 名前:デフォルトの名無しさん :01/11/12 17:33
>>557
GetAsyncKeyState

559 名前:555 :01/11/12 17:51
いきました
ありがとうございます

560 名前:デフォルトの名無しさん :01/11/12 19:16
VC++は今後廃れるのでしょうか?

561 名前:  :01/11/12 19:21
DELPHI>>>>>BCB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>VC++

562 名前:デフォルトの名無しさん :01/11/12 20:30
VB>>>>>>>>>>DELPHI>>>>>BCB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>VC++

563 名前:デフォルトの名無しさん :01/11/12 20:37
static char tag_head[12][4] = {"ISBJ","IART","IPRD","ICMT","IGNR","ICRD","ICOP","IENG","ISRC","IKEY","ITCH","ICMS"};
でエラーが発生してコンパイルできないのですが、
どこがいけないのでしょう?
今は直接代入せずにlstrcpyを使っていますが、美しくないので直したいのですが(^^;

564 名前:563 :01/11/12 20:42
ちなみに
static char tag_head[12][5] =以下略
で5の部分を8以上の数にしても通りません。

565 名前:sage :01/11/12 21:01
static char *tag_head[]=
にしてみろ

566 名前:デフォルトの名無しさん :01/11/12 22:37
プログラムを一応完成させた後、
細かい部分がちゃんと動いているか、
コンソールか何かに、値を表示させたいのですが
どうすればいいのでしょうか?

567 名前:デフォルトの名無しさん :01/11/12 22:53
デバッガを使え

568 名前:デフォルトの名無しさん :01/11/12 23:33
あの、クラスを作ったら、ウインドウプシージャ書いてあるところにパブリックな変数で宣言するのが普通なんですか?

569 名前:デフォルトの名無しさん :01/11/12 23:33
>>568

今ひとつ意味が分からないです。

570 名前:デフォルトの名無しさん :01/11/12 23:43
つまり、Windowsプログラムでは、あるクラスを作ったら、WinMain()やプロシージャが書かれているcppファイルにグローバルに宣言して、それぞれのプロシージャで使うのが普通なのかなということです。

571 名前:デフォルトの名無しさん :01/11/12 23:45
>>570

complie error at 2ch.c at 570
プロシージャの意味が曖昧です。
WndProc()
それともVBで言う手続き?

572 名前:デフォルトの名無しさん :01/11/12 23:46
WndProc() のほうです。

573 名前:戸牛郎 :01/11/13 00:55
>>570
ぼくぁ WinMain のローカル変数に実体とってるよ>メインクラス。

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int)
{
if (!ACLASS::Init(hInstance)) return 0;
ACLASS a;
return a.Run();
}

574 名前:デフォルトの名無しさん :01/11/13 01:18
>>570
俺は ATL の CWindowImpl クラスを使ってるけど。

575 名前:デフォルトの名無しさん :01/11/13 16:01
::GetPrivateProfileString() のデフォルト文字列 lpDefautなんですが。

・NULL を指定することはできません。
・半角スペースで終わる文字列を既定の文字列として指定することは避けてください
となっています。
じゃ、デフォルト文字列を NULLとしたい場合、どうすれば良いんでしょうか。
とりあえず、
 ::GetPrivateProfileString(...,"\v",buffer,...
 if(buffer[0]=='\v' && buffer[1]=='\0') buffer[0]='\0'
とかやってるんですが。何か美しくないような...
lpDefautに NULLを指定しても動いてしまいますが、禁止されてるようだし。
レジストリを使え!とか言わずにご教授ください。

576 名前:デフォルトの名無しさん :01/11/13 16:12
>575
ん??なんか勘違いしてないか?普通に
GetPrivateProfileString(...,"",...
でいいじゃん。関数の引数をNULLにするなってことなんじゃないの??

577 名前:デフォルトの名無しさん :01/11/13 16:15
>>575
文字列を与えないことと、空の文字列を与えることは違うのです。

578 名前:575 :01/11/13 16:38
>576, >577
ありがとうございます。勉強になりました。

579 名前:デフォルトの名無しさん :01/11/13 20:57
>>575おもろい。
精進スレ

580 名前:デフォルトの名無しさん :01/11/13 22:05
VC++で
ファイルを読み込んだり,書き込んだりするプログラムを作りたいのですが
どういうクラス?関数?があるのでしょうか?

581 名前:デフォルトの名無しさん :01/11/13 22:17
つーかMFCのオンラインリファレンスってないの・・・

582 名前:デフォルトの名無しさん :01/11/13 22:18
MSDN読め馬鹿

583 名前:デフォルトの名無しさん :01/11/13 22:24
>>580
VC++ 以前の問題として、まず「プログラミング言語C」「プログラミング言語C++」読んどけよ。
Win32 API 使って読み書きしても良い(それが必要になる場面もある)が、標準ライブラリ関数
知らんのは論外。

584 名前:デフォルトの名無しさん :01/11/13 22:30
MSDNにCFILEの使い方ってのってましたっけ?

>VC++ 以前の問題として、まず「プログラミング言語C」「プログラミング言語C++」読んどけよ。
Win32APIに近いレベルの方がいろいろできると思ったので。
uxixと同じやり方でいいんですか?

585 名前:デフォルトの名無しさん :01/11/13 22:30
CD-Rで焼いたVSEEだからMSDNないんだよ。きっと

586 名前:デフォルトの名無しさん :01/11/13 22:35
Win32環境にはシステムコールがないかわりにWin32APIがある。

だが、いちおうコードの移植もしやすいように、
K&Rに載っている程度のシステムコールはランタイムライブラリとして提供されている。

ランタイムライブラリは最終的にWin32APIを呼び出して処理を完了させるが、
いまどきのPCは処理性能がよいため、呼び出しにかかるコストはそれほど
変わらない。

いろいろできるかどうか、であれば、Win32APIを直接呼ぶ方がいろいろできる。
が、ここでそんなしょぼい質問をしてるレベルだと、ランタイムを使おうが
APIを使おうが大差ない。

MFC/iostreamも然り。

587 名前:デフォルトの名無しさん :01/11/13 23:02
最近windowsプログラミングを始めた物で
醜い仕様に唖然です

結局のところ、どのように書くのがwinpgでは一般的なのでしょうか?

588 名前:デフォルトの名無しさん :01/11/13 23:12
結局誰もわかってないのかな
自分流が一番ってことか

589 名前:デフォルトの名無しさん :01/11/13 23:16
>587
うるせー馬鹿。C言語を前提としてるから仕方ねーんだよ。俺はけっこうキッチリまとまってると思うぞ。

590 名前:デフォルトの名無しさん :01/11/13 23:17
適当にCOM/COM+で組み合わせて終わり。
言語は適材適所。
GUIだってVBでもVCでもDelphiでもHTMLでもなんでもいいよ。

591 名前:デフォルトの名無しさん :01/11/14 00:52
>>589
キャストを多用せざるを得ない API のインターフェースは、どうかと思うが。CreateMenu の 9 番目の
引数 (hMenu) とか、さすがに辛いだろ。

592 名前:デフォルトの名無しさん :01/11/14 00:56
>>587
過去との互換性を保ちつつ、無理矢理に機能拡張してきたからな・・・
仕方ないものと考えるしか。

しかし const は、ちゃんと指定して欲しかった。
いちいち const_cast で const 解除するのが何かとイヤだ、、、

593 名前:デフォルトの名無しさん :01/11/14 01:12
const_castが必要な場面って、思いつかないんだが、
実例があったら教えてくれ。

594 名前:デフォルトの名無しさん :01/11/14 02:43
>>593
俺が思いつくのは DrawTextEx(), VariantCopy() あたりだが。

595 名前:デフォルトの名無しさん :01/11/14 04:02
ファイルをRB+でオープンして編集していたのですが、
この場合ファイルサイズが小さくなった時にゴミデータが末尾に残ってしまいます。
そこでtruncate()関数を使ってファイルを切り詰めようと思ったのですが、
unistd.hはUNIX系のみなのかVC6ではサポートされていないようなのです。
扱うファイルのファイルサイズが巨大で一部のみを編集するので書き込み用のファイル
を別にオープンするといったことは避けたいのですが、いいアイデアはないでしょうか?

もしくはソースコードを公開されてるバイナリエディッタとかがあればソースを読んで勉強しますが・・・
(Bainary maidは出力用のファイルを別にオープンするタイプだったので参考にならず(^^;

596 名前:デフォルトの名無しさん :01/11/14 04:31
>>595
MFCのCFile::SetLength()のソースを見てみたら、
SetEndOfFile()というAPIを呼んでるみたいだよ。

そういえばMS-DOSにもtruncateがなくて、そのかわりwriteで0バイト出力を指定すると
ファイル切り詰め動作になったんだよねー。なんだよそれわって感じ。なつかしい。

597 名前:デフォルトの名無しさん :01/11/14 10:57
質問です
プログラムの進行と同時に 状況をエディットビューに表示させ続けてます
しかし 限界がきたようで途中から書き込みを止めてしまいました
随時表示するには 以前に表示したものを消さないといけないと思うのですが
エディットに書かれた最初の部分にさかのぼり 消すのは どうしたらいいですか?

よろしくお願いします

598 名前:デフォルトの名無しさん :01/11/14 11:24
ダイアログベースで、プログラムの起動時にウィンドウを非表示にしたいのですが、
どうすればいいのか教えていただけないでしょうか?OnInitDialogのなかで、
ShowWindow(SW_HIDE)を実行してもうまくいきません。
よろしくお願いします。

599 名前:デフォルトの名無しさん :01/11/14 11:50
はじめまして。
以前は普通にコンパイルできていたのですが以下の様なメッセージが出て
きてコンパイルできなくなりました。どうしたことでしょう?

--------------------構成: Cpp1 - Win32 Debug--------------------
コンパイル中...
cl.exe の起動エラー

Cpp1.exe - エラー 1、警告 0

環境はWin2000です。以前はWinをインストールしたドライブ(C)にインストール
していたのですが、それをアンインストールして増設したドライブにもう一度
インストールし直したのがまずかったのかな???

600 名前:デフォルトの名無しさん :01/11/14 12:31
>>598
質問者が同じ人だったら悪いけど…一応、前スレの最後の方で話題になってたよ

601 名前:598 :01/11/14 12:53
>>600
レスありがとうございます。
多分前スレ938の事だと思いますが、あれはMFCを使わないプログラムの
事だと思います。MFCのダイアログベースでのやり方を教えていただき
たいのですが。言葉足らずですみません。

602 名前:名無し募集中。。。 :01/11/14 13:12
>>601
MFCというかウィザードでダイアログベースのアプリの場合でしょ?
出来上がったプロジェクトのrcファイルの中に↓みたいなのがあるからこれを書き換えなよ。

STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW

WX_EX_APPWINDOWEXSTYLE を  WS_EX_TOOLWINDOW にするだけ。
別のやり方としてウィザードが作ったダイアログを消してから新規リソースでダイアログを
追加すればリソースのプロパティでTOOLウィンドウをチェックすればOKなんだけどね。

603 名前:名無し募集中。。。 :01/11/14 13:14
訂正

WX_EX_APPWINDOW を  WS_EX_TOOLWINDOW にするだけ。

簡単でしょ?

604 名前:名無し募集中。。。 :01/11/14 13:21
念のため補足。TOOLWINDOWにするとタスクバーにアイコンが表示されなくなる。
その状態でShowWindow(SW_HIDE)すること。
ウィルスは作るなよ。

605 名前:デフォルトの名無しさん :01/11/14 13:45
はじめまして。初心者質問ですみません。
よろしくお願いします。

ダイアログベースのプログラムで、メインのダイアログから
子ダイアログをDialogBox関数で呼び出した時、
子ダイアログがメインダイアログの外に出ないようにしたいのですが
どうすればいいのでしょうか?
ヘルプで探しても、私の探し方が悪いのか全然関係ないものばかりが
大量に検索されて全然見つかりません。
よろしくお願いします。

606 名前:601 :01/11/14 14:56
>>602
レスありがとうございます。
rcファイルのWS_EX_TOOLWINDOWに修正したのですが、たしかにタスクバーには
アイコンが出なくなったのですが、依然としてウィンドウは表示されたままです。
ShowWindow(SW_HIDE)を実行してもウィンドウは消えないのです。
起動時以外ならばうまくいくのですが、起動時だけはどうしてもうまくいきません。

607 名前:デフォルトの名無しさん :01/11/14 15:02
>>606
起動時ってどのタイミングだ?
CWinApp::InitInstanceのタイミングだったら何をやっても無駄。
CDialog::InitDialogでもダメ。
最初のCDialog::OnPaintのタイミングでShowWindowすれば、
WM_EX_TOOLWINDOWに関わらず消えるはず。
ただし、一瞬だけ表示されるけどな。

608 名前:デフォルトの名無しさん :01/11/14 15:32
>>605
DialogBox関数って何?MesageBoxじゃないの?

>>606
起動時だけ非表示にしたいのか?動作中ずっとじゃなくて?
どっちにしてもリージョンをいじればいいとおもうけどね。

609 名前:デフォルトの名無しさん :01/11/14 19:57
>>594
おー、DT_MODIFYSTRINGの時だけ書き換えの可能性有りなのね。
const_cast使うしかないな。

ただのDrawTextで満足してたから気付かなかった。
VariantCopyは使う気ねーから(゚ε゚)キニシナイ!!

610 名前:594 (!= 592) :01/11/14 22:10
>>609
俺も DrawTextEx は滅多に使わないなぁ。VariantCopy は ATL の CComVariant とか介して使うのが
普通だから、こっちはまったく困らない。

Win32 API だと reinterpret_cast は多用せざるを得ないけど const_cast はほとんど必要ないと思う。

611 名前:599 :01/11/14 22:25
すいません。私の質問はあまりにも初心者過ぎてばからしくてレスする気が
起きないのか。それともそんな状況になったことがないからレスしようにもできない
のかどちらか教えていただけませんか?

612 名前:デフォルトの名無しさん :01/11/14 22:28
>>611
単に cl.exe にパスが通ってないんじゃ?

613 名前:599 :01/11/14 22:47
cl.exeがあるところにはpathが通ってるんですよ・・・・・。
その証拠にコマンドプロンプトでは普通にコンパイルできるんですよね。

614 名前:sage :01/11/14 23:05
[ツール]...[オプション]...[ディレクトリ]...実行ファイルパス

615 名前:599 :01/11/14 23:23
>>614
ありがとうございました。
関係ありそうなところをすべてインストールしたドライブに変更したところ
うまくいきました。
あなたはわたしにとって神です。

616 名前:デフォルトの名無しさん :01/11/14 23:50
ボタンにBMPを貼り付けたいと思いこのまえ質問したのですが、
そのときの回答がHP猫でものオーナードロウボタンの項目だったのですが
そこに載っていたのはボタンが1個の場合でした。
複数のボタンにそれぞれ違うBMPを貼り付ける場合のHPありませんか?
もしくは、書きこみで教えてー

617 名前:デフォルトの名無しさん :01/11/14 23:58
>616
BM_SETIMAGEメッセージを全部のボタンに送れごるぁ

618 名前:617 :01/11/15 00:06
>616
HBITMAP hb=LoadImage(............);
HWND hbtn=GetDialogItem(hDlg,IDC_BUTTON1);
SendMessage(hbtn,WM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)hb);

MFC?そんなものは知らん。

619 名前:taka :01/11/15 00:21
電卓のソースなど教えてください。
初心者なのでわからないこといっぱいで・・・

620 名前:デフォルトの名無しさん :01/11/15 00:24
電卓買ってこい>619

621 名前:デフォルトの名無しさん :01/11/15 00:25
電卓にはケチャップの方があう。

622 名前:デフォルトの名無しさん :01/11/15 01:06
>>621
俺は塩胡椒派だが何か?

623 名前:デフォルトの名無しさん :01/11/15 01:10
大きめの0ボタンあたりを塩焼きにすると、結構いけるよね。

624 名前:616 :01/11/15 01:15
説明ありがとう
助かりました。

625 名前:619 :01/11/15 01:19
説明ありがとう
助かりました。

626 名前:デフォルトの名無しさん :01/11/15 01:29
デバッガのブレークポイントの追加と削除はポップアップメニューで出来ますが
現在のブレークポイントを全部無効にする方法ってありますか?
前回のブレークポイントを無効にし忘れていると関係無いところで停止してウザイです。
複数あると止まりまくりです。
なんとかなりませんか?

627 名前:デフォルトの名無しさん :01/11/15 01:31
>>626
ツールバーでやれ

628 名前:デフォルトの名無しさん :01/11/15 01:34
>>626
CTRL+B

629 名前:デフォルトの名無しさん :01/11/15 01:36
C言語を勉強しようと思ってVCを買ってはみたものの使い方がさっぱり・・・

630 名前:デフォルトの名無しさん :01/11/15 01:49
高い勉強代だったな。
とりあえずチュートリアルでもやれ。

631 名前:デフォルトの名無しさん :01/11/15 02:23
まずは「新しいプロジェクトの作成」の素振りを10回。これを10セット。
出来るようになったらフェイントも混ぜながら、もう10セット

632 名前:デフォルトの名無しさん :01/11/15 02:25
その前にマウスの素振りを毎日千本ずつやっとけ。
休日もマウスをもってかえって素振りしとけ。

633 名前:デフォルトの名無しさん :01/11/15 03:07
練習が終わったら、デスクトップの掃除とディレクトリの整理整頓。
ゴミ箱もちゃんと空にしておけよ。

634 名前:616 :01/11/15 03:23
ボタンを透かすってことできますか?
後ろのデスクトップやウィンドウが見えるようにしたいのです。

635 名前:デフォルトの名無しさん :01/11/15 03:26
>>634
砂ケシを使うとか、セロテープを貼って剥がしてとか

636 名前:デフォルトの名無しさん :01/11/15 03:28
ミカンの汁をつけて、ティッシュでこする。

637 名前:616 :01/11/15 03:46
もしくはBMPの選択したぶぶんだけを上と同じように
透かすことはできますか?(選択部分はまるとかじゃなく複雑なかたち)

638 名前:デフォルトの名無しさん :01/11/15 04:19
下の画像を加工してボタンに貼りましょう。

639 名前:デフォルトの名無しさん :01/11/15 04:20
>>637 も同じ。
マスクパターン作って下の画像を加工。

640 名前:616 :01/11/15 04:44
>>638>>639
たびたびすいません、もうちょい詳しくお願いします。

まずはBMPのマスクパターンをつくることですよね。
そしてそのBMPの表示したくない部分はどうやったら
表示しないでウィンドウなどに貼り付けたりできるんで
しょうか?

641 名前:616 :01/11/15 04:49
つけたし
ようはBMPの背景を消したい(透明に)ってことなんですが。
色々調べた結果BitBltの最後の値をどうにかするってことなんでしょうか?

642 名前:デフォルトの名無しさん :01/11/15 04:56
なんだ、ひょっとして只の透明のことかな?

それとも「丸い透明」というオブジェクトがあって、その下の絵が消えて
下の下の画像が見えるとか。

643 名前:デフォルトの名無しさん :01/11/15 05:04
もし下の下の画像が見える透明オブジェクトの事なら
「下の画像を消す」という考えは捨てて
「下の画像の上に下の下の画像を書けば透明になったように見える」
という考えに切り替えましょう。
四角以外の形にする場合はマスクパターンが必要。
形が固定で移動しないモノなら下の下の画像から切りぬいて作った
別のBMPを書けば良い。
「擬似透明」という手法です。

644 名前:デフォルトの名無しさん :01/11/15 05:05
ATLのCOMの初歩的な質問ですまんす。
あるCOMクラスCoにインターフェイスIAとインターフェイスIBを持たせるとしますよね。
ATLの場合CoをIAとIBから派生させることになりますよね?
この場合、IAとIBに同じ名前のメソッドやプロパティを持たせようとすると
多重継承の問題からかVC++に蹴られてしまいます。
これはプロパティやメソッドというものは、あくまでCOMオブジェクトCoに属するものであり
IAやIBに属するものでは無い、と認識しろという事なんでしょうか?

645 名前:616 :01/11/15 05:07
そうです。
変な形のウィンドウをつくりたいのですが
その元としてBMPをつかってるのですがそのBMPそのまま
で作ったら四角なのでその背景の部分が後ろを見える状態にしたい
ってことです。

646 名前:デフォルトの名無しさん :01/11/15 05:17
>>645
VCのリソースのBMPではやったことないなあ。
BMPファイル(VCのリソースのBMPとは別物)を読みこんで
PENで透明コードは書かない、という処理をしてた。

647 名前:616 :01/11/15 05:32
domo

648 名前:デフォルトの名無しさん :01/11/15 05:38
>>645
ボタンじゃなくて、ウィンドウ自体を変な形にしたいなら、
googleで「非矩形ウィンドウ」で検索しよう。

649 名前:616 :01/11/15 05:41
みっけました。thx
ttp://nt.sakura.ne.jp/~miwaki/progtips/misc/creatergnfrombmp.shtml
ながすぎてよくわからないけど、これのとおりやってみます。

650 名前:デフォルトの名無しさん :01/11/15 10:15
だからリージョンをいじれって言ってるだろ・・・

651 名前:デフォルトの名無しさん :01/11/15 11:34
flatなボタンを作りたいんですが、
できればヒントおしえてください。

652 名前:651 :01/11/15 12:31
普通に無理っぽいです。
MFCでいきます。

653 名前:デフォルトの名無しさん :01/11/15 13:19
>>651
オーナードロー

654 名前:デフォルトの名無しさん :01/11/15 15:01
オーナードロウで
複数のボタンに複数のボタンを貼り付けできますか?

655 名前:デフォルトの名無しさん :01/11/15 15:46
>>654
意味不明

656 名前:デフォルトの名無しさん :01/11/15 15:51
今年の夏にパソコン買いました。
インターネットをやって面白かったのですが最近飽きたのでプログラミングをやってみようと思いました。
VCが欲しかったのですが友人がJavaってのしか持ってなかったのでそれを貰いました。
プログラムするのにDOSというソフトが必要らしいのでインターネットで検索して探したんですが情報は結構あるんですがダウンロードできる場所が見つかりません。
何処でダウンロードできますか?
メーリングリストで質問してみたのですが回答がもらえませんでした。
2チャンネルの人は詳しそうなので誰かダウンロード先を教えて頂けないでしょうか?
パソコンはiMacのオレンジ色です。
プログラミングを勉強してインターネットのような便利なソフトを作って自分を馬鹿にしていた人達を見返してやろうと思っています。
マンガ喫茶でのバイトが終わってから見にくるのでそれまでに解凍していただけると嬉しいです。

657 名前:デフォルトの名無しさん :01/11/15 16:16
>>656
1.まず、長くて丈夫な縄を用意します。
2.縄の先に直径30cmくらいの輪を作って結びます。
3.その輪を地上2mくらいの高さに吊します。
4.輪の中に頭を突っ込んで思い切りぶら下がってください。

658 名前:デフォルトの名無しさん :01/11/15 16:29
>656
マジレスしてやる。ありがたく思え。appleのサイト逝って、
MRJとMRJ SDK拾ってきて入れろ。それで終わり。あ、それと、Mac
ユーザって判っててWinのSDKくれた友達は切った方がいいよ(w

659 名前:デフォルトの名無しさん :01/11/15 16:34
俺もこれくらい天然っぽいネタが書けるようになりたい。

660 名前:デフォルトの名無しさん :01/11/15 18:32
今年の夏にパソコン買いました。

この一文だけでも文才があるな。ネタスレ立ててみれば?>656

661 名前:デフォルトの名無しさん :01/11/15 19:04
インターネットのような便利なソフトを作って

芸術点加算

662 名前:デフォルトの名無しさん :01/11/15 19:09
1時間ほど前からVC++を使い始めました(これまではg++でした)。
それで質問があるのですが、

class _PAPA;
class _MAMA;
class _MUSUKO;

class _MUSUKO{
list<_PAPA>::iterator papa;
list<_MAMA>::iterator mama;
};

class _PAPA{
list<_MUSUKO> musuko_list;
};

class _MAMA{
list<_PAPA>::iterator papa;
list<_MUSUKO>::iterator musuko;
};

という感じの記述がg++ではさっくりコンパイルできたのですが、
VC++では『コンパイルされたクラスのテンプレートのインスタンス化が云々・・・』という
エラーが出て通りません。なぜ駄目なのかはなんとなく分かるんですが
(こうだ!という説明はできませんが・・・)、g++で通るのでなんとか
このままVC++でも通せないかと淡い期待をしています。
なんとかならんもんでしょうか。

663 名前:デフォルトの名無しさん :01/11/15 19:11
パソコンはiMacのオレンジ色です。

ケースの色をさりげなく披露している。
ボンダイブルーでないところで、さらに芸術点加算

664 名前:デフォルトの名無しさん :01/11/15 19:11
インターネットを作るならここを見た方がよい。
http://pc.2ch.net/test/read.cgi/hp/1003050159/

665 名前:デフォルトの名無しさん :01/11/15 19:17
>>664
やはり偉大な先人というものはどの分野にもいるものだな

666 名前:デフォルトの名無しさん :01/11/15 19:21
>インターネットで検索して探したんですが
>メーリングリストで質問してみたのですが

ここで質問する前に試行錯誤のあとが見られる。
技術点も加算。
これはかなりの高得点が期待される。

667 名前:662 :01/11/15 19:32
656の後というのはタイミング悪かった・・・。


ついでにもう一つ質問があります。

for(int i=0; i<10; ++i) hogehoge(i);
for(int i=0; i<10; ++i) hogehoge2(i);

という記述は、iが二重に宣言されてると言われて
VC++ではエラーになります。g++では通るのに。
変数のスコープ違うんですか。もういやん。
(g++がゆるいのかな。-Wallでも警告出ないのに。)

668 名前:デフォルトの名無しさん :01/11/15 19:44
>>667
それはVCがクロです。古い仕様に基づいてるんで。

669 名前:デフォルトの名無しさん :01/11/15 19:48
>>662はクラスが無限ネストしてるから。
iteratorがポインタだと限らない。

>>667はVCが古いからそういうことになってるだけ。
#define if (0) ; else for
このマクロで回避

670 名前:662 :01/11/15 20:03
どうもありがとう。

>>667の件は了解です。自分のせいなのかコンパイラのせいなのか
判らないのが一番辛いので、こうはっきり言ってもらえると助かります。

>>662の件はやはり設計から考え直さないといけないのでしょうか。うぅぅ。
そこをなんとか・・・。(この場合はg++の方がいい加減ということですね?)

671 名前:nori :01/11/15 20:12
VC++で作ったプログラムをdosモードで動かそうとしたのですが、
このプログラムは実行できないと表示されてしまいました。
dosモードでの実行は出来ないものなんですか?出来ると
したらどのような方法があるのでしょうか?

672 名前:デフォルトの名無しさん :01/11/15 20:21
>>671
32bitプログラムはDOSモードでは実行できない。
VCでは32bitプログラムしか作れない。

673 名前:名無し募集中。。。 :01/11/15 20:40
>>672
2行目は明らかに間違ってるぞ。
VCでもDOSアプリは作れるって。

674 名前:デフォルトの名無しさん :01/11/15 20:44
>>673
VC++1.51までな。
いっとくけど、コンソールアプリ!=DOSアプリだからな。

675 名前:デフォルトの名無しさん :01/11/15 20:45
>>670
もし、単に papa, mama が参照できれば良いのなら

class _MUSUKO {
  _PAPA* papa;
  _MAMA* mama;
};

iterator 必須ならポインタにする。解放し忘れるのを防ぐため auto_ptr にしておくと吉。

class _MUSUKO {
  auto_ptr<list<_PAPA>::iterator> papa;
  auto_ptr<list<_MAMA>::iterator> mama;
};

どうでもいいが _PAPA, _MAMA, _MUSUKO なんていうのは属性であって、それ自身をクラス化する
対象ではない気がする。たとえばゲルマニクスのインスタンスを作ると、カリグラの父でありドルスス
の息子ということで、_MUSUKO と _PAPA を多重継承するのか?

むしろ

class Person {
  Person* father;
  Person* mother;
  list<Person*> childs;
};

とでもモデル化したほうが良いと思うが。

676 名前:デフォルトの名無しさん :01/11/15 21:09
>>669
そんなマクロ始めてみた。便利そうだ。貰うYO。

677 名前:名無し募集中。。。 :01/11/15 21:12
>>674
あらホントだ(今試した)すみません

678 名前:662 :01/11/15 22:01
小一時間程ジョギングしてきました。
>>676さん詳細有難う。
今晩の宿題にしてみます。

679 名前:662 :01/11/15 22:07
>>675さんの間違いでした。
>>676さん。同感です。

680 名前:675 :01/11/15 22:09
>>675
どうでもいいが childs じゃなくて children だね(w

681 名前:デフォルトの名無しさん :01/11/15 22:43
VC++ でVBのGridのACTIVE X を開発しようと
おもうのですが、できれば文化オリエントの
Spreadみたいなのを開発したい。
可能ですか?

682 名前:デフォルトの名無しさん :01/11/15 23:17
↓この例外処理ってMFCじゃないと駄目っすか?

try{
 ・
 ・
 ・
}catch(CException* e){
 ・
 ・
 ・
 ・
}

683 名前:デフォルトの名無しさん :01/11/16 09:12
>>662
class _PAPA に
list<_MAMA>::iterator mama;
が抜けています。

684 名前:デフォルトの名無しさん :01/11/16 12:35
>>682
CException が MFC クラスなんで、当然ダメっす。

685 名前:デフォルトの名無しさん :01/11/16 12:55
>>681
VC++には可能。君に出来るかどうかは知らん。

686 名前:デフォルトの名無しさん :01/11/16 14:17
>>682
自分でCExceptionを定義すれば可能(笑
つぅか、682はC++の入門書買えって。

687 名前:ika :01/11/16 22:51
ウインドウコントロールを自作したいのですが。
class OriginalTextBox{
HWND hwnd;
public:
OriginalTextBox(HINSTANCE hInstance,HWND hPWnd,char* classname);
static LRESULT CALLBACK WndProc(.....);
}
宣言はこうやっているのですが、こうやってやるものですか?
あとはプロシージャで振る舞いを定義すればよいのですか?

688 名前:デフォルトの名無しさん :01/11/17 00:02
#define if (0) ; else for
この意味教えてもらえませんか?

689 名前:デフォルトの名無しさん :01/11/17 00:08
>>688
#define for if(0);else for
じゃないのか?

690 名前:デフォルトの名無しさん :01/11/17 00:10
ワラタ

691 名前:デフォルトの名無しさん :01/11/17 01:02
>>688
意味はねえ〜、VC++6.0のバグを回避するおまじないだよ

692 名前:ika :01/11/17 01:20
VC++でアプリを作っていると、非常にしばしば、ファイルが壊れて、プロジェクトが台無しになるんですが、どうにかなりませんか?
今日は、WinMainのLoadStringから上全部が意味不明なパスに置き換わり、氏にました。
クソです。

693 名前:デフォルトの名無しさん :01/11/17 01:31
>692
漏れはなったこと無い。まずは自分の環境を疑え。これ鉄則。

694 名前:デフォルトの名無しさん :01/11/17 01:33
>>692
こわー
忌まんと子経験内が
他に経験社員の?
自作パソコンが
不安定とかじゃなくて?

695 名前:デフォルトの名無しさん :01/11/17 01:39
>>692
そんな経験ないなぁ。
VC++のバージョンは?サービスパックインストールしてる?
なんとなく他に原因がありそうな気がするが。
NTなのにいきなり電源落としてるとか。

696 名前:ika :01/11/17 01:42
環境はWin2k+DELLのノーぱソです。
その前は重要なクラスのcppが消失しました。
>695
そういえば今日は、ビルド直後、そのアプリのせいで2kが落ちました。それで電源切りました。
なぜNTだとまずいんですか?

697 名前:デフォルトの名無しさん :01/11/17 01:43
漏れはVC5のプロジェクトをVC6で開くと、VCがページ違反で落ちる。(Win98で)
漏れの環境だけかなあ。ちなみに、マシンは98。

698 名前:デフォルトの名無しさん :01/11/17 01:43
>>692
知識もないのに、クロックアップとかしてんだろ。
コンパイラは処理きついんだから、マージン食いつぶせばそうなる。

699 名前:ika :01/11/17 01:45
コンパイル環境はVC++6.0 proです。サービスパックはいれてません。

>698
DELL出荷時の設定そのままです。

700 名前:デフォルトの名無しさん :01/11/17 01:46
>>696
win2kだと、たまにあるよ。

プロジェクトの入ってるディレクトリをIEで開きっぱなしにしてると、
ビルド時におかしなことになりやすい。

SP最新のを当ててもダメ。
IEをこまめに閉じておけば、かなり確率が減る。

まあ、それとは別に、
backup用のバッチを書いて、ことあるごとに
ぽちぽちバックアップすることを勧めるよ。

701 名前:ika :01/11/17 01:58
やっぱり、ありますか。

>IE開きっぱなしで消える
何が原因なんでしょう。VCとIEにどんな因果関係が?

702 名前:デフォルトの名無しさん :01/11/17 02:07
ビルド開始

ファイルの自動保存が走る

クラスブラウザがソースを舐めはじめる

VCがディレクトリを変な形でロックする

IEが更新を察知してなんか表示しようとする

ソースブラウザの更新作業とか
ぐるぐるマウスとかIMEとかウイルスチェッカとか
いろんなのが同時になんかしようとして固まる

なぜかファイル消える

Σ(゚д゚lll)ガーン

703 名前:デフォルトの名無しさん :01/11/17 02:08
>>701
近親相姦関係
やり、やられ

704 名前:ika :01/11/17 02:23
いやーなるほど、納得しました。
これからは用心して開発を行います。
どうもありがとうございました。

705 名前:デフォルトの名無しさん :01/11/17 02:31
>VCがディレクトリを変な形でロックする

そうなんだよー、これかなり痛い
俺もこれが原因でたまにVCが逝きます

逆にコンパイル中でもファイル編集できるから便利つっちゃー便利なんだけど

706 名前:デフォルトの名無しさん :01/11/17 03:30
>>696
> その前は重要なクラスのcppが消失しました。
Win2k + VC6 だけど、たまにあるな、これ。あとファイルを書き換えてからビルドしようとすると「ファイルが
書込み禁止です」と怒られ、もう一度ビルドを実行すると通ったり。

いずれにせよ、バージョン管理ツールを使ってこまめにリポジトリに登録していれば、ファイルが消えた場
合の被害は極小に抑えられます。VSS か CVS + Igloo (CVS の VS 用 plugin) あたりを導入することを
強くお勧め。

Igloo
http://www.jalindi.com/igloo/

707 名前:デフォルトの名無しさん :01/11/17 04:16
Win2kは気難しいんだね。
XPだとどうなんだろ?Meからアップグレード予定なんだけど。

708 名前:デフォルトの名無しさん :01/11/17 04:26
2kのFATはいろいろとヤバげ。NTFS5もヤバげ。

709 名前:デフォルトの名無しさん :01/11/17 12:44
だが、NT系列以外で開発する気はゼロ

710 名前:デフォルトの名無しさん :01/11/17 19:21
俺はWin98で十分。
VC++立ち上げると禿げしくリソース消費するのは痛いが。
MSDN、DirectXヘルプ、VC++でシステムリソースの残りが10%以下だったり。

XP導入しようかと思ってたけど、このスレ読んでたら不安になってきた。

711 名前:デフォルトの名無しさん :01/11/17 19:32
FAT上で開発しようというその気が知れない。

712 名前:デフォルトの名無しさん :01/11/17 20:56
VC++6.0プロフェッショナル使用しているのですが、サービスパックが当たっているか
どうかを知るにはどこを見たらよいのでしょうか?

713 名前:デフォルトの名無しさん :01/11/17 21:13
>>712
cl.exe のバージョンを見る、とか?

714 名前:712 :01/11/17 21:24
12.0.8804.0ってなってました。ファイルの日付は2000年3月14日です。
SP2はたしか2001年4月ぐらいでしたよね?となると全然当たってないって
こと?

715 名前:デフォルトの名無しさん :01/11/17 21:36
>714
漏れSP5当ててるけど、cl.exeはそのバージョンだったYO

716 名前:デフォルトの名無しさん :01/11/17 21:42
>>715
スマソ、ちなみに VC98\Lib\WS2_32 は98年5月13日とかになってます?

717 名前:662 :01/11/17 21:43
とりあえず別の実装方法を試そうと思い、
以下のようなものを書きました。

#include <list>
#include <memory>
using namespace std;

class _musuko{};

int main(int argc, char **argv)
{
 list< auto_ptr<_musuko> > mlist;
 mlist.push_back(auto_ptr<_musuko>(new _musuko));
 return(0);
}

すると今度はVC++ではさっくり通りましたが
g++でコンパイルしようとすると

/usr/include/g++-3/stl_construct.h: In function `void construct<auto_ptr<_musuko>,
 auto_ptr<_musuko> >(auto_ptr<_musuko> *, const auto_ptr<_musuko> &)':
/usr/include/g++-3/stl_list.h:293: instantiated from `list<auto_ptr<_musuko>,
 allocator<auto_ptr<_musuko> > >::_M_create_node(const auto_ptr<_musuko> &)'
・・・

のようにごそっとエラーが来ます。
何を信じればいいんでしょうか;;。
#書き方が悪いのは自覚しているんですが・・・。

718 名前:デフォルトの名無しさん :01/11/17 21:58
auto_ptrをコンテナの中に入れちゃダメだよ

719 名前:デフォルトの名無しさん :01/11/17 22:31
>>718
根拠を尋ねてよろしいですか?

720 名前:デフォルトの名無しさん :01/11/17 22:40
auto_ptr同士のコピー同士は等しくない。
listやvectorがauto_ptrを内部でコピーしないという
保証はない。
ツーか、vectorなんか確実にコピーする。

sortなんかのアルゴリズムを適用したときどうなるか
ない知恵を絞って考えてミロ。

721 名前:デフォルトの名無しさん :01/11/17 23:00
>>720
言いたいことが良く分からんので、ちょっと分かりやすいように書き直していただけません?

> 23 Containers library
> 23.1 Container requirements
> 3 The type of objects stored in these components must meet the requirements of CopyConstructible
> types (20.1.3), and the additional requirements of Assignable types.

> Assignable types
> -------------------------------
> expression : t = u
> return type : T&
> post-condition: t is equivalent to u

これの post-condition に抵触すると言いたいのかなぁ。

> sortなんかのアルゴリズムを適用したときどうなるか
> ない知恵を絞って考えてミロ。
すくなくとも auto_ptr なら

tmp = b;
b = a;
a = tmp;

みたいなコードは、問題ないよね。

722 名前:662 :01/11/17 23:17
>>720 ということはこの場合はコンパイルが通ってしまう
VC++の方がゆるいということでしょうか。
それともg++が親切なのかな。
でも

 list<_musuko*> mlist;
 mlist.push_back(new _musuko);

これは解放が面倒でうれしくないなぁ・・・。
でもポインタのリストにしないと

class _musuko;
typedef list<_musuko> _musuko_list; // 実体のリストの場合
typedef _musuko_list::iterator _musuko_itr; // (*1)
class _musuko{ ... };

(*1)のところでVC++がコンパイル通してくれないし(g++は通る)・・・。
はふぅ。

723 名前:721 :01/11/17 23:50
Effective STL の Item 8 に "Never create containers of auto_ptr s" ってのを見つけた。
読んだらまとめ書くよ。

724 名前:721 :01/11/18 02:50
>>722
> ということはこの場合はコンパイルが通ってしまう
> VC++の方がゆるいということでしょうか。
ということらしい。

実際 sort() の中で値をコピーして使ってる実装もあって、それだと sort() した結果として値が壊れて
しまう。回避策としては、所有権を管理する auto_ptr ではなく、参照回数計測で管理するスマートポイ
ンタ (たとえば Boost.org にある boost::shared_ptr とか) を使えば OK とのこと。

Boost.org
http://www.boost.org/boost/

725 名前:デフォルトの名無しさん :01/11/18 19:12
効率よくHDに書き込みしたいのですが、
put(char*)
よりも
write(const char *buf,int streamsize num)
を使ったほうがいいんですよね?
その時、num(バッファサイズ)はどれくらいがいいのでしょうか?
環境はVC++6.0です

726 名前:デフォルトの名無しさん :01/11/18 19:13
なんでWin32APIつかわないの?

727 名前:あぼーん :あぼーん
あぼーん

728 名前:デフォルトの名無しさん :01/11/18 19:53
ブラウザのFORMでファイルをサーバにアップロードするのと同じこと
をするクライアントのプログラムを作りたいのですが、POSTメソッド
で接続しないといけないようです。しかし、POSTでのパラメータの送
信の仕方がわかりません・・・・。(かなり初心者・・・)
教えていただけませんでしょうか。あるいは参考書籍を。。。

729 名前:デフォルトの名無しさん :01/11/18 21:26
>>726
Win32API使っても、それをラップしたクラスを使っても
変わらないだろ
というかネタか?

730 名前:  :01/11/18 21:30
ブラウザを作ろうと思い、
アクティブX(?)のMicrosoft Web Browserを貼り付けたのですが、
これって他の人に配布してもちゃんと動くのでしょうか?

731 名前:age :01/11/18 22:33
age

732 名前:デフォルトの名無しさん :01/11/19 07:18
>>730
IE4.0以上が入っていれば大丈夫だと思うっす。

733 名前:デフォルトの名無しさん :01/11/19 07:31
>>725
MemoryMappedFileを使うと速くなるらしい。
API質問スレを検索してね。

734 名前:730 :01/11/19 07:35
>>732あっどうもありがとう!

735 名前:662 :01/11/19 08:40
>>721
ありがとう〜。そのスジで検討してみます。

736 名前:デフォルトの名無しさん :01/11/19 14:19
>>728
居れも初心者で厨房発言かもしれないでど
ポート80のhttpのプロコトル無視したサーバープログラム組んでみそ。
そしてブラウザで
<form action="http://localhost" method=post>
<input ,,,,,,
</form>
とゆう具合にアクセスしてみ
ブラウザどのようにサーバーとやり取りしてるかわかるから。

737 名前:デフォルトの名無しさん :01/11/19 14:27
>>728
なぜRFCを読みませんか?

738 名前:デフォルトの名無しさん :01/11/19 15:26
おまえは次に「RFCってなんですか?」と言う!

739 名前:728 :01/11/19 15:49

すみません、プロトコルが分からないのではなく、VCの使い方がわからないのです・・・。
AddRequestHeaders()でヘッダーは変えるとして、送るデータはどうしたら・・・?

740 名前:デフォルトの名無しさん :01/11/19 16:01
>>739
プロトコルがわかってるなら、CAsyncSocketでも使ったほうが
てっとり早くないか?

741 名前:  :01/11/19 16:09
どうしてsocket使わないんですか?(既出?)

742 名前:728 :01/11/19 16:15
お返事ありがとうございます。
これってデータを丸ごと送るってことでしょうか・・・?
POST /cgi-bin/XXX.cgi HTTP/1.0
Referer: http......
:
:
・・・と。
サンプルのプログラムに「TEAR」ってのがあって、それをPOSTで出来るようにすれば
簡単かなと思ったもので。CAsyncSocket これって難しそう・・・・。

743 名前:728 :01/11/19 16:30
そこでは、こんな風にやっていて、
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
pFile->QueryInfoStatusCode(dwRet);
これをPOSTにして、ヘッダーを変えて、あとはmultipartのデータを送ればいいん
だと思ったんですが。。。VCもネットワークもそれほど詳しくないので、これが
一番簡単に思えたんです・・・・。

744 名前:デフォルトの名無しさん :01/11/19 17:45
前にカキコしてたらごめんなさい。
メールソフトのソースを載せているHPってありますか?猫でもはみました。

745 名前:デフォルトの名無しさん :01/11/19 17:58
RFCとtelnetがあれば解析できるよ。

746 名前:デフォルトの名無しさん :01/11/19 18:07
f

747 名前:デフォルトの名無しさん :01/11/19 19:28
クリップボードチェインのやり方教えてください。
SetClipboardViewerで登録、ChangeClipboardChainで削除は分かるんですが
WM_DRAWCLIPBOARDとWM_CHANGECBCHAINの処理が分かりません。
次のウィンドウにメッセージを渡すらしいですが次のウィンドウがNULLの場合
(SetClipboardViewerで次のウィンドウがない場合はNULLが返るらしい)
でもNULLを指定してSendMessageを呼ぶのですか?
WM_DRAWCLIPBOARDとWM_CHANGECBCHAINで渡されたWPARAMとLPARAMをそのまま次のウィンドウに送っていいんですか?
MSDNのサンプルはMFCのものしかないので分かりません。
知ってる人教えて。

748 名前:デフォルトの名無しさん :01/11/19 23:07
__int64形式の数値を10進数で文字列に変換するAPIってないですか?

749 名前:デフォルトの名無しさん :01/11/19 23:14
APIはどうだかしらんがsprintf系でいけるぞ

750 名前:デフォルトの名無しさん :01/11/20 03:40
プロセスハンドルについて教えてください。
OpenProcessで別のプロセスのハンドルを取得した場合にハンドルの対象のプロセスが終了したあとでもOpenProcessが返したハンドルは有効ですか?
しばらくしたら同じハンドル値で別のプログラムが動いているなんてことありますか?
WaitForSingleObjectでプロセスが終了されているかの判定を行う場合にOpenProcessのハンドルが別のプロセスで再利用されて正常に調べられないなんてことありますか?


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