5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

■ VisualC++(MFC限定)相談室 4■

1 :MFC:02/05/17 16:36
:: 「こんなことをするにはどうすれば良い?」というとき ::
※MSDNライブラリをよく読む。
※関連すると思われるクラスのメンバ関数を探してみる。
※そのクラスの基本クラスのメンバ関数も探してみる。
※Win32APIからも探してみる。
※WEB検索。

※たいていの問題は>>2-3のサイト/書籍で探せば解決。

2 :デフォルトの名無しさん:02/05/17 16:36
:: 前スレ ::
まずはスレをさかのぼってキーワード検索してみよう。
■ VisualC++(MFC限定)相談室 2■
 http://pc.2ch.net/test/read.cgi/tech/1008031675/

■ VisualC++(MFC限定)相談室 3■
 http://pc.2ch.net/test/read.cgi/tech/1014057520/

:: 国内サイト ::
VC++ML
 ttp://mfc.acty-net.ne.jp/ml/mfc/
 WEBから過去ログ検索できるので便利。
Visual C Forum
 ttp://forums.belution.com/ja/vc/
 アーカイブ検索やTechTipsあり。

:: 海外サイト ::
CodeGuru
 ttp://www.codeguru.com/
 便利なクラスやTips、サンプルが満載。
CodeProject
 ttp://www.codeproject.com/
 便利なクラスやTips、サンプルが満載。

3 :デフォルトの名無しさん:02/05/17 16:36
:: 書籍 ::
MFCによるWindowsプログラミング改訂新版
 MFCのバイブルと呼ばれている本。
 基本的なことから広範囲にわたって解説されている。
 ただしデータベースやネットワーク関連クラスについては
 触れられていない。

VisualC++5 パワフルテクニック大全集
 テクニック集。書籍名のとおり内容は少し古い。

ワンポイント・レッスン 最新Windowsプログラミングテクニック
 テクニック集。書籍名のわりに内容は少し古い。

Best of MSDN magazine 上・下巻
 ワンポイント〜の続編。

WinSock2.0プログラミング
 MFCの本では無いが、ソケット関連クラス(CAsyncSocket、CSocket)
 について書かれている数少ない書籍の中の一つ。




4 :1:02/05/17 16:41
一応良く使うサイトと自分の持っている書籍などから
独断と偏見で参考サイト/書籍を挙げておきました。
これからMFC関連の新書は出ないんでしょうかね……


5 :デフォルトの名無しさん:02/05/17 16:58
>>2 についてだけど、海外のサイトなのに、なぜhを抜いたりするの?

6 :デフォルトの名無しさん:02/05/17 16:59
>>5
国内と海外を区別する理由は?

7 :デフォルトの名無しさん:02/05/17 17:01
そもそも、何のためのimeなのか。


8 :デフォルトの名無しさん:02/05/17 21:30
MFCの今の状況は斜陽なのかなー?

9 :デフォルトの名無しさん:02/05/18 01:42
次々と新しいもんがでますから

10 :デフォルトの名無しさん:02/05/18 12:25
ツールバーの特定のボタンに動的に色をつけたいのですが、どうすればよいでしょうか?
イメージとしては、ツールバーにWordのような文字色を変更するためのボタンを作り、
色を選択するとそのボタンの色も選択した色で着色したいのです。

11 :デフォルトの名無しさん:02/05/18 14:28
相談よろしくお願いします。
サブクラス化したコントロールをメンバに持つ親ウィンドゥがあり、
それら両方に同じメッセージに反応するハンドラを実装した場合、
試してみると親ウィンドゥのハンドラのみが呼び出されます。
これを、サブクラス化されたコントロールのハンドラも呼び出されるように
する方法ってありますでしょうか?
当然、親のハンドラ内で m_MyControl.OnXXX() を呼び出したり、
メッセージを親の WindowProc() 内で処理するようにすれば実装できますが、
これでは保守性が悪いので、スマートな方法を模索しております。

12 :デフォルトの名無しさん:02/05/18 14:38
>>11
ON_CONTROL_REFLECT_EXマクロを使って、ハンドラ内でFALSEを返す
のはどうかな?
これだと子→親へとメッセージがルーティングされる。

13 :デフォルトの名無しさん:02/05/18 14:56
>>12
11です。
すばやい回答ありがとうございます。
まさしく、ご指摘どおりの方法で希望の動作を実現することができました。
ありがとうございました。
これで、親ウィンドゥでは通常の方法でメッセージハンドラを追加するだけで
両方のハンドラを呼び出すことができるようになりました。

14 : :02/05/19 16:47
ダイアログのサイズ変更時にボタン等の位置変更はどこでやればよいのでしょうか。
Button.MoveWindow()で動かしているのですが、
WM_SIZEを拾うOnSize()でやるとコンパイルは通っても実行時に止まってしまいます。
OnPaint()では縮小のみの場合書き直されないようで・・。

15 :デフォルトの名無しさん:02/05/19 16:54
実行時に止まってしまうとかはデバッグして具体的にどこで止まってるなど
確認したほうがいいよ。その方が回答も得られやすいし。
この場合、たぶん始めにOnSizeが呼ばれたときはまだコントロールが
無いから、Button.MoveWindowのButtonが無いって起こられてるんだと思う。
OnSize内で
if(Button){
 Button.MoveWindow(・・・);
}
としてみては。

16 : :02/05/19 16:59
上記で動かせました。
起動時にもOnSizeが呼び出されるんですね。
ありがとうございました。

17 :デフォルトの名無しさん:02/05/20 13:59
プロパティシートとタブコントロールについての相談です。
プロパティシートにプロパティページを複数張り付けて表示しています。
そのうちのプロパティシートで最初にAddされたページ(ページのINDEXは0だと思う)
のタブ部分にフォーカスというか、カーソルというか、クリック後のように
文字が点線で囲まれたような状態にしたいんです。
調べたところCTabCtrl::SetCurFocusを使うのではないかと思い、
ページのOnInitDialogでやってみたのですが使い方を間違えているのか、
うまくいきませんでした。何かヒントなどあったら教えてください!お願いします。

18 :デフォルトの名無しさん:02/05/20 14:32
OnInitDialog()がTRUE返してないか?

19 :デフォルトの名無しさん:02/05/20 14:40
TRUEになってました・・・でも、FALSEにしてもやっぱりだめみたいです。



20 :デフォルトの名無しさん:02/05/20 14:44
デフォルトで自動的にPage内のコントロールに
フォーカスが移ってしまうみたいだね。
これを断ち切ればタブにフォーカスがセットされたままになると
思うのだけれど・・・どうしたものか。

21 :デフォルトの名無しさん:02/05/20 15:14
タブ.SetFocus();
タブ.SetCurFocus( 1 );
でだめならPostMessageするしかないかな。


22 :デフォルトの名無しさん:02/05/20 15:35
>21
そうですか・・・ありがとうございました。PostMessageですね。
やってみようと思います。

23 :デフォルトの名無しさん:02/05/20 18:52
CSingleDocTemplateで表示されるメニューの有効/無効などを変更したり、
キャプションを変更するには
どうしたらいいでしょうか?

24 :デフォルトの名無しさん:02/05/20 19:14
一生懸命勉強してもMFCなどもう時代遅れ。
ホントいい加減にして欲しいよなぁ
MFCが行き詰まったとか対応できなくなったとか、そんなんあるか?


25 :デフォルトの名無しさん:02/05/20 19:49
23
何をしたいか書いてないから断定できないが・・・
動的にドキュメントテンプレートのリソースが交換でないし
AfxGetMainWnd()->SetWindowText ( "My Own Title" );
SetMenu();or UPDATE_COMMAND_UIのCCmdUIを使うしかなと思う。


26 :デフォルトの名無しさん:02/05/21 13:54
MFCを使えばWin32APIを生で使った時よりも楽になりますか?

27 :デフォルトの名無しさん:02/05/21 14:08
MFC AppWizardとかClassWizardとか使ってフレームワークの範囲の操作なら全然
楽です。フレームワークの範囲ならC++の知識も大して要りません。
(テストプロジェクトを作って見ればどれだけ楽か判ります)
それ以外は全く同じです。

28 :デフォルトの名無しさん:02/05/21 14:14
ありがとうざいましたm(..;)m

29 :デフォルトの名無しさん:02/05/21 16:53
変形したダイアログウィンドウはどうやって作るんですか?
丸型のウィンドウとか、六角形だとか、もしくは複雑な形のウィンドウです。

30 :デフォルトの名無しさん:02/05/21 16:56
>>29
SetWindowRgn

31 :デフォルトの名無しさん:02/05/21 17:35
有難うございます。

32 :デフォルトの名無しさん:02/05/21 20:55
>26
大して楽になりません。結局Win32APIとMFCの関係を知らないと
困ること多し

33 :デフォルトの名無しさん:02/05/21 23:11
CEditを全選択状態にしたいのですが、
o_edit_control.SetSel(0, -1, false);
UpdateData(false);
これでコンパイルは通るんですが、全選択がされません。
第2引数に5などの数を入れたり、第3をtrueにしてもダメ。
何か他に設定とかありますか?

34 :デフォルトの名無しさん:02/05/21 23:25
なんでUpdateData(false); してんの?
なんでUpdateData(false); してんの?
なんでUpdateData(false); してんの?


35 :デフォルトの名無しさん:02/05/22 00:39
ツールバーにテキストボックスを入れたりするのは難しいのでしょうか?
出来ればスマートな方法をお教え頂きたいのですが。

36 :デフォルトの名無しさん:02/05/22 01:03
>>35
ツールバーの代わりに ReBar を使ってしまうのがスマートかと。

37 :デフォルトの名無しさん:02/05/22 01:25
CToolBarを継承したクラスの中にCEditを持って、OnCreateをオーバーライドするとか。


38 :デフォルトの名無しさん:02/05/22 17:12
>>35
セパレータの幅を指定することが出来るので広めのセパレータを作成し、
その領域にEditを貼り付ける。

39 :デフォルトの名無しさん:02/05/22 19:28
MFCでTreeViewを作成したのですが、一番上の階層にもボタンが表示されてしまいます。
表示しないようにするには、どうしたらいいですか?

40 :デフォルトの名無しさん:02/05/22 19:51
windowのstyleから TVS_LINESATROOT を削除

41 :35:02/05/22 22:11
皆さんサンクスです。
教わったキーワードを元に色々調べてみます。
ありがとうございました m(_ _)m

42 :デフォルトの名無しさん:02/05/22 23:06
アクティブビューってどうやって取得すればええんでしょう?

43 :デフォルトの名無しさん:02/05/22 23:09
google検索
アクティブビューの取得

44 :デフォルトの名無しさん:02/05/22 23:16
CListViewをレポート形式で使ってます。
ビュークラスのOnUpdate()中でサブアイテムを追加しようとすると失敗します。
何か足りないんでしょうか?こんな感じ。
void CPageNumerView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
CListCtrl& listCtrl=GetListCtrl();
listCtrl.DeleteAllItems();
CPageNumerDoc* pDoc = GetDocument();
LV_ITEM listitem;
for(int i=0; i < pDoc->m_PageNo; i++){
int iActualItem;
listitem.mask = LVIF_TEXT;
listitem.iItem = i;
listitem.iSubItem=0;
listitem.pszText=_T("サブアイテム番号0は追加成功");
iActualItem=listCtrl.InsertItem(&listitem);
listitem.iItem = iActualItem;
listitem.mask = LVIF_TEXT;
listitem.iSubItem=3; // ここに0を指定すると正常動作
listitem.pszText=_T("追加されないよー");
      listCtrl.SetItem(&listitem);
}
}
ちなみに何故か同じ処理をOnInitialUpdate()で行うとちゃんと動きます…。

45 :42:02/05/22 23:17
1件しかヒットしねえじゃんと思ってたら答えでした。
ありがとう。氏んでくる。

46 :44:02/05/24 00:34
自前で解決しました。ども。

47 :デフォルトの名無しさん:02/05/24 04:30
>>46
いいえ、どういたしまして。

48 :デフォルトの名無しさん:02/05/24 12:17
TreeViewの+ボタンが押されて、ツリーが展開されるのを判断するにはどうしたらいいですか?
TVN_ITEMEXPANDINGを捕まえれば良いような気もしますが、これって展開か縮小かどっちか判断できませんよね?

49 :48:02/05/24 12:19
すみません、よく調べたらactionメンバで取得できました。

50 :デフォルトの名無しさん:02/05/24 17:05
めちゃくちゃ遅レスだけど
前スレ881のPtInRegionだけど解決したので一応ご報告

If (rgn.PtInRegion(point) == TRUE)

これを
If (rgn.PtInRegion(point) != FALSE)

に変えたら直りました。
こんな落とし穴に1週間悩むなんて....鬱

51 :デフォルトの名無しさん:02/05/25 00:10
最近のこのスレの流行は…「自分で解決」。
ま、人に話してると分かっちゃうってのは実際よくあるけど。

52 :デフォルトの名無しさん:02/05/25 00:26
話すために問題を整理しているうちに..てやつだな。
よい傾向ではないか?

53 :デフォルトの名無しさん:02/05/25 16:55
プロパティーシートを作成して,
ページ1(クラスMyPage1)にEditBoxを置いています.
そのEditboxの値を,
CMyDlgクラス(始めに作成したクラス)のOn_Button()内で使いたいのですが.
クラスが違う時はどのようにEditboxの中身を参照すればいいのでしょうか?

54 :デフォルトの名無しさん:02/05/25 17:00
EditBoxにClassWizardでCString変数を割り当てておくと
public宣言されるので外から参照できます。

55 :デフォルトの名無しさん:02/05/25 17:42
>>50
BOOL だから安心したんだろうけど、MSDN はちゃんと読むもんだよ。

BOOL PtInRegion(HRGN hrgn, int X, int Y);
戻り値
点がリージョンの内側に含まれていたときは、0 以外の値が返ります。
点がリージョンの内側に含まれていなかったときは、0 が返ります。

TRUE が返るとは一言も書いてない。そもそも C 言語で...

if(xxx == TRUE){...

とかくのはどうかと思う。真偽しか返ってこないとわかっているなら...

if(xxx){...

と書いたほうが良いと思う。(まあ、個人的見解だけどね。)

56 :デフォルトの名無しさん:02/05/25 20:06
>>55
漏れは前者の方が好きだが。分かり易くて良いよ。== TRUE

57 :デフォルトの名無しさん:02/05/25 20:07
==TRUEはやめておいたほうがいいだろ・・・

58 :55:02/05/25 20:53
>>56
まあ、>>55 にも書いたが、個人的見解が色々ありそうなところではある。
ただ、>>50, >>57 の通り == TRUE は、色々危ないし != FALSE
と書く余計わかりにくくなると思うが、どうよ ?

59 :デフォルトの名無しさん:02/05/25 22:32
ビットマップファイルを読み込むくらい簡単にJPEGファイルを読み込んで表示する方法ありませんか?

60 :デフォルトの名無しさん:02/05/25 22:33
混乱の元だから==TRUEはやめたほうがいい。
BOOLはboolじゃないんだから。

61 :デフォルトの名無しさん:02/05/25 22:55
「0かそれ以外」と仕様に明記してあるのに
「1かそれ以外」で判定するのはやめてくだちい。

62 :デフォルトの名無しさん:02/05/25 22:58
>>59
OleLoadPicture。これ最強。

63 :デフォルトの名無しさん:02/05/26 00:08
CScrollViewにCEditを配置したいんですけど、
CEditにいったんフォーカスを移してしまうと、ScrollViewをクリックしても
KILLFOCUSされないんですよね。
これ、何か回避方法はあるのでしょうか。要はScrollView上にフリーに
文字列を書いて行くようなアプリを作りたいのですが。

64 :デフォルトの名無しさん:02/05/26 00:34
>>63
ViewにEditって貼り付けるって、その考え方おかしくないか?
あり得ないと思うが。

65 :63:02/05/26 00:49
>>64
そですか?表現が悪いのかなぁ。Winプログラミング初めてなもんで。
フォームビューにエディットボックスを貼り付けるのは普通にやりますよね。
スクロールビューにも貼り付けることは出来たんですけど、
(そもそも、貼り付けるって言う表現は適切なのかな・・・)
編集状態から抜けるためには、ビューのところをクリックしてもだめなんですよね。

66 :デフォルトの名無しさん:02/05/26 00:53
>>64ありえるだろ、いくらでも

67 :デフォルトの名無しさん:02/05/26 01:00
>>65
ウィンドウはクリックしても自動的にフォーカスは受け取ってくれないんじゃなかったっけ?
OnLButtonUpでSetFocusじゃないかな?

68 :デフォルトの名無しさん:02/05/26 01:08
ダイアログの動作
CView →CFormView(Dialog)→CEdit

ビューの動作
CView →CCtrlView→CEditView(Edit)



69 :デフォルトの名無しさん:02/05/26 02:17
>>68
何が言いたいのか解らないのですが・・・

70 :デフォルトの名無しさん:02/05/26 14:19
>>67
解決しました。ありがとうございました。
OnLButtonDownじゃ駄目なんですね。なぜなんでしょう。まだ精進が足らんな。

71 :デフォルトの名無しさん:02/05/26 18:03
CFileDialogでファイル名を複数取得すると、
謎な順番でファイル名が返ってきますけど、
アルファベット順に受け取りたい、時は、
どうすれば良いでしょう?

72 :デフォルトの名無しさん:02/05/26 20:57
>>71 自力でソートするとか。

73 : :02/05/26 22:12
CTreeCtrlに構造体やオブジェクトを登録ってできますか?
ツリーの選択されたノードに登録されているオブジェクトを取得ってしたいのですが。

74 :デフォルトの名無しさん:02/05/27 07:07
SetItemData

75 :デフォルトの名無しさん:02/05/27 21:11
現在、IEへD&DでファイルをアップロードするActiveXをVCで作ろうと考えています。
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dropfile.htmlをサンプルに、
VC6++でMFC ActiveX ControlWizardでEDITを基底クラスにして、DragAcceptFiles()と DragQueryFileでDropを受け取るコンポーネントを作成し、ActiveX Control Test Container で実行したところ、問題なくエクスプローラからファイルをDropすることができました。
しかし、HTMLに貼り付けIE上から同じことをしようとしたところ、このコンポーネントはDropを受け 取ることができませんでした。
もうひとつこのコンポーネントからDialogを開き、それを「ドラッグドロップを許可」で受け取れるよ うにして実験してみても結果はおなじでした。

IEのセキュリティ上の問題なのかとも考えていますが、そういう資料がみつかりません。

76 :デフォルトの名無しさん:02/05/28 21:41
SDIアプリでシリアライズするときに、ファイルの形式が旧バージョンと
変わってるときはおまえらどうしてますか?
 1.旧バージョンのファイルと互換性をなくす
   (このことをReadme.txtなどでユーザに通知)
 2.ファイルの先頭にバージョンを表すコードを埋め、
   読み込み時にそのコードでファイル形式を場合分け
 3.シリアライズ時にスキーマ番号でファイル形式を場合分け

実は3でやろうと思ったらスキーマ番号が反映されなくて困った。
GetObjectSchema()で番号を取得しても4294967295という変な数字しか
返ってこないのです。


77 :デフォルトの名無しさん:02/05/29 09:14
>>76 うちは2やね。ところで実はSetObjectSchemaしてないとか言わんといてくれよ。

78 :デフォルトの名無しさん:02/05/29 10:43
おそらくとてつもなく初心者質問ですが教えてください。
今度はいった会社にVC6.0があります。ソフト屋でないので
誰も使っていません。もちろんMSDNには入っていません。

その古いVC6.0でWin2000命令のColorRGBtoHSLが使えません
おそらくダウンロードサイトいって落としてくれば良いと
思うのですが該当するファイルがわかりませんでした
VCサービスパック5は落として当てていますがダメのようです

前の会社ではVC6.0 Win2000サービスパック(名前うろおぼえ)
というCDがあったのでそれとは思うのですが・・・・

よろしくお願いします


79 :デフォルトの名無しさん:02/05/29 10:50
76
4294967295==0xfffffffだからオブジェクトのバージョン不定とおもわれます。
CXXXDocクラスなんかはDECLER/IMPLEMNT_SERIALしてもクラス情報をファイルに
書き込まないから必ずオブジェクトのバージョン不定になります。



80 :デフォルトの名無しさん:02/05/29 11:30
>>79
てことはCDocumentの派生クラス(つまりAppWizardで生成されるもの)
ではスキーマ番号によるバージョン管理はできないということですか??

81 :デフォルトの名無しさん:02/05/29 12:38
80
何故ドキュメントやビューの子クラスのバージョンがー1になるかは知りません。ですが
ar.SerializeClass()でクラスの情報を強制的に読み書きすればドキュメントクラスも
バージョン管理ができます。(MSDNアンドキュメンテッドです)
そもそもファイルのバージョンという概念がないですから(クラスのバージョンと
いう概念しかない)ファイルバージョンクラスを作って管理するのが正しいやり
かたかもしれません。

IMPLEMENT_SERIAL(CMyDoc, CDocument, VERSIONABLE_SCHEMA|100)//Ver1.00

void CMyDoc::Serialize(CArchive& ar)
{
ar.SerializeClass( RUNTIME_CLASS(CMyDoc) );//親でなく自分のクラス名
if (ar.IsStoring()) {
ar << m_pObject;
} else {
UINT nVersion = ar.GetObjectSchema( );
ar >> m_pObject;
}
}


82 : :02/05/31 16:54
とりあえずVC++6.0で簡単なソフト作りますた。
当然マイPC(Win98)では稼動するわけだけど
これってどのマシンで動くの?

VBの場合ってVBランタイムってのが入ってないとだめじゃん。
他のPCで動かす場合でVC++が入ってない場合
VCで作ったプログラムもこのようなVCランタイムみたいなのが
必要なの?
ちなみに95で起動エラーおこしました。

83 :デフォルトの名無しさん:02/05/31 16:55
MFC限定

84 :デフォルトの名無しさん:02/05/31 17:07
MFC42.DLLとか言うのが必要
もしくわスタティックリンくさす。



とよく確かめもせず答えてみる

85 :デフォルトの名無しさん:02/05/31 17:31
>>82
スマソ向こうに書き込んでた。
http://pc.2ch.net/test/read.cgi/tech/1022402165/720

86 :82:02/05/31 18:23
>>84
>>85
いまいちわからんけど、とにかくありがとう。

えーっとVC++が入っているPCはDLLがはいっていて
普通に作ったデバッグフォルダの中にある完成品単独で動くんだよね。
サブマシンWin98で作ったものがメインマシンXP(VC++インストールしてある)
で単独で動きました。
ただ大学のWin95のVCはいっていないマシンで動きませんでした。
このMFCDLLってのは通常は入っていないものなの?
えーっとスタティックリンクってのもそれっぽいエラーでました
そこをなんとかすれば動きそうなんですけど。
>>85さんのが答えなんだろうけどちょっとわかんないです。
つまりどうしたらいいのでしょうか。バカですいませんです。

87 :デフォルトの名無しさん:02/05/31 19:25
VC++6Pro以上でコンパイルしたならWin95でmy.exeが単独で動くはず。
(VC++.net standard 以上と思う)

スタティックリンクのオプションが通っていて、Win32 Releseになってる
の確認してもうリビルドしてみたら。(my.exeはreleaseのしたにある)

もしかしたらスタテックライブラリが(コンパイルマシンに)インストールされて
ないかもしれないからその時は、ライブラリをインストールするか、
他のWin95or98機からMFC42.DLLをそのWin95機のwindows\systemフォルダー
にコピーするだけでMY.exeが動くようになると思うけど。(未確認)

88 :デフォルトの名無しさん:02/05/31 20:16
きょうび95ユーザーはいないだろうから
まあ無理して95でうごかすつもりはないけど
みなだんはVC++で作った作品を公開する場合、
どうしてるんですか?98、Me、XPで動くようにするために

89 :デフォルトの名無しさん:02/05/31 20:29
スタティックリンクでコンパイルしたらどんなエラーが出たの?

90 :デフォルトの名無しさん:02/05/31 21:14
えと、壁紙を変更するプログラムを作りたいと思ってます。
で、その壁紙で使用するJPEG画像をプログラム中に埋め込んで、ユーザが
用意せずにボタンを押すだけで変更できるようにしたいのですが。
プログラムに画像を埋め込んでそれを使用できるようにする方法はどのようにしたらよろしいでしょうか?
色々WEBで調べてみたのですが、検索の仕方が悪いのか、全然わかりません。(TT

91 :デフォルトの名無しさん:02/05/31 21:33
CString型に代入した文字列は、何文字かであふれるわけですよね。
どうすれば莫大な文字列を格納できるでしょうか?

92 :y2kbest@k9.dion.ne.jp:02/05/31 21:41

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7100 円に設定して
おります。

購入希望の方は、名前の所にも書いて
ある、y2kbest@k9.dion.ne.jp 迄、
メールを下さい。

不安な方は、落札をして頂いても
構いません。

93 :デフォルトの名無しさん:02/05/31 21:42
>>90
res://ファイル名
形式でリソースにアクセスできたはず、
ドキュメントは・・・どこで見たか忘れた。
res://C:\WINDOWS\System32\shdoclc.dll/dnserror.htm

それが壁紙に使えるかどうかは知らないけどね。

94 : :02/05/31 23:48
ダイアログベースのアプリケーションについて質問です。

1.プロジェクト名"Test"でダイアログアプリケーションを新規作成する。
2.リソースエディタでプッシュボタン(ハンドラ:OnButton1)を作成する。
3.それぞれのソースに下記を追記。
 ・TestDlg.h
   class CTestDlg : public CDialog{
   private:
     CWinThread* mpThreadList;
   };
 ・TestDlg.ccp
   extern UINT gThread (void* pParam);
   void CTestDlg::OnButton1(){
     mpThreadList = AfxBeginThread(gThread ,this);
   }
   
   UINT gThread (void* pParam){
     UINT i,j=1;
     for(i=0;i<30000000;i++){
       j *= j; j /= j; j++; j--;
     }
     AfxEndThread(0);
     return j;
   }
4.上記を実行し作成したプッシュボタンをクリック。
不具合)
 gThreadの実行中にダイアログを閉じるとメモリリークが発生する。

上記のようなメモリリークが起きて困っています。
どのように記述すればよいのでしょうか?

95 :デフォルトの名無しさん:02/06/01 03:32
#defineの代わりにconst int NUM = 20;
とやったら純粋仮想関数の定義が間違いだとえらーがでます=0とやれと。
なんで??

96 :デフォルトの名無しさん:02/06/01 04:20
よーし今日こそはパパ、MFCやっちゃおうかな〜

97 :デフォルトの名無しさん:02/06/01 04:38
>>91
生ポインタを使う。
>>94
気づいたとこだけ
AfxBeginThread(gThread ,this)にはCWnd*を渡さないほうが
よいといわれている。
AfxEndThread(0);
return j; <-これは実行されない気がする。
あとメモリリークはオートデリートするフラグとかの関係かも

以上適当に書いてみました。バーカバーカ

98 :デフォルトの名無しさん:02/06/01 05:11
>>91
あふれそうになったら、勝手に伸ばしてくれるので気にしなくてよい。

99 :デフォルトの名無しさん:02/06/01 05:27
CStringは
INT_MAX-1
まで。それ以上は使えません

100 :デフォルトの名無しさん:02/06/01 05:34
上限まで使う心配もなさそう。。

101 :デフォルトの名無しさん:02/06/01 06:37
>93さん
ありがとうございました。
どうやら、壁紙には使えないようです><

ファイルをハードにコピッて使えるかどうか試してみます。

102 :デフォルトの名無しさん:02/06/01 10:17
>>95
VCのバグ。.NETでは直ったらしいけど。

103 :カメルーン代表:02/06/01 10:37
ウィンドウズによく入っているGAMEPACKみたいな
カラフルで絵とか使ってなめらか動画のゲームって
VCでつくれます?

あのピンボールとかのなめらかなアニメ−ションはどうやって
やっているんだろう。
あと、音のならしかたわかんない。

104 :デフォルトの名無しさん:02/06/01 11:17
VC++で作れますがカメルーン代表には難しいと思います。

105 :デフォルトの名無しさん:02/06/01 12:55
他のスレでも書き込みましたが、ぜひ相談に乗ってください。
VBで「Dim WithEvents obj???? 〜」って宣言すると、COMコンポーネントの
イベントを受け取れるじゃないですか。
このコンポーネントをVCで動かそうとしています。
VBで出来る事がVCで出来ないわけがないと思っていましたが、いわゆる
インタフェイスクラス側のインプリメントは簡単に出来るんですが、
イベントハンドラ側がうまく実装できません。
タイプライブラリを指定して同コンポーネントのクラスを自動生成させた
のですが、ヘッダファイル上でプロトタイプを確認すると、「引数の型が
あいまいでメンバを実装できません」みたいな表示がされて、イベント
ハンドラが加えられていません。ここでひとつ質問。

1、vテーブルが存在するものとしてviatual宣言の上メンバ関数を書き加えて
意味があるのでしょうか。

そこからイベントをキャッチする場合、

2、生成されたクラスを派生させて、イベント割り当て関数をオーバーライド
すれば、イベントをキャッチできるのでしょうか?

インタフェイス側のクラスはCoRegisterClassObject関数でハンドシェイク
出来ましたが、イベントハンドラ側は「クラスがない」といった風なエラー
が発生します。

3、COMコンポーネントの設計の問題でしょうか?それともクライアント側の
コーディングの問題でしょうか?それとも他に?

COMコンポーネント側もある程度ソースレベルでの融通が効きます。
以上3点の解決について知恵をいただければと思います。
よろしくお願いします。

106 :デフォルトの名無しさん:02/06/01 13:23
>>105
マルチポストですか。いい度胸してますね。
あなたの投稿はネタとして受け止められ、マジレスは一つもつかないでしょう。
マルチポストさえしなければねえ・・可哀想に。

107 :デフォルトの名無しさん:02/06/01 13:26
>>106
ネタにしたいのはあなたであって、板の総意であるような書き方はお控えください。

108 :デフォルトの名無しさん:02/06/01 13:38
>>107
いくら質問に答えてほしいからってバレバレの自作自演は止めろ(藁

109 :デフォルトの名無しさん:02/06/01 13:43
106=108ですね。こういうのは自作自演とは言いません。
これを「自作自演」と称するのはあなただけであって、板の総意であるような書き方はお控えください。

110 :デフォルトの名無しさん:02/06/01 15:23
105=107=109ですね。こういうのは自作自演とは言いません。
これを「自作自演」と称するのはあなただけであって、板の総意であるような書き方はお控えください。
ついでにどう言い繕おうがマルチポストは全否定されます。

111 :デフォルトの名無しさん:02/06/01 16:44
>>110
よっぽど悔しかったんだな(w
逝ってる(w

112 :デフォルトの名無しさん:02/06/01 18:27
>>86
遅レスをぶちかましますが、きっとデバッグ版だから動かないのでは。
他のマシンへ持ってくものを作るにはリリース版をビルドしましょう。

113 :デフォルトの名無しさん:02/06/01 18:32
エラーの内容も書かないバカはほっとけ

114 :デフォルトの名無しさん:02/06/01 19:18
>>78
おそらく古いヘッダとインラインライブラリ(及びヘルプマニュアル)しかなくて
使えないのだとお察しします。ハズしていたらスミマセンが。
新らし目のAPIを使用するには、新しい「プラットフォームSDK」が必要になりま
す。その中に必要なヘッダとインラインライブラリが含まれてきます。最新版な
ら問題なくAPIを使えるはずです。「プラットフォームSDK」は、MSDNのサブスク
リプションを購入すれば送られてきます。サブスクリプションも何種類かありま
すので、必要なものはどれかは調べてみてください。

あとね、自分で関数アドレスを取得する方法もあります。LoadLibrary,
GetProcAddressを調べてみんさい。

115 :デフォルトの名無しさん:02/06/01 19:23
MSサイトからDLさせずに購入させるとは
さてはMSの回し者だな?

言ってみただけだ。いわゆる一つのテストだからおーこーるーなーやー

116 :114:02/06/01 19:31
>>115
すみません、DLできるんですね?当方、送られてくるCDでしか使用したことが
なかったので知りませんでした。つうか、ダウンロード センターで検索したん
ですが、それらしいものがなかったのですよ。他のSDK(DirectX,WMI等)は
見つかったのですが・・・。
もしよろしければ、アドレスを教えてください。

117 :デフォルトの名無しさん:02/06/01 19:39
たぶん他のSDKと同じところだと思うけど・・・
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

118 :114:02/06/01 19:54
>>117
このCoreSDK(231.7 MB)ってのがそれらしいですね。でもなぜかDL出来ない。
SDK Update controlてのが必要な様ですが、指示どうりにブラウズしても
インストールできないような。他ではDLできてますか?

119 :デフォルトの名無しさん:02/06/01 20:25
>>86
遅レスですが、MFCDLLは、動かす環境にあらかじめあるという前提は
立てないほうが良いです。入っていてもバージョンの古いMFCDLLなら自分の
EXEは動きません。(バージョンが違えば、ファイル名が違うことが多いので)

ちなみに、自分のEXEがリリース版ならリリース版の、デバッグ版ならデバッ
グ版のMFCDLLがそれぞれ必要になります。

自分のEXEに必要なDLL(MFCDLLも含む)を調べるのは、VC++6.0付属の
Dependency Walkerてのを使用して、自分のEXEを開きます。
依存するDLLが一気に分かり、便利ですよ。

120 :デフォルトの名無しさん:02/06/01 21:38
Debugビルドしたモジュールは配布しちゃいかんよ。


121 :デフォルトの名無しさん:02/06/01 21:44
>>120
Debug版のMFCDLLは再配布禁止です。
が、Debugビルドしたモジュールは場合によっては良いと思われ。

122 :デフォルトの名無しさん:02/06/01 22:30
>>118
とりあえずScriptとかActiveXはオンだよね。
あとAdministrator権限と。
俺がDLしたのはかなり前だからなぁ・・


123 :118:02/06/01 22:51
>>122
>とりあえずScriptとかActiveXはオンだよね。
>あとAdministrator権限と。
うーんおかしいなぁ。今トラぶってるのかもしれませんね。
きっとそのうち出来るようになるでしょう。多分。
とりあえず、thanks!


124 :デフォルトの名無しさん:02/06/02 13:07
パフォーマンスが必要なアプリの場合、MFCは静的リンクのほうが
良いのですか? 動的リンクでも速度は変わらないですか?

125 :デフォルトの名無しさん:02/06/02 15:26
なんで試しに測ってみないんだこいつ
なんで試しに測ってみないんだこいつ
なんで試しに測ってみないんだこいつ


126 :デフォルトの名無しさん:02/06/02 20:48
>125
StandardEditionは動的リンクが出来ないのよ。
速度期待できるなら新しいの買おうかと思って・・

127 :126:02/06/02 20:49
間違えた静的リンクが出来ないの


128 :デフォルトの名無しさん:02/06/02 22:33
MFCに関して言うと、GUIのフレームワークとして使っているなら
動的だろうが静的だろうが速度に差は出ない。
出たとしても計測誤差に収まる範囲しかでない。


129 :デフォルトの名無しさん:02/06/03 11:50
あるクラス情報をレジストリに保存したいのですがどうすれば良いのでしょうか?
ファイルに保存するならCArchiveメンバ関数を使えばできるのですが、
レジストリに保存/復元したいのです。

130 :デフォルトの名無しさん:02/06/03 12:24
129
ぐぐる
 レジストリ VC

・・・そもそもレジストリはストリームな構造でもないし、少量のデータしか
  保管できない。

131 :デフォルトの名無しさん:02/06/03 13:15
レジストリAPIの使い方を知りたいのではなく
また、データ量も数百バイトと少量です。


132 :デフォルトの名無しさん:02/06/03 13:45
CRegArchive ar; // 自作する

if ( ar.IsStoring() )
 ar << m_data;
else
 ar >> m_data;

133 :105:02/06/03 18:42
ATL COM コンポーネントのイベント取得についておうかがいをたてたもの
ですが、方法がわかりました。
見当違いもはなはだしい状況でした。
ありがとうございました。

134 :94:02/06/04 00:38
>97
コール先のダイアログを操作するのでCWnd*(CTestDlg*)を
渡したいのですが、とりあえずchar*を渡すようにして試し
たところやはりリークが起きました。
現在はOnCancel()をオーバーライドして、スレッドが生き
ている間はダイアログを閉じられないようにして暫定対策
しています。
進展あればまた報告します。

135 :デフォルトの名無しさん:02/06/04 00:48
>128
便乗質問ですが、CStringなど使ってバリバリ重い計算してい
る場合はパフォーマンス変わってきますか?
(ちなみに俺はVC6アカデミックエディション)

136 :デフォルトの名無しさん:02/06/04 01:55
CStringでばりばり計算というのがさっぱり想像付かないが、
計算結果を文字列にしてダイアログアイテムに対してDDX_とかしてるなら、
その数、その頻度が増えるほど、処理は遅くなる。

これはCStringが遅いのではなく、CPU内で完結する演算処理と、
書式化した演算結果を画面に表示するのにかかる時間が
比べものにならないくらい遅いため(普通の人間にはその差は分からないが)。

演算の経過表示を全部画面に対して行うと、MFCを使わなくても死ぬほど遅くなる。

試せるなら、
1. 演算10万回->経過表示10万回
2. 演算10万回->経過表示を間引いて100回
3. 演算10万回->結果表示1回
を比べてみなさい。

で、MFCのDDX_による画面表示が遅いのかといえば、
Win32APIを使って表示を行うのに比べてよけいな処理が増えている分遅い。
がしかし、普通の人間が見る分には、何百回〜何千回もの表示処理を行わ
なければ大した違いは体感できない。

表示処理は、MFCに限らず重い。
間引けるものなら間引きなさい。

それでも重いなら、計算中に行っている重い処理、特に
メモリ確保、クラスのインスタンス生成、ファイルIOなどの
回数を減らせるように、計算のアルゴリズムを変更しなさい。

MMXだとかそんな姑息な最適化をする前に、
設計段階でやるべきことはたくさんあるのだ。


137 :デフォルトの名無しさん:02/06/04 01:57
厳密にはDDXそのものが表示処理を行うわけではないが、
とりあえずそんなもんだとおもっとけ。


138 :デフォルトの名無しさん:02/06/04 12:30
>>135
CStringで書いていた処理を charに置き換えたら、リリース版のファイルサイズが
ばっさり減ったし、実行速度も速い。
アカデミック版ということはリリースビルドはできないけど、デバッグ版のほうが
検証コードとかも入っている分、CStringの重さが効いてくるんでない?

139 :デフォルトの名無しさん:02/06/04 12:50
>>138
アカデミック版ってリリースビルドも出来ないのか・・・。
最適化が無いとは聞いていたが。

140 :138:02/06/04 13:06
>>139 あ、そうでしたっけ?

141 :139:02/06/04 18:31
>>140
うん、最適化は無いはず。記憶違いだったらスマソ。

142 :デフォルトの名無しさん:02/06/04 18:43
>>135
「CStringを使って重い計算」っていうのがよくわからないけど、
文字列の編集ってことだったらCStringは重いよ。

数十キロ〜数百キロの英文を、メモリに持っておいて、単語を置換したり
連結をしたりする処理を、やったことあるんだけど、
CStringをstd::stringに置き換えただけで、劇的に速くなったよ。

143 :デフォルトの名無しさん:02/06/04 19:46
VC++を使ってプログラム組むときに
MFCは使ってられない、
WIN32を組み合わせてプログラムをしてはいけない
と聞きましたが本当でしょうか?
本当なら全部自分で作るしかないのですがそんな効率の悪いことはしてるのでしょうか?

言った人曰くプロなら当たり前といってました

144 :デフォルトの名無しさん:02/06/04 20:09
どうせゲームプログラマだろ。

145 :デフォルトの名無しさん:02/06/04 20:10
>>143
プロならMFC使うのが当たり前
ゲームなら(以下>>144

146 :143:02/06/04 20:12
ガセネタであったと。
でもゲームならDirectXは?
あれは違うのですか、と思いながらスレ違い、板違いになりそうだ

147 :デフォルトの名無しさん:02/06/04 20:27
>>146
MFCが必要ならば使うし、そうでなければ使わないと思う。
実際、MFCがあると開発効率は良くなる。
しかし、特別な理由で(他プラットホームへの移植を考慮するとMFC
のライブラリコードに依存したくないとか)使わないこともあるだ
ろう、とマジレスしておく。
スマソがゲームのことは分からんぜよ。

148 :143:02/06/04 22:02
お答え頂いた方々ありがとうございます。
確かに楽になる部分はありますしね>>MFC
また何かありましたらよろしくお願いいたします。

149 :デフォルトの名無しさん:02/06/05 00:28
ゲームの場合MFCはほとんど使わないよ。
型から外れるせいでVC++のウィザードが役に立たないし、
ウィンドウはたいていシンプルなやつが一つだし、
ブラシやペンを使って描画することもない。

150 :デフォルトの名無しさん:02/06/05 00:44
アカデミック版はリリースビルドできることを一応明記しておこうっと。

151 :135:02/06/05 01:25
いろいろな方アドバイス有難うございます。
速度が必要なときはCStringを使わずにcharなどを使って
記述した方が良いということですね。
あと私がVC6購入したときの(1.5年前)アカデミックエディ
ションは、スタンダードエディションと全く同じ内容なので、
139さんの言う通りリリースビルドは出来ます。
詳しくはMSDNライブラリの
VC++ドキュメント
  +--VC++6.0の新機能
   +--VC++の各Edition
    +--VC++の各Editionの比較
を参照ください。

152 :デフォルトの名無しさん:02/06/05 02:10
CListCtrlのSubItemHitTestメソッドって、もしやVC++6以降のみですか?
VC++5だとコンパイルエラーになって、ヘルプにもそんなメソッドのってないのですが。

153 :デフォルトの名無しさん:02/06/05 02:18
トロンって仕様のみじゃないの?
実装は別物。日本人が実装すれば早いだろうが。
あと漢字関係あんの?

154 :デフォルトの名無しさん:02/06/05 02:18
誤爆です。。

155 :デフォルトの名無しさん:02/06/05 04:17
>>152
無かったら、SendMessage(LVM_SUBITEMHITTEST)したら?

156 :デフォルトの名無しさん:02/06/05 14:22
VCで作ったプリグラムは、スタティックリンクして単体で動くようにしては配布するのか、
あるいはMFC.dllを別途附属させておくのか、どっちが常識?

また、そのスタティックリンク、dllについて詳しくわかりません。
このへんどうしたらいいのかも教えてくだされ。

参考までに
http://www.ne.jp/asahi/yamashita/programming/tips/vcpp_faq.html#tips0003


157 :デフォルトの名無しさん:02/06/05 14:31
http://member.nifty.ne.jp/hayazo/faq.html
もういっこ参考。

最近のパソコン(ウィンドウズ98が最初から入ってるモデル、ペン2世代くらい)は、
「MFC42.DLL」 「MSVCRT.DLL」
は最初から入ってるもの?ほんとどPCはいってる?

配布するときは「DLLがないひとは、ここからDLしてください」
ってリンクはっとけばいいのかな。

158 :デフォルトの名無しさん:02/06/05 15:03
お金がないので、cygwinでプログラムの勉強をしたいと思うんですが、
こういう場合でも、何かのC言語のソフトを購入しないとダメなんでしょうか?

メモ帳とかでプログラムって組めないんですかね?

いや、ほんとにお金がないもので・・・

159 :デフォルトの名無しさん:02/06/05 15:24
157
基本的にMY.EXE単独のときは、インストール簡単だからスタテックリンクかな。
ちなみに小さなSDIアプリケーションでダイナミックが30K、スタテックが300Kほど
ダタ。だからネットでのDLが前提だと両方コンパイルして容量を比較して決めた
ほうがいいかも。
MY.EXE、MY1.DLL、MY2.DLL・・・がそろぞれMFCを持つときはダイナミックか
スタティックを検討しよう。

ちなみにOSが古いとき(95)、MFC42.DLLのバージョン不適合(?)だと
「システムに装着されたデバイスが正常に動作してません・・・」など
というメッセージが出でるから、ユーザがパソコンを破壊しかねないので、
ダイナミックでEXEを配付するときは注意。

160 :デフォルトの名無しさん:02/06/05 15:29
俺は一応スタティックリンク。

ただしVC++.NETではスタティックリンクしてもWin95で動かないので注意しよう。


161 :デフォルトの名無しさん:02/06/05 15:41
>>159
それです。
じつはいま大学や自分のいろんなパソコンでためしてるのですが、
98(これで作成)、XP各マシン(自作マシンやら製品版富士通NECなどいろいろ)
で全部動いて95だけ「開始エラー」と出て、作動しませんでした。
まあ、95は非対応とすればいっか。今日び使ってるひとなんていないし。98以上ということで。
逆に98以上はどうやらほとんどのPCにDLL入っているみたいです。
そんでやっぱ別にしようかなと。
配布するときは安全を考えて、

自分の作成したdebugフォルダの中にある my.exe(これが完成品なわけですよね?)
を単品で
プログラム→「ダウンロード」みたいなかんじにして
それに
「このプログラムはMFC.dllが必要です。ない人は以下からDLしてください」
http://www.vector.co.jp/soft/win95/util/se040499.html

ってのでいいのですか?。つーかベクター直リンOKだったっけな?

162 :デフォルトの名無しさん:02/06/05 15:44
>自分の作成したdebugフォルダの中にある my.exe
配布するのが目的なら違います。
リリースビルド版を配布してください。

163 :デフォルトの名無しさん:02/06/05 15:48
スタティックリンクにしてもいいと思うけどなぁ。
せいぜい数百KBくらいでしょ?


164 :デフォルトの名無しさん:02/06/05 15:49
>>161
VC6でフリーウエアを作って配布してるんだけど、
何人かから MSVCP60.DLL がどうしたとかってエラーが出て
起動しないって報告が来てから、スタティックリンクで配布
するようにしてる。


165 :デフォルトの名無しさん:02/06/05 16:04
>>162
初めてしりました。勉強になった。
リリースビルドだとシンボリック デバッグ情報は取り込まず 実行速度を最高速化するんですね。

あとバカ質問なんですが、スタティクリンクの方がいいとのことなんで
やってみようと思うのですが、検索してもいまいちわかりやすいサイトが
ありません。スタティクリンクのやりかたのおすすめのHPってありますか?
肝心なやりかたをしらないんですよ。

166 :デフォルトの名無しさん:02/06/05 16:08
>>165
> リリースビルドだとシンボリック デバッグ情報は取り込まず 実行速度を最高速化するんですね。
というか、デバッグビルドだとデバックビルド用のDLLが必要で、
このDLLはVCを持ってない一般の人は普通持ってないので動きません。
さらにこのデバッグビルド用DLLは再頒布不可なので配布もできません。
ゆえにリリースビルドします。

> スタティクリンクのやりかたのおすすめのHPってありますか?
>>156に載ってまっせ。

167 :デフォルトの名無しさん:02/06/05 16:15
>>166
ありがとう!
つーかデバックとリリースコンパイルの違いをしらなかったのって
俺だけ・・?スゲー基本的で大切なことなんだからもっと
参考書はこーいうことも大きく書いて欲しいもんだ。
ほとんどの本は完成したものをその後どうするかなんて書いてないもんね。

たすかりましたー。
一般配布する完成品とは
「リリースでコンパイル&スタティクリンクしておく(特別軽くしたくなければ)」
のがいいんですね。

168 :デフォルトの名無しさん:02/06/05 16:17
そういうこってす。


169 :デフォルトの名無しさん:02/06/05 16:33
> ほとんどの本は完成したものをその後どうするかなんて書いてないもんね。

言われてみれば確かに

170 :デフォルトの名無しさん:02/06/05 16:35
>158
リナックスにしる!

171 :デフォルトの名無しさん:02/06/05 16:36
>>170
マルチ厨はほっとけ

172 :デフォルトの名無しさん:02/06/05 16:57
リストビューにファイルをドラッグ&ドロップしたいのですが、
リストボックスだと行けるのに…、リストビューだとダメなんです。
どうしてなんでしょう?
教えてください。または参考になるHPを教えてください。お願いします。
m(_ _)mペコリ

173 :デフォルトの名無しさん:02/06/05 19:56
>>172
DragAcceptFiles

174 :デフォルトの名無しさん:02/06/06 10:18
>>167です。
緊急事態です。
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_EXEdll.html
の方法でスタティックリンクしようと思ったら
コンポボックスの中にスタティックリンクがありません。
「共有DLLでMFCを使用」しかないです。
ひょっとしてこれってVC++6.0スタンダードエdィションだとできないのですか?

175 :デフォルトの名無しさん:02/06/06 10:36
今しらべたらやっぱダメみたいだ。
無料でVCスタンダードエディにスタティックリンク機能を
追加するソフトはないの?パッチとか

176 :デフォルトの名無しさん:02/06/06 11:39
おれは実行ファイルに埋め込まれるデータを消去するソフトが欲しい。


177 :172:02/06/06 11:51
えっと。ListViewにファイルをD&Dするプログラムはできたんですが…
リストのソートが入っているせいか、リスト追加時にコラム0とコラム1のデータがずれてしまいます…。
リスト追加時だけ一時的にソートを停止する為に、ソートの可・不可を設定するための関数って無いですか?

178 :デフォルトの名無しさん:02/06/06 11:57
174
スタテックリンク
VC.net standard には付いてるけどVC6には無いのか?
(インストールしてないだけとか)

179 :デフォルトの名無しさん:02/06/06 12:08
>>175
tai-ho

180 :デフォルトの名無しさん:02/06/06 12:17
>>178
え?あるの??ないっぽいぞ。


181 :デフォルトの名無しさん:02/06/06 12:24
VCのStdってMFCのソースはついてねーのか?

182 :デフォルトの名無しさん:02/06/06 13:00
181
VC.net standard にはMFCソース付いてくる。
VC6はenterprise使ってるので知らん。

183 :デフォルトの名無しさん:02/06/06 14:23
>>182
VC.net standard どうよ。安くて魅力的に見える。
個人的には最適化が無いのはあまりマイナスにはならないと思うので。
professionalなんていらない?

184 :デフォルトの名無しさん:02/06/06 14:32
>>177
一時的にリストビューのスタイルビットをいじってみるのはどうだろう。
ドラッグが終わったらちゃんと元に戻してさ。
SetWindowLong,LVS_SORT〜を調べてみんしゃい。

185 :182:02/06/06 15:22
VC.net standardについて
普通のアプリケーションを作成するのに機能不足とか全然感じない。
ツールウィザードも一通りある。
VC.netに限らずVS.netはIDEの使い勝手と見てくれが全然違うからかなり戸惑う。
あと.NETのため(?)VS6に比べてメモリとHDを馬鹿食いする。

186 :デフォルトの名無しさん:02/06/06 15:25
>>185
レス、thanks!
やっぱ値段以上の機能なんだね。ただ、.NETは重いのが玉に瑕、と。
自分の環境と相談しながら検討してみるよ。

187 :デフォルトの名無しさん:02/06/06 20:32
>>185
どれぐらいのスペックがないと厳しいの?

188 :デフォルトの名無しさん:02/06/06 20:57
VC6.0のヘルプより抜粋
Standard Edition 上級者向け Visual C++ ツール セットを使いなが
ら、C++ 言語を学習します。Standard Edition には、Professional
Edition の機能がほとんど揃っています。コードの最適化、プロファイラ、
MFC ライブラリの静的リンクの 3 機能だけがありません。

189 :デフォルトの名無しさん:02/06/06 21:55
単純な電卓ソフトを作れといわれました。
でも作り方がわからないのです。
ソースあるところとか知りませんでしょうか?
何とか解読したいのです…
ffftpの作者の電卓は複雑すぎます…

190 :デフォルトの名無しさん:02/06/06 21:57
VCじゃなくVBレベルでも作り方わからんか?
わからんなら諦めた方がいい。

191 :デフォルトの名無しさん:02/06/06 22:04
結局言語ではないと思うんですよ、自分の悩んでいるところ。
ソースどうやるん、と思います...
最後のチャンスをください。

192 :デフォルトの名無しさん:02/06/06 22:05
電卓のソースどう書くんでしょうか?
コマンドプロンプトでもかけません。

193 :デフォルトの名無しさん:02/06/06 22:06
>>189
MFCcalc。VC++6.0のサンプルに入ってる。

194 :デフォルトの名無しさん:02/06/06 22:07
有難うございます

195 :デフォルトの名無しさん:02/06/06 22:10
>>191
俺はお前が分らないヨ!
普段は何語を使ってらっしゃるんですか?
慣れない日本語は使わないほうがいいと思うヨ!

196 :デフォルトの名無しさん:02/06/06 23:23
>189 >192 >194
誰が何のために君に電卓作れと言ったんだ?
レスを見る限りはっきり言って現在の君では193を解読
するのは難しいと思う。
電卓勉強するより理不尽なことを言う奴を説得する勉強
をするべし。

197 :デフォルトの名無しさん:02/06/06 23:25
電卓[の機能をもったアプリケーション]のソースはどう書くのでしょうか?
コマンドプロンプト[上で動作する、GUIを持たないタイプの単純なもの]でも書けません。

198 :デフォルトの名無しさん:02/06/06 23:41
>197
ttp://www.kumei.ne.jp/c_lang/
ここあたりでC++の基本からどうぞ。

199 :デフォルトの名無しさん:02/06/07 00:10
>>197
俺はてっきりコマンドプロンプト上でプログラムを書くつもりだったのかとおもたよ。

200 :デフォルトの名無しさん:02/06/07 00:18
確かにね。でも本人がソースを所望のようだからそれで良いんじゃない?


201 :193:02/06/07 00:23
一応電卓だが、実はOLEサーバーのサンプルという罠。
ちょっとだけ複雑だったかも知れん。
他に思いつかなかったのだ、すまそ。

202 :デフォルトの名無しさん:02/06/07 00:30
VBなら初めてVBさわってから1時間くらいでできたよ

203 :デフォルトの名無しさん:02/06/07 01:13
>おれは実行ファイルに埋め込まれるデータを消去するソフトが欲しい。
な、なにかやばいものが埋め込まれちゃうんでしょうか?

204 :デフォルトの名無しさん:02/06/07 02:15
>>203
ビルドした環境のプロダクトID、ユーザー名、ネットワーク接続があるときは
そのときのIPアドレスなどが、コンパクトなバイナリになって、実行ファイル
に分散して埋め込まれます。

205 :デフォルトの名無しさん:02/06/07 04:14
はっきり言って電卓ソフトつくるぐらい技量があれば
そうとうです

206 :デフォルトの名無しさん:02/06/07 06:16
>>205の言うことは本当ですか?

207 :デフォルトの名無しさん:02/06/07 07:51
>>206
>>205は宿題で電卓作れって言われて作れなかったんでしょ。

208 :デフォルトの名無しさん:02/06/07 08:59
>>204
本当なのか・・・!かなりやな感じですね。ひょっとしてウィルス対策かね。
できれば、情報ソースとか詳細キボンヌ。

209 :デフォルトの名無しさん:02/06/07 09:04
>208
割れ対策だろ。

>206
本当です。電卓は結構高度です。字句解析、再帰、、、設計力が必要です。
世の中のプログラマーは設計もせずtry&errorの力業で何とかプログラムを仕上げるヤツだらけです。


210 :193:02/06/07 09:18
>>209
>字句解析、再帰、、、設計力が必要です。
これはコマンドラインか、エディットボックスで逆ポーランド記法入力する
タイプの電卓でしょ?
GUI電卓は割と簡単に作れそう。VBなら、さらなり。

211 :デフォルトの名無しさん:02/06/07 09:20
>>209
>割れ対策だろ。
???ハッキングツールの出所を特定するって言う意味?

212 :デフォルトの名無しさん:02/06/07 09:21
>>209
数式入力する程度なら簡単に作れますが。

213 :デフォルトの名無しさん:02/06/07 09:32
電卓程度の構文解析で「相当」扱いされてたら身が持たん。

214 :デフォルトの名無しさん:02/06/07 09:32
>>209
その程度で高度といわれても・・・(´ー`;)

215 :デフォルトの名無しさん:02/06/07 09:56
>211
VC++のピーコだろ。


216 :デフォルトの名無しさん:02/06/07 11:08
誰か逆ポーランドの電卓製作して公開してみてよ。
>209あたりが製作して公開してくれるとみんな納得すると思うし。
>209もこのままあおられて終わるのも面白くないでしょう。
どうよ、おめぇら

217 :煽りじゃないよ:02/06/07 11:10
スーパープログラマ求む
(なんて募集に応募してみようかな。今日代休でひまだし)

218 :209:02/06/07 11:14
>216
ハァ?
それをいうなら簡単を連発してる奴らだろ。

219 :216:02/06/07 11:17
>209
私はあなたの実力を知りたい。
出来るのなら出せるはずでは...
別にVBでもよいですけど。

220 :デフォルトの名無しさん:02/06/07 11:18
>>216
検索すれば簡単に見つかりそうなもんを、
「作れ」って煽っても…

221 :209:02/06/07 11:19
オレ様は簡単に作れるがここでそんなもん簡単だと
豪語する連中が先ず作るべきだな。


222 :216:02/06/07 11:26
>>220
209は作れるのかな?
209は本当に楽といっている奴らが作ったら作る機あるのかと、小一時間(略

223 :193:02/06/07 12:00
つーか、そんなことで喧嘩するなYO・・・。
みんな、自分の腕にプライドを持っているからこそ、なのかな・・・。

224 :デフォルトの名無しさん:02/06/07 12:03
>>215
とりあえず情報ソースと詳細キボンヌ。

225 :デフォルトの名無しさん:02/06/07 12:50
お前ら電卓程度で何をそんなに熱くなってるんだよ(w

226 :デフォルトの名無しさん:02/06/07 12:52
せっかく今スレから>>2-3に参考サイトと書籍を載せたんだからちょっとは見て欲しいと思う。
「MFCによるWindowsプログラミング」P485
ダイアログアプリのサンプルとして逆ポーランド記法電卓が載ってる。
MFCスレだしちょうどいいサンプルだと思われ。

227 :デフォルトの名無しさん:02/06/07 14:06
質問です
一般的に
とりあえずC++の言語仕様は知っているかも(はじめてのC++とかで学んだ)
なんていう甘い考えの人間がVC++を使ったら何ヶ月くらいで物になると思いますか?

Windowsのプログラムは
VM_hogeなどのメッセージが来てそれに対応するOnhogeというメンバ関数に処理を記述する
などのさわりしか知りません。

1 プログラムできるというのはAPIやクラスライブラリを理解していて、
2 言語仕様を知っていて、
3 開発ツールを使える
ことかとおもいますが
3は特に問題ないと思います。

なめきった質問かもしれませんがよろしくお願いいたします。

228 :デフォルトの名無しさん:02/06/07 14:33
VM_hogeって何ですか?


229 :デフォルトの名無しさん:02/06/07 14:34
>>227
ウイザードが作る雛型をベースに作る程度だったら、
チュートリアルとかサンプルをがんばって勉強すれば
そんなに時間はかからないと思う。

ExcelみたいなUI作るとなると、スゲーたいへん。

230 :227:02/06/07 14:37
>>229
有難うございます
>>228
WM_PAINT OnPaintなどのことです、手抜きしてすみません。

231 :デフォルトの名無しさん:02/06/07 14:41
>>227
作る内容によって大幅に変わるでしょうね。
1.Windowsのメッセージベースプログラミングを理解する。
(コンソールベースのプログラムしか作らないなら必要なし)
2.Windowsの流儀(APIの使い方など)を理解する。
(MFCを使えば、場合によっては必要なし、いや必要か。)
3.MFCなどのクラスライブラリなどを理解する。
(使わないなら当然必要なし。)
4.言語ツールに習熟すること。
5.技術情報を引き寄せるための、情報収集力、咀嚼力。あと英語の読解力。
これはそれなりでも可だと思う。

どれもこれも、すぐ習得というわけには行かず、むしろ同時にこれらを
勉強しなければならない、という煩雑さがあると思う。
簡単なアプリを自力で!書けるようになるまでは、数ヶ月見たほうが
良いんじゃないかな。

あと、先生の存在かな。問いに的確に答えてくれる身近な人の存在。
これ大事。学習のペースに影響でかいよ。
初心者のときは、「知っててあたりまえ」なことにも気が付きにくいことって
あるよね?経験者に聞けば一発で分かるという。。。
あとは、ある程度力がつけば、自力で必要な情報を得て鍛えていけると思う。
独学のみでもできるけど、ペースは落ちるだろうね。

232 :デフォルトの名無しさん:02/06/07 14:46
でもこういうの聞いてどうすんだろ。
ほかのスレでもたまに見かけるけど
「○○を習得するにはどのくらいかかりますか?」
「○○歳なんですが今からやるにはどのくらいかかりますか?」
とか。
本人の努力次第だと思うし、習得したいなら努力すべきだと思うんだけど。

233 :デフォルトの名無しさん:02/06/07 14:50
>232
そういうのは元気付けて欲しいんだよ。
やさしく’あきらめろ’っていってやんな。

234 :231:02/06/07 15:00
一番大事なのは、それを「好きになること」と「やる気」かな。
これがあれば、少々の飲み込みの悪さやテクニックのまずさ・・・は
徐々に克服できると思う。

235 :デフォルトの名無しさん:02/06/07 15:12
>>234
そうじゃない人もいるから怖い。

236 :デフォルトの名無しさん:02/06/07 15:14
>>235
それってどうなるんだ・・・。まさか、変な方向に暴走するとか?

237 :デフォルトの名無しさん:02/06/07 16:55
ビットマップを印刷しようとしているのですが、一部のプリンタで印刷ができません。
(PS プリンタでERROR:undefined OFFENDING COMMAND:getがでる)

何が問題なのかご教授頂ければ幸いです。

:
LPBITMAPINFO lpbi;
LPTSTR lpBits = NULL;

#define WIDTHBYTES(bits) ((((bits) + 31) / 32) * 4)

// Fill in the BITMAPINFOHEADER
lpbi = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER)];
lpbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbi->bmiHeader.biWidth = rect.Width();
lpbi->bmiHeader.biHeight = rect.Height();
lpbi->bmiHeader.biPlanes = 1;
lpbi->bmiHeader.biBitCount = 24;
lpbi->bmiHeader.biCompression = BI_RGB;
lpbi->bmiHeader.biSizeImage = WIDTHBYTES(rect.Width()) * rect.Height();
lpbi->bmiHeader.biXPelsPerMeter = 0;
lpbi->bmiHeader.biYPelsPerMeter = 0;
lpbi->bmiHeader.biClrUsed = 0;
lpbi->bmiHeader.biClrImportant = 0;



238 :237:02/06/07 16:56
続き

hBitmap = CreateDIBSection(pDC->m_hDC, lpbi, DIB_RGB_COLORS, (void **)&lpBits, NULL, 0);

// DSPメモリ デバイスコンテキスト作成
DCMem.CreateCompatibleDC(pDC);
Soh = (HBITMAP)SelectObject(DCMem.m_hDC, hBitmap);

// ビットマップ複写
DCMem.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, NOTSRCCOPY);
CPrintDialog* dlg = new CPrintDialog( FALSE,
PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_NOSELECTION,//[全ページ]選択,[部数],[ページ指定]使用不能,[選択した部分]使用不能
this);
if( !dlg->GetDefaults() )
{
return 0L;
}
DWORD dwSaveFlags = dlg->m_pd.Flags;
dlg->m_pd.Flags &= ~PD_RETURNDEFAULT;
LPDEVMODE pDM = dlg->GetDevMode();
pDM->dmCopies = 1;
pDM->dmOrientation = DMORIENT_LANDSCAPE;
pDM->dmFields |= DM_ORIENTATION;
pDM->dmTTOption = DMTT_SUBDEV;
DCPrn.CreateDC(dlg->GetDriverName(), dlg->GetDeviceName(), dlg->GetPortName(), pDM);
TEST*/
DCPrn.ResetDC(lpDevMode);

DocInfo.cbSize = sizeof(DOCINFO);
DocInfo.lpszDocName = "hogehoge";
DocInfo.lpszOutput = (LPSTR)NULL;
DocInfo.lpszDatatype = NULL;
DocInfo.fwType = DI_APPBANDING;

:

if (DCPrn.StartDoc(&DocInfo) != -1)
{

:
DCPrn.StretchBlt(iOffset_X, iOffset_Y, iBitMap_X, iBitMap_Y, &DCMem, 0, 0, rect.Width(), rect.Height(), SRCCOPY);
:
retval=DCPrn.EndDoc();
}
DCPrn.DeleteDC();
:


239 :デフォルトの名無しさん:02/06/07 17:29
あるプリンタで印刷できて、あるプリンタでエラーがでるなら、
単にデバイスがStretchBlt()をサポートしてないだけとか。
デバイス依存ぽいし・・・

240 :237:02/06/07 17:39
StretchBlt
ってデバイス依存なんですか?!(しらなかった)


241 :デフォルトの名無しさん:02/06/07 18:00
デバイス依存ってのはディスプレイのコンパチDCから
プリンタDCに書き込むところ。(断言は出来んけど)
DIB系の関数つかったほうがいいような。

あと
BitBlt()
GetDeviceCaps()
SetDIBitsToDevice()
StretchBlt()
StretchDIBits()
は使えるデバイス使えないデバイスがあるそうです。
詳しくはGetDeviceCaps()に聞いて下さい

242 :デフォルトの名無しさん:02/06/07 19:06
>>204
うぅ、しらなかった。鬱

243 :デフォルトの名無しさん:02/06/07 20:16
>>242
誤報じゃないのかな?ワード文書とかにIDが埋め込まれるって話は聞いたこと
があるけど。マクロウィルス騒ぎの時に報道されたから覚えてる。

244 :デフォルトの名無しさん:02/06/07 21:14
どう見ても要らん文字列がバイナリに埋め込まれてる気がするのは漏れだけ?

245 :デフォルトの名無しさん:02/06/07 21:28
>>244
バイナリのどの辺?

246 :204:02/06/07 23:21
釣ろうとしたつもりは無いが、釣れてしまった、と言ってみるテスト...
違う環境でビルドした実行ファイル比較しても、1バイト程度違うことがあるけど、
まったく同じファイルが出来上がりますです。


247 :デフォルトの名無しさん:02/06/07 23:30
>>246
勘違いってことでOK?

248 :204:02/06/07 23:37
>>247
OK。まぁ、いい大人になっても割れやってるヤシは(以下略 ってこった。

249 :デフォルトの名無しさん:02/06/08 01:49
>>245
バイナリエディタで見ると途中に関数名みたいのがずらずらと。
あれホントにいるのかなと思ったんで。

250 :デフォルトの名無しさん:02/06/08 02:16
>249
インポートテーブルじゃろ。ダイナミックリンクする関数名が入ってる。
95持ってたらクイックビューアで見てみるとよろし。

251 :デフォルトの名無しさん:02/06/08 02:50
序数リンクで充分じゃねーの、ってことを言いたいのでは?

252 :デフォルトの名無しさん:02/06/08 13:36
質問。すこしガイシュツなのですが、
ビットマップ絵をなめらかアニメーションでスーーっと動かしたいです。
当然「タイマーイベントを使え」って言うかもしれませんが、
自分なりに調べたのですがわかりません。タイマーについて
やさしく教えてくれる人やHP教えてくれる人大募集。お返事待ってます。

今はたとえば A→―――→B地点 
の物体の移動アニメ作りたいんだけどタイマーがないので、一瞬で移動して終わりです。
タイマーをつかえばウィンドウズゲームパックみたいなグtラフィカルななめらかアニメ
な動きが作れるはずなのですが・・おねがいします。

253 :デフォルトの名無しさん:02/06/08 15:27
>>252
SetTimerとKillTimer調べてみ。

254 :デフォルトの名無しさん:02/06/08 16:09
>>253
なんだか時計とかのやつがたくさんでてきてしまいました。
一応関係るのかな・・
BASICでいうwait10とかあったでしょ。あーいうのだと思うんだけど。
ゲームパックのあのなめらかアニメーションはどうやって実現しているのかな。
なにかサンプルがあればいいんだけどなあ

255 :デフォルトの名無しさん:02/06/08 16:20
>>254
一応、ここはMFCの相談室なんだけど、言語は何を使用していますか?
CまたはC++ですか?MFCは使ってますか?
あと、SetTimerとかを使用するときには、ウィンドウのメッセージを
一応知っとかなきゃならないけど、その辺は大丈夫?

256 :デフォルトの名無しさん:02/06/08 16:24
おそらく何も知らないのだと思われ。
調べたっていってもネットでちょこっと検索しただけだと思われ。
入門書の一つでも買うことを強くおすすめする。

257 :254:02/06/08 16:31
C++です。
ウィンドウで動くドラクエみたいな絵をコマコマごとに
動かすやつができるじょうたいのミニゲームを作れるレベルです。
ただこれが、動きがとびとびなのでこれをスーっとアニメして動かしたい。

入門書は何冊かあるけどこのあたりは書いてない。
あんまり使わないからかな。

258 :デフォルトの名無しさん:02/06/08 16:35
絶対載ってるって・・・
あるいは本の対象範囲が違うんじゃないかな。

259 :254:02/06/08 16:35
http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/win06.html
このあたりかな・・・
ちょっとやってみよ

260 :デフォルトの名無しさん:02/06/08 16:36
つーか
> なんだか時計とかのやつがたくさんでてきてしまいました。
> 一応関係るのかな・・

とか言ってるようじゃ無理だろ
関係あるに決まってんだろ
時計の針(または数字)を動かすのと絵をコマごとに動かすのは全く同じことじゃねーかよ

261 :デフォルトの名無しさん:02/06/08 16:37
タイマの載ってない本って何よ?

262 :デフォルトの名無しさん:02/06/08 16:39
割と簡単すぎて逆に載ってないのかもね。

>>257
SetTimer(hwnd, // handle to main window
1,       // timer identifier
1000, // 1-second interval
(TIMERPROC) NULL); // no timer callback

これでhwndにWM_TIMERメッセージが1秒間隔で届く。
hwndウィンドウプロシージャ内では、こんな風に。

case WM_TIMER: // WM_TIMERメッセージを検出
 // 一秒間隔でここに制御が来るので、
// やりたいアニメーションの処理をする。


最後に、タイマーをきりたいときは、KillTimer(hwnd,1);
こんな感じにすること。これは忘れないように。

これで検討がつかない場合は、ウィンドウメッセージのこととかも
ちゃんと勉強したほうがいいよ。

263 :デフォルトの名無しさん:02/06/08 16:40
>>259
それが参考になるならスレ違い。
このスレにはMFCって書いてあるだろ。

264 :デフォルトの名無しさん:02/06/08 16:42
>>262
KillTimer忘れたらどうなんの?
ウィンドウとともに死滅してくれたほうがうれしいんだけど、してくれないの?

265 :デフォルトの名無しさん:02/06/08 16:44
>入門書は何冊かあるけどこのあたりは書いてない。
何冊も持っててタイマが載ってないって絶対金の無駄遣いだって。

266 :254:02/06/08 16:45
ここの掲示板の人は乱暴な人が多いようですね。>>256 >>260
パソコンばかりやっててモラルがないのかな。

自分が中学の時に微分積分もできねーのか!って先生言われても
相手にとっちゃ常識で屁みたいなものだろうけど
こっちはわかんないよって状態の気持ち考えてみてよ。
今からさぐりさぐり勉強しようと努力はしてるのに。

こんなのもわかんねーのか発言はいやです。

267 :デフォルトの名無しさん:02/06/08 16:46
>>264
プロシージャがなくなるので、タイマーメッセージ自体はこなくなるけど、
ウィンドウやコンとロールを破棄してる最中のような変なタイミングで
タイマーがくると困るので、適切なタイミングで殺すのが良いんじゃない
かな、くらいの意味。

268 :254:02/06/08 16:47
>>262
あ、超ありがとうございます。
ほんとにありがとうございました。
そーいうのですハイ!

269 :デフォルトの名無しさん:02/06/08 16:48
>>266
教えて厨がモラルを語るな。
とりあえずタイマが載ってないという持ってる書籍名あげてみろ。

270 :254:02/06/08 16:51
>>269
いや・・だって相談室だから相談したんだけど・・
質問したらダメなの?ここ。
私みたいなアリん子にそんなムキになっちゃだめだよ。
なにかストレスあるの?

271 :デフォルトの名無しさん:02/06/08 16:52
>>270
煽りウザイ。
質問するのは「ちゃんと」調べてもわからなかった人だけの特権。

272 :262だが:02/06/08 16:53
そんなことで喧嘩すんなよ。
>>270
君の言い分もわかるが、あおるような書き方は
やめてよ。

273 :デフォルトの名無しさん:02/06/08 16:54
>>270
タイマーが載ってない本教えてくれって

274 :254:02/06/08 16:55
ごめんなさい。
本は今大学においてあって手元にないです。
月曜日もう一回確認しますね。

275 :デフォルトの名無しさん:02/06/08 16:55
>>271
そだね。
がっこの先生は教えるのが仕事、ここは相談室であって教室ではないよ。

276 :262だが :02/06/08 16:59
あ、学生さんか、勉強がんばってね。
あと、262丸写しじゃなくて、一応、意味を理解したほうがいいと思うので
そこんとこヨロシク。

277 :デフォルトの名無しさん:02/06/08 17:00
>>262を丸写しで動くならやっぱりスレ違いだなと言ってみるテスト。

278 :デフォルトの名無しさん:02/06/08 17:31
ちょっと質問です。
.netのMFCで吐いたコードって、Win95で動きますか?
(MFCはスタティックリンクで)

279 :デフォルトの名無しさん:02/06/08 17:31
動かないそうです

280 :278:02/06/08 17:34
>>279
え、マジですか。
IEのバージョン揚げてDLL更新しても駄目なのか…ショボーン。

281 :デフォルトの名無しさん:02/06/08 17:36
>>280
どうして、そこまでの結論がでるの?
実際に動かないってこと?

282 :デフォルトの名無しさん:02/06/08 17:38
まともなプログラマならそのへんまで推察(早とちり)しないとダメだということを暗に伝えたかったのでは

283 :デフォルトの名無しさん:02/06/08 18:39
なんだ、厨房祭りは終わりか…。

284 :デフォルトの名無しさん:02/06/08 19:49
いや、質問スレで答えないで文句逝ってる奴が厨房。
そんな奴はカキコしねーでいいよ

285 :デフォルトの名無しさん:02/06/08 20:27
>>275

286 :デフォルトの名無しさん:02/06/08 21:24
直後に答えてるのに教えて厨が「わかんない」の連発してるからだろ。
あげくのはてに欲しがってた答えはMFCじゃないし。


287 :デフォルトの名無しさん:02/06/08 23:24
SetTimerというキーワードを貰ったら、MSDNで該当個所を読み、タイマー使ってるサンプル見つけてきて
実際にコンパイルして動作を確認するくらいのことはして欲しいなあ。

288 :デフォルトの名無しさん:02/06/08 23:33
「MFC SetTimer アニメーション」くらいをぐーぐることもしてほしい。
>>253-254を見ればわかるが30分くらいしか検索してなくて、
しかも探し方が悪いのかヒット数が多すぎて調べるのが嫌になったのが見え見え。

さらに気になるのはMFCを使ってるかどうかってこと。
>>255でも聞いてるけどC++を使ってるとは書いてるけどMFCかどうかは答えてないんだよな。
>>259>>268あたりを見るとに非MFCに思えてならない。

いずれにせよ>>270の逆ギレ&煽りの時点で厨決定。

289 :262:02/06/08 23:43
>>288
>さらに気になるのはMFCを使ってるかどうかってこと。
それは俺が悪かったよ、こう書けば何の問題もなかった。

WM_TIMER

CFoo::OnTimer();

290 :わけわかめ:02/06/09 00:03
以下のやつ、なぜかXYZしか表示されん。なんで?
pDC2を全部pDCにかえると、ABCも表示されて、
コピー(BitBlt)先にもABCが表示されるんやけど…?
ちなみに VisualC++ .NET

void CMemoPp3View::OnDraw(CDC* pDC)
{
CDC dcMem;
CDC* pDC2;
dcMem.CreateCompatibleDC(pDC);
pDC2 = &dcMem;
// pDC2 = pDC; // ここを有効にすると両方かかれる。

pDC2->TextOut(1,1,"ABC");
pDC->TextOut(1,20,"XYZ");
pDC->BitBlt(100, 100, 60, 20, pDC2, 1, 1, SRCCOPY);

dcMem.DeleteDC( );
}


291 :デフォルトの名無しさん:02/06/09 00:05
>>290
んなもん
>> pDC2->TextOut(1,1,"ABC");
pDC2( = &dcMem )
に描画してるからに決まってるだろ、アフォ?
つーか座標が(1,1)から始まってるみたいなのも激しく萎えるんだが

292 :わけわかめ:02/06/09 00:07
いや、その後で BitBlt()やってるのに、なんでってことっす。


293 :デフォルトの名無しさん:02/06/09 00:08
>>292
ぐふ・・・逝ってくる・・・
行く前に、
dcMemにちゃんとBitmap選択しれ
それと座標は(0,0)から始めてくれ


・・・んじゃ逝ってくる

294 :わけわかめ:02/06/09 00:23
逝く前にもう一声。
これ試しに作ってるだけやから、座標(1,1)とか適当やけど
(0,0)にしなきゃいけない意味あるん?
Bitmap選択って何?
pDCには普通にテキスト書き込めてるから、
CreateCompatibleDC(pDC)ってやれば、
pDC2はpDCのクーロンみたいなもんやから
特になにもせんでも、書き込めると
思ってたんやけど、そこが、そもそも俺の勘違い?

void CMemoPp3View::OnDraw(CDC* pDC)
{
CDC dcMem;
CDC* pDC2;
dcMem.CreateCompatibleDC(pDC);
pDC2 = &dcMem;

pDC2->TextOut(0,0,"ABC");
pDC->TextOut(0,20,"XYZ");
pDC->BitBlt(100, 100, 60, 20, pDC2, 0, 0, SRCCOPY);

dcMem.DeleteDC( );
}

295 :デフォルトの名無しさん:02/06/09 00:25
>>294
君はまずAPIからやった方がいいんじゃないか?
API勉強するなら、猫でもわかる〜っていう良いサイトがあるぞ。逝ってみれ。

296 :デフォルトの名無しさん:02/06/09 00:29
>>294
http://homepage1.nifty.com/CavalierLab/lab/win/bitmapobject.html


297 :デフォルトの名無しさん:02/06/09 00:29
>>294
黄泉の国から帰ってきた

ん〜〜なんつーのかな。
たとえが悪いけど、DCは車で言うエンジンとすると、
CreateCompatibleDCはエンジンだけ複製するわけ。
タイヤやシャーシは自分で選ぶわけ。

CreateCompatibleBitmap( pDC, Width, Height );
使って作ったビットマップをdcMemに選択してやらにゃならんのよ

座標の(0,0)は個人的要望。

298 :わけわかめ:02/06/09 00:49
なるほど…

あっちこっちで出てくる例はビットマップリソースを
貼り付けるやつばっかりで、CreateCompatibleBitmap
を使ってなかったんで、分からんかったんやけど、
そういう仕組みだったとは…。

CreateCompatibleDCでpDCに設定されてるすべての要素が
コピーされるんやと思ったんやけど違うんやね。

#Unixのforkなみ(これも例えわりぃ〜)に、それを呼んだ
#時点で、その時点でのDCに関する情報が全部コピーされ
#ると思ってたっす。代わりに逝ってきます。

下でとりあえず動いた。

void CMemoPp3View::OnDraw(CDC* pDC)
{
CDC dcMem;
CDC* pDC2;
dcMem.CreateCompatibleDC(pDC);
pDC2 = &dcMem;
CBitmap bmp;
bmp.CreateCompatibleBitmap( pDC, 200, 200 );
CBitmap* pOldBitmap = dcMem.SelectObject(&bmp);

pDC2->TextOut(0,0,"ABC");
pDC->TextOut(0,20,"XYZ");
pDC->BitBlt(100, 100, 60, 20, pDC2, 0, 0, SRCCOPY);

dcMem.SelectObject(pOldBitmap);
bmp.DeleteObject();
dcMem.DeleteDC( );
}

299 :デフォルトの名無しさん:02/06/09 08:15
>>297
座標を(1,1)にするか(0,0)にするかって言われたら、
(0,0)で即決なのがC/C++プログラマの正しい姿っしょ。
『個人的要望』なんてヌルいことといわずに、
『C/C++プログラマの総意』ぐらい言ってもバチはあたらんと思うぞ。

300 :デフォルトの名無しさん:02/06/09 09:04
>>299
>座標を(1,1)にするか(0,0)にするかって言われたら、
>(0,0)で即決なのがC/C++プログラマの正しい姿っしょ。
それは作るものに応じて変わってくるのでは。わざとやることだってあるし。
見た目、デザイン的にわざとはみださせたい、とかね。
それに問題の本質とは関係ないと思われ。

301 :デフォルトの名無しさん:02/06/09 11:22
MFCってなに?と、俺も質問してみたりする。
VC++で作るウィンドウズプログラムのことじゃないの?それ以外になんかある?

入門者の赤子の素朴な質問に答えもせず、ただ「こいつは厨房だほっとけ」
とだけ書くだけのは、マルチ重複質問してるのと同レベルだぞ。


302 :デフォルトの名無しさん:02/06/09 12:12
MFC使わずにVC++でウィンドウズプログラム作ってますが何か。

303 :デフォルトの名無しさん:02/06/09 12:18
>>301
VC++でウィンドウズのプログラムを作る際に使われる、
「便利な機能を集めた、プログラムの部品」のことです。
C++の言語から使用することが出来ます。
「便利な機能を集め」ているため、これを使用すると、開発のスピードが
あがることが多いです。

304 :デフォルトの名無しさん:02/06/09 12:55
>301
ライブラリみたいなモンだよ。
クラスライブラリ。APIをラッピングしたのがほとんど
つーかAPIの知識なしに使うと危険かも

305 :デフォルトの名無しさん:02/06/09 13:25
>>301
だからそれは「MFCとは」なんかを検索した上での質問なのかと。
さらに入門書などは読んだのかと。
調べれば簡単に見つかったりたいていの入門書に書いてあることを
質問するから嫌われるんだよ。


306 :デフォルトの名無しさん:02/06/09 13:30
MFCすら知らなかった>>254=>>301


307 :デフォルトの名無しさん:02/06/09 13:44
>>305
自分でまず調べるのは最低限必要だが、それでも分からないってことも
多いだろ。
検索ページや本に書いてあることが多い、
「MFCは、Microsoft Foudation Class ライブラリの略でWindowsAPIと
VisualC++がうんぬんかんぬん」といった説明では、まったくの初心者で
は歯が立たない。そんな相手がMFCを幾分でも理解するために、
「まずWindowsAPIとC++やライブラリの概念を覚えろ」とかいうのも酷だ
と思うし。

自分で調べずに質問するのは論外だが、(これは305のことではないが)
質問相手が、調べずに質問していると決め付けている一方的な態度の人
が多いと思うのは俺だけではあるまい。

308 :デフォルトの名無しさん:02/06/09 13:57
>>307
俺は別に何も知らない初心者が悪いと言ってるのではない。
ただ、仮にMFCを検索して
> 「MFCは、Microsoft Foudation Class ライブラリの略でWindowsAPIと
> VisualC++がうんぬんかんぬん」
というのが出てその意味がわからなかったとしたら、その文のどこが
わからないのかを書くべき。
(本当に知りたいんだったらわかる文章が出てくるまで検索するか
分からない単語を再検索するのが筋ってもんだと思うけど)
質問者はわからないから質問してるのは承知してるが、それと同様に回答者も
質問者がどの程度まで知ってて何がわからないのかはわからない。

というかこんなこと改めて言うまでも無く、技術系掲示板やMLでは常識だと思うんだが。

309 :デフォルトの名無しさん:02/06/09 14:02
優しい人が低姿勢で教えるスレきぼーん

310 :デフォルトの名無しさん:02/06/09 14:10
スレタイにわざわざ「MFC限定」と書いてあるのに
全然気にならなかったのだろうかと素朴な疑問。

311 :デフォルトの名無しさん:02/06/09 14:29
次からは
Visual C++(MFC限定)相談室じゃなくて
MFC相談室にすれ

312 :デフォルトの名無しさん:02/06/09 14:32
>>308
おっしゃる通り。そちらの言い分はまったく常識的だと思う。
ただ、
>質問者はわからないから質問してるのは承知してるが、それと同様に回答者も
>質問者がどの程度まで知ってて何がわからないのかはわからない。
俺はある程度(雰囲気程度)の理解でも良いなら抽象的な「MFCってなんですか」て
質問もアリだと思う。その場合、答える側としては、「抽象的な質問だから、
だいたいの抽象的な答えで良いんだろうな」という理解でOKと思うが。
(当然、事前に自分で調べて分からなかった場合に限るが)
質問者がその答えでは困るようでは再度「さらに具体的な質問」をしてくるだ
ろう。でもその場合は最初から書いてくれってのは、勿論あるが。

313 :デフォルトの名無しさん:02/06/09 14:44
>>312
あぁ、俺もその考え方にほぼ同意だ。結局
> でもその場合は最初から書いてくれってのは、勿論あるが。
に集約されてる気がする。

それで例えば先のタイマーアニメーションの質問者が「さらに具体的な質問」を
してきたかといえばしてないだろうというのが俺の見解。
>>301に関しては本当に何も知らない入門者なら>>303でいいだろうし
C++知ってる程度なら>>304の内容でいいだろうし。
ただ、
> VC++で作るウィンドウズプログラムのことじゃないの?それ以外になんかある?
と言ってるようじゃ検索すらしてないんだろうなというのが俺の見解。

314 :デフォルトの名無しさん:02/06/09 15:27
なんでもありのスーパー初心者向け
ここだけ教えて君マルチOK超初心者!無法地帯VC
スレ作ってはだめなの?つくっちゃう?

用は上級者はここでアホ質問する素人初心者が邪魔なんでしょ?
こっちにとっちゃあ、そんなもんすぐわかるだろ級の内容が
>>301くんとか素人にとっちゃあマジなわけだ。
別スレだったら問題ないよね?

315 :デフォルトの名無しさん:02/06/09 15:31
それってとかすごくくだらない質問スレとか過去ログ読まずに質問スレじゃない?
問題なのは本人にとってその質問がぜんぜんくだらなくないことと、過去ログなんてそもそも眼中にないことだね

316 :312:02/06/09 15:48
>>313
>それで例えば先のタイマーアニメーションの質問者が「さらに具体的な質問」を
>してきたかといえばしてないだろうというのが俺の見解。
いや、>>254で結構具体的にしてると思うが・・・。
>BASICでいうwait10とかあったでしょ。あーいうのだと思うんだけど。
>なにかサンプルがあればいいんだけどなあ
とか。それより、このタイマーアニメーションの件を問題にしているとはわか
らなかったよ。MFCの方を問題にしているかとばかり。

>> VC++で作るウィンドウズプログラムのことじゃないの?それ以外になんかある?
>と言ってるようじゃ検索すらしてないんだろうなというのが俺の見解。
これに関しては、検索で得た知識で誤解したってことも考えられるけど・・・。
結局、本当に検索したかは書かなかったら本人にしか分からないし、答えるほう
も自分の見解に基づいて仮説(!=事実)を考えるしかない、という根本的な部
分が問題ということでOK?

317 :デフォルトの名無しさん:02/06/09 16:02
>>314
そんなのが許されるのは検索の仕方も知らないような全くのPC初心者が
Windowsの基本的なことを質問するような程度のものだけ。

プログラミングを志す人間なら、ある程度自己解決ができて当たり前。
まあ>>301は門外漢がネタで書いてるだけだろ。ただの厨房の可能性も否定できんが。

318 :デフォルトの名無しさん:02/06/09 16:16
検索っつっても
>>254
> なんだか時計とかのやつがたくさんでてきてしまいました。
> 一応関係るのかな・・
なんてのは検索したうちに入らんよ。

319 :デフォルトの名無しさん:02/06/09 16:16
>>317
そうでもない。
学校教育の問題(わからないことがあったらなんでも先生に聞きなさい)で自己解決能力の無い子供は多い。
(かく言う俺も初めのころは目を覆いたくなるような恥ずい質問もした)
こういうのは身をもって身につけていくもんだと思う。

だから俺はくだらない質問を叩くのもいいと思うよ。
(ただし、ただ叩くんで無くて「ぐぐれ」の一言でもつけくわえて)
叩かれたら自分の質問が恥ずいって気づくでしょ。
安息の地を提供すべきではないと思う。

320 :デフォルトの名無しさん:02/06/09 16:17
      ,.,.,、,....,、、., 、,、..,_       /i  
     ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
    /'、;: ...: ,:. :.、.;;.. .:: _;.;;.::‐'゙ ヽ  ̄  
    !:::: `"゙' ''`゙ ゙`´´´` ::::::::::::::::}
    ミ:::::::;;;;、;ノ''''''''ヽ,,,,.;;;;;;;;::::::::::::::)
     {:::::/ ..、,、,..,,、、., 、,、..,_   /   /ヘ
     ,>、; .'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
      !(`| '、;: ...: ,:. :.、.;;.. .:: _;.;;.::‐'゙  ̄   ________
.     ヽハ  `"゙' ''`゙ ゙`´´´` /    /
.       `ヘ    -====-   ,/~   < おまえら喧嘩やめろ。と言ってみるテスト
___.   ヽ、   ̄ ̄   ,イ       \
|逮 捕|  ,,-|::`-、__ _,,-'~:::|ヽ、       ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ _,-'  !  :::::::::::::::  /  !''‐-、,,_
   _,,-''' i  \  ::::::   /    |    ~'''‐-
-''''~    | /\\    //\ /
  エビフライ職人



321 :デフォルトの名無しさん:02/06/09 16:19
近頃は恥ずいと思わずに逆ギレして煽るようです

322 :デフォルトの名無しさん:02/06/09 16:20
>>321
そうなんだよね・・・世も末だ・・・

323 :age:02/06/09 16:22
      ,.,.,、,....,、、., 、,、..,_       /i  
     ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
    /'、;: ...: ,:. :.、.;;.. .:: _;.;;.::‐'゙ ヽ  ̄  
    !:::: `"゙' ''`゙ ゙`´´´` ::::::::::::::::}
    ミ:::::::;;;;、;ノ''''''''ヽ,,,,.;;;;;;;;::::::::::::::)
     {:::::/ ..、,、,..,,、、., 、,、..,_   /   /ヘ
     ,>、; .'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
      !(`| '、;: ...: ,:. :.、.;;.. .:: _;.;;.::‐'゙  ̄   ________
.     ヽハ  `"゙' ''`゙ ゙`´´´` /    /
.       `ヘ    -====-   ,/~   < マジ喧嘩ワラタ。と言ってみるテスト
___.   ヽ、   ̄ ̄   ,イ       \
|逮 捕|  ,,-|::`-、__ _,,-'~:::|ヽ、       ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ _,-'  !  :::::::::::::::  /  !''‐-、,,_
   _,,-''' i  \  ::::::   /    |    ~'''‐-
-''''~    | /\\    //\ /
  エビフライ職人


324 :デフォルトの名無しさん:02/06/09 16:26
VC初心者スレを復活させるか?
以前あったが落ちたんだよな。

でもなぁ、そういうスレすら探さないかもなぁ。
>>1にVC系スレの相互リンクでもあれば誘導できるんだろうけど。

325 :デフォルトの名無しさん:02/06/09 16:33
>>324
     【 0から始めるVC++ 初心者   】

     で、だれかたてて。
     ここみたいな規制はあんまりなしにしてね。
     どんな素人でもどんどん質問できるスレで。

326 :デフォルトの名無しさん:02/06/09 16:39
ここも規制があるわけじゃないんだけどな。
ここ(というかほとんどの言語スレ)は一般の技術系BBS/MLのスタンスで、
>>325のは2chぽくほとんどなんでもアリってスタンスかな。
立てるならもうちょい案をつめないか。
>>1用のテンプレとか。

327 :デフォルトの名無しさん:02/06/09 16:40
>>324
>>325
VC++のことだけじゃなく、具ぐるの初心者講座も必要かな。
もしよかったら、書くよ。

328 :デフォルトの名無しさん:02/06/09 16:49
重複質問やリファレンスに載ってるような関数の使い方を聞かれても
親切丁寧に教えるスレってことだよな?

回答者の根気が続くだろうか…

329 :デフォルトの名無しさん:02/06/09 16:54
明らかにネタと思えるものにもマジレスしなきゃいけないの?

330 :デフォルトの名無しさん:02/06/09 16:55
ま、試験的に立ててみるか。

タイトル:【初心者】0から始めるVC++バージョン1

1のテンプレ:
自分は初心者だと思う方や検索しても意味がよくわからなかったという方
のためのスレです。なるべく自分の状況を詳しく書いて質問してください。

回答者も詳しく丁寧に教えてあげてください。

331 :デフォルトの名無しさん:02/06/09 16:55
回答者の善意に依存する以上、ネタはカンベンしてホスイ・・・。

332 :デフォルトの名無しさん:02/06/09 16:59
>>330
もう少し環境・状況を詳しく書いてください
ってレス大量発生の予感

333 :デフォルトの名無しさん:02/06/09 17:01
単に質問に答えるスレではなく、初心者の自立を助けるスレに育ってホスイ。。。

334 :デフォルトの名無しさん:02/06/09 17:02
>>332
環境はどのスレでもほとんど書いてないから大丈夫だろう。
状況を詳しく書くことが大事ってことをそこで学んでもらえれば・・・

335 :デフォルトの名無しさん:02/06/09 17:04
答えを直に書くんじゃなくて、
その答えにたどり着くまでの道のりを答えるスレにして欲しい

MSDNのココにある、とか、ぐぐるでキーワード〜〜で検索すれ、
とか

336 :デフォルトの名無しさん:02/06/09 17:10
タイトル:【ようこそ】VC++初心者駆け込み寺 Ver1.0【虎の穴へ】


337 :デフォルトの名無しさん:02/06/09 17:11
1に追加希望

質問者3か条
・エラーのときは必ずそのエラーメッセージを書きましょう
・問題の発生するプログラムを示すときは勝手に編集せず、出来るだけ問題の再現する状態でコピーしましょう
・なぜそう思ったのか、疑問の根拠を書きましょう

338 :デフォルトの名無しさん:02/06/09 17:16
いっそのこと1に質問用テンプレも書いちゃおうか。
------------------
質問の例
環境:Windows2000+サービスパック2、IE5.5+サービスパック2
○○をしようと思ったのですが、実行時に「***」という内容の
エラーダイアログが表示されて実行できません。
どうすればよいのでしょうか?

○○をしようと思ったのですが、やり方がわかりません。
「××」というキーワードでGoogle検索し、「***」という
ところまでわかったのですが、「###」の部分がわかりませんでした。
○○のやり方を教えてください。

××××
○○○
******
というコードを書いたのですが、2行目で「##」というエラーメッセージが
出てビルドできませんでした。
どうすればよいのでしょうか。
------------------
って全然2chぽくないな。

339 :デフォルトの名無しさん:02/06/09 17:20
なんだか初心者用スレに限らずどの質問スレにもあてはまるような
良テンプレの予感。

340 :デフォルトの名無しさん:02/06/09 17:21
>>338
いいね。これも追加してはいかが?

××××
○○○
******
というコードを書き、コンパイル、リンクともにうまくいきました。
しかし、意図した通りに動きません。〜のように動いて欲しいのですが、
どうすればよいのでしょうか。

341 :デフォルトの名無しさん:02/06/09 17:23
>>340
最後の
> 〜のように動いて欲しいのですが、
がミソだね。
「意図したとおりに動かない」ばっかり言って、どう意図しているのか書かないやつが多すぎるから。

342 :338:02/06/09 17:25
>>337の方がシンプルでいいかもしれん。
質問の具体例は2とかに書いた方がいいね。
2以降にgoogleの誰かが言ってた基本的な使い方や
初心者用参考サイト/書籍なんかもあったら便利かも。

343 :デフォルトの名無しさん:02/06/09 17:26
1でここ
http://www.hyuki.com/writing/techask.html
にリンクすることも忘れずに

344 :デフォルトの名無しさん:02/06/09 17:32
>>337と同じく回答者にも>>335のように
・回答する場合はその答えに至るための「コツ」も書いてくれると助かります。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
とかあったらいいかもね。



345 :デフォルトの名無しさん:02/06/09 18:03
まとめてみた。
http://www.geocities.co.jp/Beautycare/4965/public/template.html

346 :デフォルトの名無しさん:02/06/09 18:08
>>345
ごく

347 :デフォルトの名無しさん:02/06/09 18:10
>>345
その他C++/VC++スレ(こことか)へのリンク忘れてる

348 :デフォルトの名無しさん:02/06/09 18:12
こっちから誘導するのはわかるがあっちからもリンクいるか・・・?



349 : :02/06/09 18:29
>>345
あ、すごい

350 :デフォルトの名無しさん:02/06/09 18:50
>>345
ブラボー!

Google,こんなんで良いかな。。。。

検索エンジンGoogleの使い方

http://www.google.com/intl/ja/

プログラム作成で問題が起こったとき、サンプルコードが見たいとき、
あるいはプログラムのアイデアが欲しいとき、検索エンジンは大きな
力を貸してくれます。ここでは、Googleの効果的な使用方法を簡単に
示したいと思います。

Googleでは言葉を使った検索を行いますが、検索後の該当ページが多
すぎたり、関係のないページが大量に表示されたりすることもあります。
こんなときに、以下のような方法で検索対象を絞り込むことが出来ます。

1.AND 検索
AND 検索では、指定した複数の言葉を含むページを検索します。

例)CString CMap

上記のように、複数の言葉をスペース文字で区切って入力します。
この場合、CString と CMap という言葉を両方含むページのみを検索
できます。

2.OR 検索
OR 検索では、指定した複数の言葉のどちらか、あるいは両方を含む
ページを検索します。

例)CString|CMap

上記のように、複数の言葉を|文字で区切って入力します。
この場合、CString と CMap という言葉のどちらか、または両方を含
むページを検索できます。


351 :デフォルトの名無しさん:02/06/09 18:50
続き

3.not 検索
not 検索では、指定した言葉を検索対象から除外することが出来ま
す。似たような言葉が大量にヒットしてしまう場合に、対象を絞り
込むのに便利です。

例)CString -CStringList

上記のように、複数の言葉の間にスペース文字を入れ、除外したい言葉
の先頭に-文字を付けます。
この場合、CString という言葉は含むが、 CStringList という言葉は
除外するように指定できます。つまり、CString や CStringMap などを
含むページは検索されますが、CStringList を含むページは検索されな
いわけです。

4.フレーズ検索
フレーズ検索では、スペース文字を含む言葉を検索できます。

例)"Microsoft Windows"

単に Microsoft Winodws と指定して検索すると、1.のAND検索と同じ
になります。つまり、Microsoft と Winodws という文字を両方含むペ
ージが検索されてしまいます。そこで、これらを"(ダブルコーテーショ
ン文字) で囲みます。こうすることによっで、スペース文字を含む言葉
を検索することが出来るようになります。


以上はごく基本的な機能ですが、これを知っているだけでも検索効率がずいぶ
ん違ってきます。まずは習うより慣れろで、実際に試しながら覚えてください。


352 :345:02/06/09 19:05
Googleについてをテンプレに追加。
1がちょっと長いかなぁ。

353 :350:02/06/09 19:08
>>352
1はいいと思うよ。
Googleがちょっと長いかな(スマソ)。改行を少なくしたり、文章アレンジ
してみてください。

354 :デフォルトの名無しさん:02/06/09 19:22
例に対するコメントが長すぎるね

1.AND 検索 (例)CString CMap
CString と CMap の両方の単語を含むページを検索します

2.OR 検索 (例)CString|CMap
CString と CMap のどちらかを含むページを検索します

3.NOT 検索 (例)CString -CStringList
CString は含むけれど CStringList は含まないページを検索します

4.フレーズ検索 (例)"Microsoft Windows"
Microsoft Windows という文を含むページを検索します
スペースや + | などの記号のような特殊な文字も検索できます
(C++をキーワードに検索するには "C++" のようにする必要があります)

355 :350:02/06/09 19:28
>>354
簡潔でよいと思います。

356 :354:02/06/09 19:33
まだスマートじゃない
改良の余地があると思うんだけど
誰かプリーズ

357 :デフォルトの名無しさん:02/06/09 19:36
2以降は少々長くてもいいと思うよ。


358 :354:02/06/09 19:37
というより
http://www.google.co.jp/intl/ja/help/basics.html
http://www.google.co.jp/intl/ja/help/refinesearch.html
ここにリンクはったほうがよくない?

359 :350:02/06/09 20:19
>>351
書きまちがい、スマソ。
CString や CStringMap などを含むページは検索されますが

CString を含むページは検索されますが


360 :デフォルトの名無しさん:02/06/09 22:56
>>358
リンクはあったほうが良いと思うが、一応スレ内にも説明があったほうが
分かりやすいと思われ。

361 :デフォルトの名無しさん:02/06/10 16:14
んでどうなのよ、本当に立てる?

362 :デフォルトの名無しさん:02/06/10 18:22
作りたいものがない場合はどうすればいいのでしょうか?
このまま終わりたくはありません。

363 :デフォルトの名無しさん:02/06/10 18:24
おとなしく終われ

364 :デフォルトの名無しさん:02/06/10 18:28
>>362
マジレス。
とりあえずその道は諦めた方がいいんじゃないかなぁ?
と思うのは俺だけ??

365 :デフォルトの名無しさん:02/06/10 18:28
>>362
↓のスレにあるプログラムを片っ端から実装しろ。

http://pc.2ch.net/test/read.cgi/prog/1020766311/l50


366 :362:02/06/10 18:38
ここにいる人たちは何でそんなにやる気が持続するのですか?
もう死にたい。

367 :たわむら:02/06/10 18:42
ダイアルアップのショートカット作成について教えてください。

早速質問ですが「Windows2000」で「デスクトップ」に「ダイアルアップのショートカット」を
作成したいのですがその方法がわかりません。

ダイアルアップのエントリーを「RasEnumEntries」で取得し
デスクトップのフォルダ名を「SHGetSpecialFolderLocation, SHGetPathFromIDList」
で取得するまでは分かりますが、その後どうやって「デスクトップにショートカット」を
作成してよいのか分かりません、ご存知の方ご教授お願いできますでしょうか?

開発環境:
  Windows2000
  VC++6.0


368 :初心者:02/06/10 18:48
MFC(・∀・)イイ
生APIより分かり易い

369 :デフォルトの名無しさん:02/06/10 19:00
>>367
俺はやったことないんだけど>>2のリンクのVC++MLの過去ログで
ショートカット 作成
を検索するといろいろ出てくる。
こんなの
http://search.acty-net.ne.jp/mfc_search/archive/1999-2/msg04145.html
とか。

370 :たわむら:02/06/10 19:23
>>369デフォルトの名無しさん返信ありがとうございます。
たしかにショートカット 作成で検索するとたくさんヒットします。
私も先週からネットで検索し色々調べましたが、通常のファイルの
ショートカット作成、インターネットショートカット作成などは
ありましたが、ダイアルアップのショートカット作成を見つけることが
出来ませんでした。唯一見つかったのがWin9x対応のサンプルでした。
Win9xとWin2Kでは、ダイアルアップ情報の格納方法・格納場所が
違ってたりしてだめでした・・
自分で調べて出来ることはやってみましたが、結果は×・・・(TT)
どうやればよいのやら・・・



371 :デフォルトの名無しさん:02/06/10 21:28
>>370
>通常のファイルのショートカット作成、インターネットショート
>カット作成などはありましたが、
ほとんど同じだと思う。違いは、IShellLink::SetPathの代わりに
IShellLink::SetIDListでダイアルアップ接続の実体(ショートカ
ットの参照先)を設定することだと思うが。。。はずしてたらすまそ。

372 :デフォルトの名無しさん:02/06/10 21:44
>>362
362は仕事でプログラムしてるの?なら興味が向かなくてもなにか簡単な
アプリやクラスをまずは作ってみて、興味がでるようにするのが良いと
思う。プログラムすることを好きにならなければ、やる気を持続させるの
は難しいと思う。個人的には、最初はそういう自己満足も大切なんじゃな
いかな、と思う。

仕事で無いなら、苦労してまでプログラムしなくても良いと思うけど。。。

373 :371:02/06/10 21:59
>>370
Win2000のダイアルアップの場所はIShellFolderを使って
コンパネの下のネットワークとダイヤルアップ接続の下を地道に検索する
とか・・・。

374 :デフォルトの名無しさん:02/06/10 22:08
初歩的質問で申し訳ないんですが。。
テキストファイルから一行読み出し
->読み出した行を削除
を実装したいのですが削除で悩んでます。
CStdioFile f;
f.ReadString(strLine);//削除するフォルダへのパスを読み出し
int iCount=strLine.GetLength();//読み出したサイズ
f.SetLength(iCount);//削除(??)

当然動かなくて困ってます。
自分で調べますので
ヒントだけでもいただけませんでしょうか?
よろしくお願いします。

375 :デフォルトの名無しさん:02/06/10 22:10
>>362
作りたいものを無理にでも見つけれ。

376 :デフォルトの名無しさん:02/06/10 22:11
>>374
1行読み出す度にファイルを書きなおしたりするの?

377 :デフォルトの名無しさん:02/06/10 22:14
>>376
一行読み出せたら読み出した
内容(とあるファイルへのパスなんですが)を
処理するだけなので
その度書き直すつもりです。
なにかおかしなことしてたら指摘してもらえると助かります。

378 :デフォルトの名無しさん:02/06/10 22:16
376>>
追記です。
パスを読み出すともうファイルに用はないので
Closeしてます。
その時読み出したTextのみ消せたら、、
で悩んでます。

379 :デフォルトの名無しさん:02/06/10 22:31
>>378
一時ファイルを作るしかないんじゃないかなぁ。
1.オリジナルファイルを複製
2.複製したファイルから一行読み込む
3.複製したファイルから二行目以降をオリジナルファイルに上書きする
4.複製したファイルを削除

380 :デフォルトの名無しさん:02/06/10 22:37
>>379
そうなんですか、
残念です。
てっきり
二行目の前にファイルポインタ移動して
一行目を捨てる、、
みたいな方法と思ってました。
参考になりました。
今から実装してみたいと思います。
ありがとうございました。
後日報告いたします。

381 :デフォルトの名無しさん:02/06/10 23:40
どうしても一行ずつ処理しないと駄目?
一回EOFまで読み込んどいてポインタ移動して上書きするとか。

382 :374:02/06/11 05:45
みなさん、アドバイスありがとうございます。
>>381
EOFまで全てメモリにいれること考えたら
読み出すファイルが大きくなった時
大量のメモリを食うのでは?と心配です。
テキストファイル読むくらいで
メモリ心配してしまうっていうのは考えすぎで
>>381
さんの言うようにしても大丈夫なんでしょうか?

383 :デフォルトの名無しさん:02/06/11 08:06
>>382
メモリが心配になるほど大量のデータを、
読んでは消して、読んでは消して、
なんてやってたらものすごい時間かかりそう。
全て一度にが嫌なら1MBずつ読んでみては?

384 :デフォルトの名無しさん:02/06/11 23:47
自己保身age

385 :質問者:02/06/12 21:32
質問ッ!
CScrollViewのスクロールバーを常時出しっぱなしにしたいのです。
ドキュメントが小さいときはCEditのように「つまみ」部分だけ消える、みたいな。
どうしたらよいのでしょうか。



386 :デフォルトの名無しさん:02/06/12 21:33
VFC-LINKのメールから必要な情報だけ残して無駄な文章を全て破棄するにはどうすればいいですか?

387 :デフォルトの名無しさん:02/06/12 21:38
>>382
余程大きくない限りは大丈夫だと思うけどなあ。
実際のファイルサイズがわからないからなんとも言えないけど。

388 :デフォルトの名無しさん:02/06/12 21:50
>>386
すべて削除するか、unsubscribeのメールを
majodormoに送りましょう。

389 :デフォルトの名無しさん:02/06/12 22:33
>>386
奴の話題はここで。
http://pc.2ch.net/test/read.cgi/prog/1023422827/l50

390 :デフォルトの名無しさん:02/06/12 22:48
Windowsメッセージなどの一覧はどこかで見れませんか?
WM_***やAFX_***など。


391 :デフォルトの名無しさん:02/06/12 22:53
>390 spy++で

392 :デフォルトの名無しさん:02/06/12 22:57
>>390
PC内からWIN32API.CSVを検索してみそ。

393 :デフォルトの名無しさん:02/06/12 23:05
>>392
どうもありがとうございます。
知らないものまでたくさん出てきました。
>>391
spy++ではWindowがでているところのメッセージしか見れなくないですか?
spy++はいまいち使い勝手がよくないです...

394 :デフォルトの名無しさん:02/06/12 23:21
>>393
いや、メッセージオプションで表示されるメッセージリストのことをいいたかったんだけどサ。

395 :デフォルトの名無しさん:02/06/12 23:24
>>393
一応、メッセージオプションの「追加するウィンドウ」項目で
いろいろ選べますよ。親や子、すべてのウィンドウなど。。。

396 :デフォルトの名無しさん:02/06/12 23:31
定義されてる一覧を見たかったんだろ

397 :デフォルトの名無しさん:02/06/13 14:16
あるボタンを押したときに、次のような処理でウィンドウ内のイメージをビットマップに落とそうとしています。

 memDC.CreateCompatibleDC(pDC);
 bm.CreateCompatibleBitmap(&hMemDC, w, h);

 obm = memDC.SelectObject(&bm);
 memDC.BitBlt(0, 0, w, h, pDC, 0, 0, SRCCOPY);
 memDC.SelectObject(obm);

 GetDIBits(memDC, bm, 0, h, data, ...);

問題のビットマップの落とす処理が、OnDrawの時に渡されるpDCを使って呼び出すととうまく動くのですが、
ボタンを押したときに呼ばれるところから、CClientDC dc(this)として作ったDCを使うとイメージがとれません。

OnDrawに渡って来るのは、CPaintDCですがこれはOnPaintでしか使わないようにMSDNで
書いて有りました。

CClinetDCを作った後に、OnPrepareDCもやってみました。

理由がわからず、途方にくれています。


398 :デフォルトの名無しさん:02/06/13 14:23
>397
よく分からんけど、
CreateCompatibleBitmapの引数には
&hMemDC(memDCの間違い?)では無くpDCを渡したほうがよくない?と言ってみる

399 :397:02/06/13 14:53
>398

その通りですた。感謝感謝。
でも、なんでか理解できてません。
こんなヘタレに解説して下さる奇特な人の降臨キボンヌ。

400 :デフォルトの名無しさん:02/06/13 15:12
397
そもそもthisのウィンドウにクライアントないんじゃない?
枠内、白色になってる?

401 :デフォルトの名無しさん:02/06/13 15:32
へっ?
クライアント領域が存在しないという意味ですか?
それとも、thisがCWndとかのサブクラスで無いという意味ですか?

402 :デフォルトの名無しさん:02/06/13 15:50
a.cppで作ったクラスをb.cppで使うにはVC++ではどうすればいいんでしょうか?

403 :デフォルトの名無しさん:02/06/13 16:17
>>402
いろいろ出来ると思うけど
a.cppをプロジェクトに追加するとか
a.libを作成するか、dllにするとか
make.makファイル作成するとか。


404 :デフォルトの名無しさん:02/06/13 16:21
#include "a.cpp"

405 :デフォルトの名無しさん:02/06/13 16:31
a.cpp

#include <afxsock.h>
#include "stdafx.h"

namespace Sat
{

class CHttpServer
{
public:
CHttpServer();
~CHttpServer();
void Start();
void Stop();

private:
CSocket *Sock;
};



}

b.cpp
using namespace Sat;

CTinyhttpApp::CTinyhttpApp()
{
// TODO: この位置に構築用コードを追加してください。
// ここに InitInstance 中の重要な初期化処理をすべて記述してください。
CHttpServer Ser();
}

error C2871: 'Sat' : 存在しないか名前空間ではありません。
error C2065: 'CHttpServer' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'Ser' の前に必要です。
error C2065: 'Ser' : 定義されていない識別子です。

a.cppとb.cppは同じプロジェクトにいます。


406 :デフォルトの名無しさん:02/06/13 16:34
ダイアログエディタ使ってるんですけどコントロールパレットが消えちゃいました・・・
どないすればええでしょう・・

407 :デフォルトの名無しさん:02/06/13 16:38
406
メニューバーか適当なツールバーを右クリック

408 :デフォルトの名無しさん:02/06/13 16:38
ツールバーの適当な余白で右クリック→コントロール

409 :デフォルトの名無しさん:02/06/13 16:44
405
a.hに書かれるべきクラスの宣言がa.cppにいるのがふしぎ。

/* b.cpp */
#include "a.h"




410 :デフォルトの名無しさん:02/06/13 16:47
あった♪
ありがとうございます>>407

411 :デフォルトの名無しさん:02/06/13 17:01
>>409
解決しました。納得もしました。みなさんありがとうございました。

412 :デフォルトの名無しさん:02/06/13 17:36
>397
ダイアログベースでボタンを追加して以下のようにしてみますた。

void CTttDlg::OnCapt()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CClientDC dc(this);

CDC memDC;
CBitmap memBitmap, *pOldBitmap;

memDC.CreateCompatibleDC(&dc);
memBitmap.CreateCompatibleBitmap(&dc, 100, 100);
pOldBitmap = memDC.SelectObject(&memBitmap);

memDC.BitBlt(0, 0, 100, 100, &dc, 0, 0, SRCCOPY);


dc.BitBlt(0, 101, 100, 100, &memDC, 0, 0, SRCCOPY);
}

これでボタンを押すと円がコピーできたけど関係ない?

413 :デフォルトの名無しさん:02/06/13 23:22
>>399
とりあえず俺の考えを書いておく(経験的なもので裏づけは無い)

CreateCompatibleBitmapは、DCと互換性のあるビットマップを作るだけで、そのビットマップの種類を指定することは出来ない。
互換性さえあれば32bitだろうがパレットだろうがおかまい無しってこと。
んで、現在の仕様は、引数に渡されたDCに選択されているビットマップと同じフォーマットのビットマップを複製するものと思われる。
CreateCopmatibleDCされたばかりのビットマップにはどんなビットマップが選択されてるかわかりゃしない。
(俺の経験では2bitのモノクロビットマップ)
だからCreateCompatibleBitmapに作成したばかりのDCを渡すとうまくいかない、のではないかと予想。

414 :デフォルトの名無しさん:02/06/14 11:00
>412

16bppや32bppでカラーの円だと色がおかしくなりませんか?
おかしくならないとしても、memBitmapにはモノクロとしてしか格納されていないのでは。

>413
解説ありがとうございます。大変勉強になりました。
MSDN探したら、ずばりのKBがありました。
Q139165 PRB: Memory DC Produces Monochrome Images

When creating a compatible bitmap for the memory DC, the handle to the memory DC is used
as the first parameter to the call to CreateCompatibleBitmap(). This create a monochrome
bitmap because a memory DC created with CreateCompatibleDC() is given a 1x1 monochrome
bitmap as its default bitmap.

教訓
screenDC --CreateCompatibleBitmap--> bitmap A
   |
CreateCompatibleDC
   |
   V
memoryDC --CreateCompatibleBitmap--> bitmap B

bitmapAとbitmapBのbppは異なる(screenDCがモノクロで無い限り)
サイズはCreateCompatibelBitmapで指定しますね。

415 :デフォルトの名無しさん:02/06/14 11:32
>414
それはCDCのオブジェクトが最初から持っているビットマップがモノカラー1×1なのでは?



416 :デフォルトの名無しさん:02/06/14 11:43
言語障害ですか?

417 :413:02/06/14 11:50
>>414

お、俺の予想当たってるね
#言うまでもないが414の”2bitのビットマップ”->"1bitのビットマップ"

418 :デフォルトの名無しさん:02/06/14 11:56
>416
へ?
だから君は今作ったばかりのメモリDCを引数にコンパチなビットマップを作ると
モノカラー1×1のビットマップのコピーになるって言ってたよね。だからCClientDCのdcにも懐疑的なんでしょ?
>412はCClientDCのオブジェクトでCreateCompatibleBitmapしてるけど別にこれは良いのでは?といいたい。
CDCのオブジェクトでCreateCompatibleBitmapしたのならモノカラー1×1になるんでは?ということ。(>397ではそうしてる)
CClientDCはコンストラクタが適切な色深度やフォーマットにしてくれるんだと思ってた。



419 :デフォルトの名無しさん:02/06/14 12:13
>418
> CClientDCはコンストラクタが適切な色深度やフォーマットにしてくれるんだと思ってた。
CDCとCClientDCの違い知ってるか?
コンストラクタ見たのかと問い詰めたい。

420 :デフォルトの名無しさん:02/06/14 12:18
>419
いや、知らない。
つーか>412のdcをつかってCreateCompatibleDCするとなんかまずいの?

421 :デフォルトの名無しさん:02/06/14 12:20
間違い。「CreateCompatibleBitmapするとなんかまずいの?」です。

422 :デフォルトの名無しさん:02/06/14 12:21
>>420
まずくない
>>414が勘違いしただけ

423 :414:02/06/14 12:30
>414が勘違いしただけ

です。
memBitmap.CreateCompatibleBitmap(&dc, 100, 100);
pOldBitmap = memDC.SelectObject(&memBitmap);
のDCの指定部分を取り違えました。

424 :デフォルトの名無しさん:02/06/14 12:36
デバッグモードでは問題なく動作して、リリースモードでコンパイルすると

Xxxx.cpp
xxxxview.h(123) : error C2509: 'GetDocument' : このメンバ関数は、'CXxxxView' クラス内で宣言されていません。

とエラーが出る。
CXxxxViewはCViewを継承しているんだからGetDocumentは持ってると思ったんだけど。
引っかかってるのは以下の箇所。

#ifndef _DEBUG // XxxxView.cpp ファイルがデバッグ環境の時使用されます。
inline CXxxxDoc* CXxxxView::GetDocument()
{ return (CXxxxDoc*)m_pDocument; }
#endif

何をやってくれるコードかよくわかんないし、
リリースモードでコンパイルするときには関係ないんじゃないか?
と思ってコメントアウトしたらコンパイラは通ったんだけど、
Viewに特定の描画を行ったり、ファイルを読み込もうとしたりすると、例外処理でこけるようになった。
どうしたらいいんだろ。
最近の過去ログを見ていると、デバッグモードでの配布は問題があるみたいだし。

425 :デフォルトの名無しさん:02/06/14 13:03
GetDocumentはデバッグ時はcppファイル内のものが使われ、リリース時は
.h内のものが(インラインで)つかわれます。
クラス内にpublicなメンバ関数として宣言されていますか?


426 :デフォルトの名無しさん:02/06/14 14:11
Windowsでプログラムするときは以下の流れでいいのですか?

Windowsプログラムの流れ
イベントが始まる。
(プログラムが開始される、キーが押されるなど)

WindowsからMessageがくる。
WM_PAINTとか、ON_COMMANDとか、On_LButtonDwnとか

メッセージマップでメッセージと対になっているメンバ関数と結ばれる。
OnPaintとか、OnCommandとか、LButtonDwnとか
On**という関数はWM_**というメッセージが。来たら呼ばれる

メンバ関数の中で定義された関数、変数などの処理が呼ばれる。

関数の中などの記述が実行される。
(イベントが実行される。)


427 :デフォルトの名無しさん:02/06/14 14:14
初心者スレ立てようと思ったらスレ立てすぎって怒られた。

428 :デフォルトの名無しさん:02/06/14 18:44
>>427
それは残念。後日改めて・・・でしょうか?

429 :424:02/06/14 19:43
>>425

CXxxxDoc CXxxxView::GetDocument() // 非デバッグ バージョンはインラインです。
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CXxxxDoc)));
return (CXxxxDoc*)m_pDocument;
}

↑これもひっかかる要因になってたので封じてました。
有効にして動かしてみたものの、やっぱり同様の操作でこける……。
どこで転んでいるのか追ってみたものの、ソース上では例外処理は起きなかったっす。
(なんか、変なアドレスとアセンブリの命令っぽいのが
ずらーっと表示されるウィンドウの中で力尽きる模様)

430 :デフォルトの名無しさん:02/06/14 19:53
>>426
基本的にいいと思いますよ。

431 :426:02/06/14 21:00
>>430
基本的に、といいますと細部はまだ甘いですか?
まだまだです。
どうもありがとうございました。
またよろしくお願いいたします。

432 :デフォルトの名無しさん:02/06/14 23:14
>>429
新しいプロジェクト作って比較してみれば?
だいたい原因は予想つくけどさ。

433 :429:02/06/15 00:06
>>432
その「予想のついている原因」と、
それの解決方法を示してもらえると助かるんだが。
それと「新しいプロジェクトを作って比較」の意味も。
一から作り直すってこと……?

434 :デフォルトの名無しさん:02/06/15 15:37
>>433
それはあなたが確認するんだよ。

435 :デフォルトの名無しさん:02/06/15 16:17
クラス,関数はどうやって理解してますか?
コマンドみたいに地道に覚えるしかないでしょうか?

436 :デフォルトの名無しさん:02/06/15 16:23
使うときに覚える。
普段から英単語見たく勉強してるヤツ居る?

437 :デフォルトの名無しさん:02/06/15 16:27
>>435
覚えない
慣れるか、たいていは使うときにヘルプ見る

>>436
.NET クラスライブラリは一通り目を通そうと思ってるけど、なかなか膨大だね

438 :デフォルトの名無しさん:02/06/15 17:28
こんな処理がしたい
クラスライブラリさがす
あった  使う
なかった ほか探す
探してもなかった 自作する
ですか?

439 :デフォルトの名無しさん:02/06/15 17:45
使うときにヘルプ見て、そのときについでにそのクラスのメンバ関数一覧も
目を通しておく。(CWndなどはちと多いけど。)
そういうことを何回か繰り返せば、「あー、あんな関数あったっけなー」と
思い出したりする。
それくらいでいいんじゃなかろか。

440 :デフォルトの名無しさん:02/06/16 00:09
まあだいたいこのクラスにはこんな関数が用意されてるだろうな言う予測がつくからね。

441 :仕様書無しさん:02/06/16 09:21
ActiveXの質問です。
Aと言うActiveXコントロールと、Bと言うActiveXコントロールを開発して、
htmlへ埋め込み、AとB間で制御を行いたいのですが、どのように連携を取
れば良いでしょうか?
たとえば、「Bのコントロールの一部をクリックしたら、Aの表示が変わる」
と言った感じです。
アドバイスお願いします。

442 :デフォルトの名無しさん:02/06/16 11:45
BからAの関数を呼ぶ(COM経由)

443 :デフォルトの名無しさん:02/06/16 13:25
>>441
AとBはお互いに完全に独立してるんかな?
だとしたら、Mediatorパターンをやればいいんじゃないかな。

444 :デフォルトの名無しさん:02/06/16 14:52
>>441
AとBのコンテナとなるCというActiveXを作り、HTMLに貼るってのはどうかな。
もちろん、A,Bのイベントを元に両者をコントロールするのはCです。

445 :443:02/06/16 15:18
>>444
ちなみに、それが「Mediatorパターン」なわけだけど(笑)。

446 :444:02/06/16 16:32
>>445
まぁ、そうだけど、パターン名だけ言っても分かりずらくない?
441の聞いているのは、概念的なことではなく、実際の実現部分だと思ったんだが。

447 :デフォルトの名無しさん:02/06/16 17:00
知らなかったんでしょ?プ

448 :デフォルトの名無しさん:02/06/16 22:22
VC++は.net担って何が大きく変わったのですか?

449 :デフォルトの名無しさん:02/06/16 22:29
>>448
MFCが一部変わったのと、コンパイラ、リンカの最適化が強化されたようです。
当方では、作成した実行形式のサイズはVC++6.0より若干大きくなりました。
あと、STLがらみのwarningが出なくなっているとかがあります。
機能面では、個人的には、「あまり変わってない」印象をもっています。

ユーザーインターフェースは大幅に変わりました。移行に戸惑うかも知れません。
VC++6.0に比べると、起動が遅くなり、全体的に重い印象を持ちました。

450 :448:02/06/16 22:39
>>449
ありがとうございます。
そうすると、今までの開発手法は特に変わっていないということでよいのですね。
6で製作したのも.netでコンパイルできると。
でも、そうすると余計に.netってなに?、となりそうです。

451 :449:02/06/16 22:43
>>450
>でも、そうすると余計に.netってなに?、となりそうです。
一応、最大の変更点は、「管理(embeded)コード」をかける事らしいです。これが
どういうものなのか良く知らないので、興味があったら調べてみてください。
他の.net(VB,C#)とも関連のある部分らしいです。違ってたらすまそ。

452 :デフォルトの名無しさん:02/06/16 22:51
>>451
embeded?
managedじゃない?

453 :デフォルトの名無しさん:02/06/16 23:27
マネージは新しい.netの暮らすライブラリ使うときにどうぞ、なんだね。
using namespace system;
とか宣言して使えよと。
また新しいクラス覚えないといけないね。

454 :デフォルトの名無しさん:02/06/17 00:20
ほんと?

455 :デフォルトの名無しさん:02/06/17 09:09
VC++でWindowsプログラムするときに
面倒だ、本当に面倒だ。
とよく言われます。
何が面倒なのですか?
RADになってないからですか?

456 :デフォルトの名無しさん:02/06/17 09:25
>>455
GUI関係のどうでもいい部分が面倒です。

457 :リアル厨房@リアル工房:02/06/17 10:03
VC++.netは動作が重いのでちと使いにくいかとSTLがちょっと使いにくくなったのがいまいちかな

458 :451:02/06/17 10:09
>>452
そうでした。逝ってきます。

459 :デフォルトの名無しさん:02/06/17 10:14
MSDNの日本語訳部分、うまく理解できますか?
標準日本語使用して翻訳しているからなのか、
房には解釈が難しいところも多々ありますが。
たまに英語ページに飛ぶし。
MSDN理解するのに何かうまい方法はないでしょうか?
VC++の理解はMSDNの理解かと、思いますが、どうでしょう。

460 :デフォルトの名無しさん:02/06/17 10:21
>>459
英語勉強しろ 藁

461 :デフォルトの名無しさん:02/06/17 10:38
時計や電卓作れる程度のレベルだと超初心者ですか?
あと電源落とすくらいとか。

462 :デフォルトの名無しさん:02/06/17 10:39
>>459
私も苦手でしたが、無理やり読んでいるうちになれましたよ。
英語部分を無理して読めば、日本語部分の変な訳も(どういう英語から訳されたのか)
検討が付き、意味も分かるようになると思います。
英語はテクニカルタームですので、文法的には中学生レベルで十分と思います。
勿論、コンピューター用語は知っていなければなりませんが。

463 :デフォルトの名無しさん:02/06/17 10:45
MFCある程度理解してもウインドウの枠などしか出来ないと思いますが
この先どうすればよいのでしょうか?


464 :デフォルトの名無しさん:02/06/17 11:12
>>463
>この先どうすればよいのでしょうか?
それは、何をしたいのかによって答えも変わってくると思います。
仕事で使うには、Windowの生成以外にもしなければならないことが
たくさんあるでしょうし、趣味でやる場合は無理にMFCを深く理解する必要が
ない場合もあるでしょう。

465 :デフォルトの名無しさん:02/06/17 11:18
MFCはウインドウ作成以外にも使用可能ですか?

466 :デフォルトの名無しさん:02/06/17 11:23
>>465
もちろんです。データベースのやり取りや、OLEサポート、その他もろもろ。
詳細は、MSDNライブラリのMFCクラスのところを読んでください。

467 :デフォルトの名無しさん:02/06/17 13:33
VC++.netでAppWizardが吐いたコードを色分けすることは出来ないでしょうか?
予約語が青くなるような感じです。
無理かな...

468 :デフォルトの名無しさん:02/06/17 13:43
>>467
無理でしょう。

469 :デフォルトの名無しさん:02/06/17 15:24
VC++で電卓を作る場合何が必要でしょうか?

470 :デフォルトの名無しさん:02/06/17 15:43
>459
MSDNは英語が読めてもわかりません。関数リファレンス程度にはなりますが

>469
まだ電卓の課題やってるんですか?

471 :デフォルトの名無しさん:02/06/17 15:45
まだやってますよ

472 :デフォルトの名無しさん:02/06/17 16:48
質問があります。
ファイル選択ダイアログってありますよね。
その中の真ん中にあるリストなどを自作して
CFormViewに埋め込みたいのです。
リストビューにマイコンピュータなどを表示している
サンプルなどを知っている方がいたら教えていただけないでしょうか?



473 :デフォルトの名無しさん:02/06/17 17:02
>>472
ttp://codeguru.earthweb.com/shell/explorer.html

474 :デフォルトの名無しさん:02/06/17 18:58
>>473さん
ありがとうございます。
しかし、'atlres.h'がありません、
となってしまうのですが・・・・

475 :デフォルトの名無しさん:02/06/17 19:00
>>471
センスないんだよ
別の道を考えれ

476 :デフォルトの名無しさん:02/06/17 19:51
>>475
デジタル時計ならナントカなったのに...
ダイアログボックスの使い方なんでしょうね、電卓は多分...
VBから入ればよかったカモ。

477 :473:02/06/17 20:35
>>474
WTLインストールしる。
ttp://msdn.microsoft.com/msdn-files/027/001/586/wtl31.exe

478 :デフォルトの名無しさん:02/06/17 20:38
>>476
つーかサンプル見たでしょ?(193)

479 :デフォルトの名無しさん:02/06/17 21:27
>>478
サンプル見ましたよ...
ほか探すか...

480 :デフォルトの名無しさん:02/06/17 22:05
単なる四則演算電卓だったらデジタル時計より簡単じゃないかい?

481 :デフォルトの名無しさん:02/06/17 22:14
>>480
そうなんですか?
こう、発想の貧弱さは悲しいものがあります。
BCBならナントカなりそうなのですが。
(軽く探したらラベルとボタンだけでできそうだし...)

夢は大きくネットワークプログラムしたいのに...ううぅぅ。

482 :デフォルトの名無しさん:02/06/17 22:16
>>481
コンソールの電卓なら100行くらいで出来たよ

483 :デフォルトの名無しさん:02/06/17 22:22
>>481
発想とかじゃなくてWinの電卓見れば大体必要なものはわかるでしょ?
関数電卓となるとちょっと面倒臭いけど。
リソースエディタでチョイチョイっとそれっぽいコントロール置いて
後はそのコントロールに対するメッセージを処理してあげればいいじゃん?

484 :デフォルトの名無しさん:02/06/17 22:26
なんだかいくらサンプル示しても理解できなくて投げ出してるようだが
サンプル探すよりサンプル理解できるように勉強する方が先じゃなかろか。


485 :デフォルトの名無しさん:02/06/17 22:28
電卓、電卓、で大変です。
XPのアクセス権変更は出来るようになったのになぜ電卓が出来ないんだ...
と本当に思うのです。
くそぅ...

486 :デフォルトの名無しさん:02/06/17 22:31
なんかネタ臭いな・・・>電卓

487 :デフォルトの名無しさん:02/06/17 22:51
>>486
ネタなら冗談抜きで安心なんですけど。
アクセス権などはダイアログボクス使わないのですが、
ダイアログボクスの連動がいまいち分からないのです。
ダイアログボックスの使い方が出ている書籍はないのでしょうか...
”MFCによるWindowsプログラミング”これは今売ってないですよ...
また、確かVC++6.0Standardにはダイアログボックスの使い方等の書籍がついていたはずなのですが、
VC++6.0StandardはVS.NET_MSDNをいい気になって買った後ヤフオクで売ってしまった...
VC++.netStandardには書籍がついているのですか?

488 :デフォルトの名無しさん:02/06/17 22:52
AccessのマクロをMFCで外部から動かしたいのですが、どうしたらよいでしょうか・・・?
サパーリ分からないので、ご存知の方いらっしゃいましたら教えてください m(_ _)m

VC++(MFC) -> Access97のマクロ

489 :デフォルトの名無しさん:02/06/17 22:53
>>487
そんなときは「VC++ スーパービギナーへじょいjぎえあねおいいお、:l:::::::::::::::

490 :デフォルトの名無しさん:02/06/17 22:54
>>488
DDEでGO!

491 :デフォルトの名無しさん:02/06/17 22:57
>>489
何やらの本探してみます。
とかいいながら今日はもう寝ますが...


492 :デフォルトの名無しさん:02/06/17 23:47
>>487
>ダイアログボクスの連動がいまいち分からないのです
ダイアログと何との連動が分からないのか書かないと、答えるほうもアドバイス
しようがないよ。単にMFCでダイアログボックスを表示することは出来てるの?
ダイアログ上のボタンを押したときの処理(及びその追加方法)が分からないの
か、電卓だから数字の表示が分からないのか・・・。

493 :デフォルトの名無しさん:02/06/18 00:11
>>492
時計出すにしたってねえ・・・・・出力はわかるけど入力がわからんとか?

494 :デフォルトの名無しさん:02/06/18 08:38
>>493
時計の入力って何だろう。

495 :デフォルトの名無しさん:02/06/18 17:08
VC初心者ですけど、よろしくお願いします。

VCからオラクルのストアドファンクションを呼び出して、
値を取得したいのですが、どのようにすればよいのでしょうか?



496 :デフォルトの名無しさん:02/06/18 20:48
>>494
いやだから時計しかやってないから電卓での入力がわからんのかなあって。

497 :デフォルトの名無しさん:02/06/18 21:18
495
「ATL オブジェクト ウィザード」でオラクル選べばすぐできると思うけど。
(VC Professonal Edition 以上)

498 :デフォルトの名無しさん:02/06/18 22:22
>>491
ヒマだったので電卓のサンプル作ってみた。メインコードが250行くらい。
操作はWindows電卓に準拠で整数の四則演算しかできないが、欲しいときは
捨てメアドを用意してね。ただしBUGがあってもノークレームね。

499 :491:02/06/19 09:21
>>498
電卓ください。

500 :498:02/06/19 09:47
>>499
メアド書いたら送るよ。いつも使ってるメアドはやばいから、フリーの
メアド取得するよろし。

501 :491:02/06/19 09:48
>>500
499のE-mailのところに書いてあります。
よろしくお願いいたします。

502 :デフォルトの名無しさん:02/06/19 09:57
送ったよ。しばし待たれい。

503 :491:02/06/19 10:04
>>498
ありがとうございました〜♪

504 :デフォルトの名無しさん:02/06/19 10:09
>>498産、私にもください。
メルアド公開するのが怖いので、
ここに貼り付けて。
おねがいします。

505 :デフォルトの名無しさん:02/06/19 10:37
>>504
ここだと色々ツッコミが入りそうなコードなので勘弁です。
エイヤっで作ったので色々無駄な部分もあるし・・・晒されるのはイヤです(笑)。

506 :デフォルトの名無しさん:02/06/19 12:44
MFCはバグがあるからSDKで作った方が良い
と言ってる人を見かけたんだけど,それって正しいの?

507 :デフォルトの名無しさん:02/06/19 12:49
>>506
・Win32 API にはバグが無い
・MFC のどこにバグがあるのかわからないので回避できない
・MFC よりもバグの無いコードを書ける
・MFC を使わないことによる生産性の低下は問題にならない

の条件が成り立つならば、正しいでしょう。

508 :デフォルトの名無しさん:02/06/19 13:24
>506
Win32APIにもバグは結構あるぞ。

509 :デフォルトの名無しさん:02/06/19 14:10
VS.NETのIDEの使い方は皆さんどうやって覚えましたか?
書籍はあまり見ません。
ヘルプ見ればいけるか、classwizardやリソースエディタ使えばいいのか。
そのうち林晴比古先生が、はじめてのVisualC++.net でも出すか。
ここクリックするとデバックする、ここクリックするとソリューション閉じる、
とか言うどうしようもない書籍出版か。



510 :デフォルトの名無しさん:02/06/19 14:17
>>509


511 :デフォルトの名無しさん:02/06/19 14:57
使い方はヘルプに書いてあるでしょ。

512 :デフォルトの名無しさん:02/06/19 15:41
>>510
勘で使えるあなたは偉い。


513 :デフォルトの名無しさん:02/06/19 15:49
今頃.net購入。
キャッシュバック間に合うかな?

514 :デフォルトの名無しさん:02/06/19 16:39
なんがここの奴らは
.net購入だと!?
いくらすると思ってんだ
金が無いから泣く泣く2万のvc++6standardを買ったんだぞ俺は。

515 :デフォルトの名無しさん:02/06/19 17:51
>>514
今ならVisualC++.netStandardが\13.000-で買える罠(w

516 :495:02/06/19 19:39
>>497 
貴重な情報ありがとうございます。

教えてもらって申し訳ないのですが、
私の環境では使えませんでした。。。

517 :デフォルトの名無しさん:02/06/19 19:55
VC++.netStandardにはVC++6.0Standardに付いていた分かりやすいと思った
書籍は付いているのでしょうか?
6.0についている書籍は初心者にはとてもよいものに見えたのですが、
あれの最新版は出ていませんでしょうか?

518 :デフォルトの名無しさん:02/06/19 20:00
最近スレ違いギリギリの話題が多いね

519 :デフォルトの名無しさん:02/06/19 20:23
>>517
付いてない。

520 :デフォルトの名無しさん:02/06/19 20:25
VC6ってそんな便利なもんついてんの?一回も見たことないや・・・・・

521 :質問者:02/06/19 20:58
えっと、質問です。
SDIアプリケーションを作ってます。
そのアプリからさらに、ツールバーつきの別ウィンドウを出したいのですが、
別ウィンドウは、以下のどの方法を採用すればよいでしょうか。
(a)ダイアログで実装。(しかしツールバーって普通フレームウィンドウにしかくっつかないような?)
(b)フレームウィンドウで実装。(アプリケーション内に2つのフレームウィンドウ?どうやって?)
(c)別プロセスで別アプリとして起動。(そんな馬鹿な。通信が面倒くさ)

なんつーか、どうするのが普通なのかわかりません。
ただツールバーつきの別ウィンドウを出したい、それだけなんですが。
助言ください。


522 :デフォルトの名無しさん:02/06/19 21:30
>>521
ダイアログでも、自前でツールバー作れば表示されるよ。
やり方は、ダイアログクラスのメンバに CToolBar メンバを作って
OnInitDialogのタイミングでCreateする。こんな感じ
m_oToolBar.Create( this, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, IDC_TB_XXX );
引数は好みに応じて変えてください。

523 :521:02/06/19 22:26
ありがとうございます、しかし‥‥
(1)IDC_TB_XXXにツールバーのリソースをつくり、
(2)ファイル内に CToolBar m_oToolBar; として、
(3)OnInitDialog()で522のCreate()文をそのまま書いてみましたが
ダイアログ上にツールバーが表示されません‥‥なぜ?
Win2000, VC++6.0。


524 :デフォルトの名無しさん:02/06/19 22:27
>>523
ツールバーのサイズが0になってるんじゃない?
確か自分で設定しなきゃいけなかったはず

525 :521:02/06/19 22:28
>>524
なんと。実験してみます。


526 :521:02/06/19 22:39
とりあえずCreateの第3引数の意味を間違えていたっぽいのには気づきました。
だがしかし、LoadToolBar()、SetSizes()、SetHeight()
してもツールバーは表示されず‥‥。



527 :デフォルトの名無しさん:02/06/19 22:47
よくしらんがShowWindowとUpdateWIndowは送ってみた?

528 :521:02/06/19 22:50
ShowWindow()はためしにしてみました。効果ナシ。
Create()でもVisibleにしてるし。
UpdateWindow()?ちょっと調べてみます。

なにか根本的なこと、見落としてるのかな?



529 :521:02/06/19 22:56
ここ読むことにします。↓
http://www.bd.wakwak.com/~opapa/VC/Dialog/ToolBar.htm


530 :デフォルトの名無しさん:02/06/19 23:01
ATL COM AppWizardでCOMを作ってるんですが、CFileDialogを使おうとしたら
コンパイル時に"定義されていない識別子です"でエラーになりました。これってどうして
なんでしょうか?
AppWizardで"MFCのサポート"には、チェックを入れました。
ATLとかCOMとかよくわかってません。


531 :521:02/06/19 23:02
SetWindowPos()したら表示されました‥‥。
これでダイアログで逝けます。
レスくれた方、アリガd( ´ー`)ノ


532 :デフォルトの名無しさん:02/06/19 23:42
>>530
#include<afx???.h>

533 :デフォルトの名無しさん:02/06/20 15:18
Windowsプログラミング初心者です。

Googleや過去スレ,サンプル集等調べたのですが分からなかったので質問させていただきます。
Explorerにプラグインで機能を追加したいと考えているのですが、その実現方法が分かりません。
この辺の説明が詳しく紹介されているHPや書籍等ありましたら教えていただけないでしょうか?

具体的には、一定のタイミングでサーバにアクセスし、情報を取得した上で、アイコンを変化or詳細表示の列追加等で実現したいと考えております。

よろしくお願いします。

534 :デフォルトの名無しさん:02/06/20 15:29
C++は初めて使うのですが、
A、Bというダイアログを作り、
「AのCというボタンを押すと、Bを表示させる」ということをしたいのですが、
どのようにすればよいのでしょうか?
よろしくお願いします。

535 :デフォルトの名無しさん:02/06/20 15:36
VS.NETについているVC.NETでダイアログを編集しようとしたとき
イベントハンドらウィザードを表示させようとすると(ヘルプのとおりに実行)
スクリプトエラーと出るんですけど何ででしょうか?
その後イベントハンドラウィザードは表示されますが、何も選択できません。
こういうときはどうするのでしょうか?

536 :デフォルトの名無しさん:02/06/20 15:38
>>534
1.リソースエディタでダイアログA、Bを作る。
2.Aにボタンコントロールを貼り付ける。これをCという名にする。
3.Cが押された場合に発生するイベントに対応した場所に、
  Bを表示させる処理を書く。

これでわからないようだったら、サンプルが載っている本を買いましょう。
本を買う気がないなら、何も言わずにお星さまになって下さい。

537 :デフォルトの名無しさん:02/06/20 15:43
>>536
レスありがとうです。
いろいろ調べてるのですが、「Bを表示させる処理を書く。」
のサンプルが載っているの本、WEBがなかなか見つからないのです。。。
ここがどうしても分からないので、お星さまになるしかないのかな。。。

538 :デフォルトの名無しさん:02/06/20 15:47
>>537
それを考えるのがプログラム...

539 :デフォルトの名無しさん:02/06/20 15:48
>>537
DoModal

540 :デフォルトの名無しさん:02/06/20 15:52
VisualC++などのサービスパックはMicrosoftから落とせるのですか?
落とすとしたらどこから落とすのでしょうか?
CD来るの待っているしかないのですか?

541 :デフォルトの名無しさん:02/06/20 15:56
>>533
英語でええかいの?
http://www.codeproject.com/atl/ietoolbartutorial.asp

542 :533:02/06/20 16:02
>>541
情報ありがとうございます。

英語は苦手ですが、今から見てみます。
ありがとうございました。

543 :デフォルトの名無しさん:02/06/20 16:02
533
サーバーサイドになるけど
<META HTTP-EQUIV="Refresh" CONTENT="60">
タグ使っうかjavascriptでリロードしたほうが簡単だと思うけど。
ActiveXコントロールはクライアントサイドでバイナリが動くから便利は便利
だけどで533的なことやろうと思ったら簡単そうで結構大変。

544 :533:02/06/20 16:10
>>543
ありがとうございます。

やはり難しいんですか...
機能的には単純なのでもしかすると、簡単に実装できるのかと思っていたのですが...
自分でももっと勉強してみます。

545 :537:02/06/20 16:14
>>539
無事に出来ました。どうもありがとうございました。

546 :デフォルトの名無しさん:02/06/20 17:43
誰ですか?お星様とか言ってるヤシは。

547 :デフォルトの名無しさん:02/06/20 19:42
ヘルプ見ていたら
Sorry, no topics were found for the selected link.
こんなの出てきて先に進みません。
修復の仕方はどうすればいいのでしょうか?

548 :535:02/06/20 19:56
スクリプトエラーが起こるときと起こらないときがあるんですが何ででしょうか?
僕の頭のバグですか?
せめてスクリプトエラーが出る理由さえ分かればいいのに。。。

549 :530:02/06/20 20:55
>>532
afxdlgs.hをインクルードしたらうまくいきました。
どうもありがとう〜

550 :デフォルトの名無しさん:02/06/20 21:15
あるサーバーとのDDE通信が確立した後、何かしらの原因で通信に異常が起こった場合、
復帰する方法はありますか?データを取得する際呼び出すGetDdeDataの前に呼び出す
DdeTransactionの戻り値が0になってしまった後、データが正しく読めるまでSleepしながら
繰り返し呼び出すんですけど一向に復帰しません。

551 :デフォルトの名無しさん:02/06/20 22:04
Accessと通信するDDEサーバアプリをつくっています。

DDEサーバ が起動しているにも関わらず、Accessからの接続がエラーになる
場合があります。

初回の接続(Access->DDEサーバ)は必ずうまくいくのですが、その後、接続が
できなくなり、一度できなくなると、DDEサーバアプリを再起動するまで接続が
できません。

サーバアプリ側に原因があると思うのですが、どうしてもそれを見つけられない状態です。
DDEのコールバック関数の先頭に MessageBeep(0); と書いて、通信が生じた場合に
音を鳴らすようにしてみたのですが、Accessからの通信要求時、Accessではエラーが生じ、
サーバアプリでは何もおきません(Beepがならない)。

どなたか、お力添えいただけませんでしょうか・・・・・?

552 :デフォルトの名無しさん:02/06/20 22:30
>>551
状況が良く分からんのですが、DDEスパイとかでエラーが発生するまでの
DDEメッセージを確認できるのではないでしょうか?もうしてみましたか?

553 :デフォルトの名無しさん:02/06/21 00:11
MSFlexGridを使っているのですが、質問させてください。
1番上のFixedRowのセルとセルの間の線をドラッグして、セルの大きさを
変えることができますが、そのタイミングで処理をしたいと思っています。
この、「セルの大きさが変わったとき」はどうやって感知したらいいので
しょうか。 OnMouseUpとかOnOLECompleteDragとかを試したのですが、
そこには飛んできませんでした。
もしご存知の方おられましたらよろしくお願いします。

554 :デフォルトの名無しさん:02/06/21 12:33
タスクトレイからTrackpopupMenuで
メニュー出したんですがなんだか消え方が変で困ってます。
説明しにくいんですが、
pop->TrackPopupMenu(TPM_LEFTBUTTON,pt.x,pt.y,this);
のようにしてるのでメニューの外側クリックしたら消えて欲しい
んですが消えません。
いったんメニュー内で右クリックしてアクティブ(?)な状態に
してからメニュー外でクリックすると消えます。
第五引数あたりが怪しいと思っていじりまわしてみましたが
変わりません。
どこが間違ってるのでしょうか?

555 :デフォルトの名無しさん:02/06/21 12:41
>>554
MSDN Q135788

556 :554:02/06/21 13:53
>>555
上手くいきました。
ありがとうございます。
SetFourgroundWindow()
を使うんですね。そんな関数があることすら知りませんでした。
その関数があること知ってから
SetFourgroundWindow&TrackPopupMenu
で検索したら英語版のTrackPopupMenuに乗ってました。
日本語版の方には乗ってなかったので驚きました。
これから英語版の方にも目を通します。
調査不足の質問してすみません。
>>555さんも答えてくれてありがとです。

557 :デフォルトの名無しさん:02/06/21 14:00
VCで作成したDLLで
DATE型を引数に渡す関数を作ったのですが、

VBからその関数を呼び出すときに、
DATE型はどのように指定したらよいですか?



558 :デフォルトの名無しさん:02/06/21 14:01
>>557
unsigned int

559 :557:02/06/21 14:33
>>558 レスありがとうございます。

DATEではなく、unsigned intを使うということですね。
試してみます。


。。。。初心者質問で申し訳ないのですが、
unsignedってどういう場合に使う物なのですか?

m(__)m ホントにすいません初心者で・・・

560 :デフォルトの名無しさん:02/06/21 14:50
リッチテキストの縦書きについて質問です。VC6.0のWin2000です。

ラベルソフトのようなものを作っております。
リッチテキストで縦書きをしたいのですが、Win2000のriched32.dll
では無理だということがわかり、Win98用のriched32.dllを
EXEと同じフォルダに入れました。すると、ダイアログ内の
RichEditコントロールの中ではちゃんと縦書きになりました。
が、それをViewクラスのDCに、自前でFormatRangeやDisplayBandを使って描画
しようとしても、何も描画されません。
横書きの場合は、正常にFormatRange等で描画できます。

縦書きリッチテキストをFormatRangeなどでこちらの指定するDCに描画する場合は、
横書きの時とは違う、何か特別な処理が必要なんでしょうか?

561 :デフォルトの名無しさん:02/06/21 15:59
warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません。
こんな警告が出ます。どうしたらいいですか?コンソールアプリです。
四則演算の計算機プログラムで出ました。


562 :デフォルトの名無しさん:02/06/21 15:59
>>561
明示的にキャストすれば?

563 :561:02/06/21 16:12
>>562
すいません。キャストってなんですか?

564 :デフォルトの名無しさん:02/06/21 16:13
>>563
検索。

565 :まあ、そういうな:02/06/21 16:15
int n;
float f = 2.01;

n = (int)f;



566 :561:02/06/21 16:16
#include <stdio.h>
#include <conio.h>
void main()       

int su1,su2,kekka1;
float kekka2;
char enzansi;

printf("2つの整数と演算子を入力してください\n");
printf("1つ目の値を入力 =");
scanf("%d\n",&su1);
printf("2つ目の値を入力 =");
scanf("%d\n",&su2);
printf("演算子を入力   =");
scanf("%c\n",&enzansi);


if(enzansi == '+'){
kekka1=su1+su2;
printf("%d+%d=%d",su1,su2,kekka1);
}
else if(enzansi == '-'){
kekka1=su1-su2;
printf("%d-%d=%d",su1,su2,kekka1);
}
else if(enzansi == '*'){
kekka1=su1*su2;
printf("%d*%d=%d",su1,su2,kekka1);
}
else if(enzansi == '/'){
if(su2 == 0){
printf("kekka1=0");
}
else{
kekka2=su1/su2;
printf("%d/%d=4.1%f",su1,su2,kekka2);
}
}
else if(enzansi == '%'){
if(su2 == 0){
printf("計算できません");
}
else{
kekka1=su1%su2;
printf("%d%%d=%d",su1,su2,kekka1);

}
}

else{
printf("演算子がおかしいです");

getch();
}
}

567 :561:02/06/21 16:17
どっかおかしいところを指摘してもらえたらうれしいです。

568 :デフォルトの名無しさん:02/06/21 16:18
>>566
mainの下に厨括弧がない。

569 :561:02/06/21 16:21
>>568
それ以外でありますか?
実行して、「演算子を入力=」で、何を入力しても
「演算子がおかしいです」
ってでます

570 :デフォルトの名無しさん:02/06/21 16:23
>>569
取りあえず腹が立つほど読みにくいのでswich構文を覚えてくだされ。

571 :デフォルトの名無しさん:02/06/21 16:23
つーかスレ違いだろ
ここはMFCのスレだぞ

572 :デフォルトの名無しさん:02/06/21 16:48
>>565
勘違いだとは思うが、>>561 には...

> warning C4244: '=' : 'int' から 'float' に変換しました。
> データが失われているかもしれません。

と書いてあるから、f = (int)n; と思う。

573 :デフォルトの名無しさん:02/06/21 19:44
ディレクトリの中身を読むにはどうすればイイ?

574 :デフォルトの名無しさん:02/06/21 20:04
>>573
CFileFind なんてどう?

575 :デフォルトの名無しさん:02/06/21 21:21
http://www.microsoft.com/japan/info/press/trend/vs_net/
ここに載っているVC++.netの書籍はどうですか?
良いものでしょうか?

576 :デフォルトの名無しさん:02/06/21 21:22
>>567
scanfで'\n"入れてるからでないの?

577 :デフォルトの名無しさん:02/06/21 21:34
マルチスレッド用に作ったメンバ関数から普通のメンバ関数を呼んだりメンバ変数にアクセスするにはどうしたら良いですか?


578 :573:02/06/21 23:41
>>574
ありがとう!あとで抱いてやる!

579 :574:02/06/22 00:07
>>578

…いや、遠慮しとく……(w

580 :デフォルトの名無しさん:02/06/22 00:31
>>577
スレッド作る時に、一つくらいは好きなパラメータを渡せるように
なってるはずなので、そこにthisポインタを渡しておいてそれ経由で色々。

581 :デフォルトの名無しさん:02/06/22 02:36
普通は構造体へのポインタわたすよね

582 :デフォルトの名無しさん:02/06/22 14:54
質問です。
class CLine{
 public:
  CLine(int n);
  ~Cline();

  char * buf;
}
CLine::CLine(int n){
  buf = (char *)malloc(n * sizeof(char));
}
CLine::~CLine(){
  if(buf) free(buf);
}

main()
{
  CLine *pl = new CLine(0);
  delete pl;
}
とやってみたら(実際のソースはもっと複雑ですが…)デバッグエラー、とかになってメモリ解放で失敗しますた。
これをmallocやfreeの部分をnew,deleteにしたらokになりました。
これはc++の合法的なルールなのですか?つまりmalloc系とnew系は
混在させると不都合が起きますか?


583 :デフォルトの名無しさん:02/06/22 15:12
>>582
問題ないはず。まさか、malloc() した奴を delete してるとかのオチじゃない
よな。あと、if(buf) free(buf); は、単に free(buf); でいいよ。

584 :デフォルトの名無しさん:02/06/22 15:30
>582

VC++6 でやったけど、問題ないよ。
書いてないところがおかしいんじゃないの。
コピーコンストラクタとか代入演算子とか。

585 :質問:02/06/22 15:44
すいません、FAQかもしれませんが。
SDIアプリからダイアログを一個出します。
そのダイアログの左肩のアイコンを
変更するにはどうしたらよいのでしょうか。


586 :デフォルトの名無しさん:02/06/22 16:31
画面キャプチャでカーソルもキャプチャするにはどうするんですか?

587 :デフォルトの名無しさん:02/06/22 17:52
>>585
そのダイアログはどういう手順で出してるのでつか?

588 :585:02/06/22 18:17
>>587
リソースエディタでデザインしておいて
メインフレームでメニューのハンドらからDoModal()でつ。

589 :デフォルトの名無しさん:02/06/22 18:19
>583-584
サンクス。たぶんmalloc()したやつをfree()したんでしょうね。

590 :589:02/06/22 19:09
>たぶんmalloc()したやつをfree()したんでしょうね。
deleteですた。。鬱。


591 :デフォルトの名無しさん:02/06/22 19:16
SendMessage(WM_SETICON, TRUE, アイコンハンドル);
でアイコンを変えられるよ。

592 :デフォルトの名無しさん:02/06/23 03:15
char *p = new char(n);
と任意の数nで初期化する場合、deleteするときは配列用(?)のdelete[]を使うのが定石ですか?
delete [] p;の様に消すのですか?この場合n=1だったりした場合でも大丈夫ですか?
もしそうだとするとdelete p;の様な物はいかなるケースでもdelete [] p;で代用できますか?



593 :デフォルトの名無しさん:02/06/23 03:33
>>592
new char(n)なら、必ずdelete p;
new char[n]なら、必ずdelete[] p;

定石も何もない。

594 :デフォルトの名無しさん:02/06/23 03:49
あ、そうでしたか。ありがとうございます。

595 :585:02/06/23 10:41
>>591
ありがとう!試してみる!


596 :デフォルトの名無しさん:02/06/23 19:16
MSDN2002/4で標準C++は日本語で読めないのですか?

597 :デフォルトの名無しさん:02/06/23 20:53
基本クラスがCFormViewのときの、ピクチャボックスを初期化する方法を教えてください。
プログラムを起動させたときにピクチャボックス内を白で表示したいのですが、OnInitialUpdate()
関数内に記述すればよいと、思ったのですが上手くいきませんでした。どなたかよろしくお願いします

598 :デフォルトの名無しさん:02/06/24 11:42
>593
> new char(n)なら、必ずdelete p;
> new char[n]なら、必ずdelete[] p;

new char[n]はdelete pでも問題ないはず。
new int[n]はdelete [] pが普通だけど、これもdelete pで大丈夫だと思ったが。

>583
> あと、if(buf) free(buf); は、単に free(buf); でいいよ。

フントか?

599 :デフォルトの名無しさん:02/06/24 11:44
ぜんぜんMFC限定な話題じゃない。

600 :デフォルトの名無しさん:02/06/24 11:45
>>597
OnPaint()は。

601 :600:02/06/24 11:48
あ、FormViewか。

602 :デフォルトの名無しさん:02/06/24 12:47
598はレベルが低いと思います。

603 :デフォルトの名無しさん:02/06/24 13:08
>>598
こんな奴と一緒に仕事するのは絶対イヤイヤイヤ。

604 :598:02/06/24 13:34
お呼びですか? どっちの話?
583の方はANSI準拠なら大丈夫のようだ。Visual C++でも。
593の方は何か間違ってるか?

スレ違いsage

605 :デフォルトの名無しさん:02/06/24 13:42
>>604
593の方は、new int[n]はdelete[] pしないとだめです。
何が起こるかというと、一見なにも起こっていないようで、
多くの場合はメモリリークが発生するそうですよ。


606 :デフォルトの名無しさん:02/06/24 13:48
>605

デバッグヒープでも確認できますか?
delete []と[]が必要になる理由を考えると、基本データ型では不要な気がするがな。

607 :605:02/06/24 13:57
>>606
リークの件に関しては、VisualC++での話です。しかしそもそもC++の
仕様から行くと、結果は未定義だそうです。この件は昔MSJで読んだだ
けなので、リークしているかの確認方法とかはちょっとわからないです。

あ、ちなみに私は602,603ではありません。

608 :デフォルトの名無しさん:02/06/24 13:57
基本型の場合は delete の時の [] はなくても一応リークなしに動く。
クラスの場合は [] がないと個々のデストラクタが呼ばれないためリークするケースが多い。
いつぞやのMSDNマガジンOne Point Lesson C++でポールが言ってたよ。
結論としては基本型でもクラスでも [] はちゃんと書けということだったが。

609 :598:02/06/24 13:59
今確認してみたが、
int* i = new int[10];
に対して
delete i;とdelete [] i;は同じコードが吐かれてて、
ベクターデストラクターは呼ばれていないぞ。

602と603はレベルがお馬鹿さんということでよろしいか?


610 :デフォルトの名無しさん:02/06/24 14:00
>>基本型の場合は delete の時の [] はなくても一応リークなしに動く。
それは、VisualC++固有の動きですか?それともC++の仕様として定義され
ているのですか?

611 :デフォルトの名無しさん:02/06/24 14:05
とりあえず、>>603に一票。

612 :デフォルトの名無しさん:02/06/24 14:07
>>609
>delete i;とdelete [] i;は同じコードが吐かれてて、
>ベクターデストラクターは呼ばれていないぞ。
これもVisualC++の実装がどうなっているかというよりも、C++の仕様
が未定義なら、使用するのはまずいと思うのですが。
(VisualC++では、たまたま動作していることになるから)

613 :デフォルトの名無しさん:02/06/24 14:08
まあ、変な癖は付けないようにしようという事だ。


614 :デフォルトの名無しさん:02/06/24 14:08
MFCスレなのでCArray使ってください

615 :598:02/06/24 14:10
>610

608じゃないが。
Visual C++の実装としては、という事。

言っとくけど、delete pの方が良いという事ではないからね。
Visual C++では、new int[10]とかアロケートしたものに関して
deleteと[]を付けなくても、それが原因で動かないとかヒープが壊れるという事
はないというだけ。

作法的には、[]は付けたほうが良い。


616 :608:02/06/24 14:13
>>610 俺もポールの記事見ただけでそこまで書いてあったかどうか覚えていない、すまん。
>>613 同意
>>614 warata

617 :デフォルトの名無しさん:02/06/24 14:15
>>614
それでは、ご要望に答えて(爆)
CArray * pArray = new CArray[10];
delete[] pArray;

・・・おあとが宜しいようで。

618 :デフォルトの名無しさん:02/06/24 14:32
598のおかしな部分はまだあるぞ。

>> あと、if(buf) free(buf); は、単に free(buf); でいいよ。
>フントか?

free()にNULLを渡しても無視されるだけだからif文は無意味に決まってる。

619 :デフォルトの名無しさん:02/06/24 14:37
>>618
604にて既出。

620 :デフォルトの名無しさん:02/06/24 21:09
>>597
プロパティのタイプを四角にして白を指定するんじゃ駄目かい?

621 :デフォルトの名無しさん:02/06/25 16:34
>618 MFCだから、正解なんだね。
ANSIでは NULLポインタは NULLではない罠。にも思うけれど(ワラ

622 :デフォルトの名無しさん:02/06/26 00:36
保守

623 :デフォルトの名無しさん:02/06/26 18:28
>>498
私も電卓がほしいです。
ソースください。
よろしくお願いいたします。

624 :デフォルトの名無しさん:02/06/26 18:34
そろそろ電卓以外の話でもしませんか。

625 :498:02/06/26 18:38
>>623
捨てメアドを用意してね。

626 :デフォルトの名無しさん:02/06/26 23:01
SDIアプリを作ろうとしていますが…
CHtmlViewから派生させたCXXViewでサイズ変更時に画面がものすごくちらつくのですが、
解消するにはどうしたらいいでしょう?

Windows2000 / VC++6.0 SP5 / IE 6

627 :3:02/06/26 23:02
vavaio@infoseek.jp
よろしくお願いいたします。
電卓以外もありましたらそちらもお願いいたします。


628 :625:02/06/26 23:21
>>627
送ったよ。しばし待たれよ。

629 :デフォルトの名無しさん:02/06/26 23:54
>>626
ViewのOnEraseBkgndでTRUEを返すといいよ。

630 :デフォルトの名無しさん:02/06/27 00:16
>>626
クラススタイルのCS_V/HREDRAWを取ると、いいことがあるかも。

631 :デフォルトの名無しさん:02/06/27 00:32
質問させてください。
AccsessのDBにTableのレコードが1行(AccsessのTableを作成した時に
自動的にできる)の時にGetFieldValue()で特定のフィールドの値を取得できないのですが。
Tableのレコードを追加して2行ある状態なら取得できます。
GetRecordCount()を実行しても1行の時は戻り値が0となってしまいます。
アドバイス、参考書籍などありましたら教えてください。
よろしくお願いします。

632 :デフォルトの名無しさん:02/06/27 00:39
>>631
それって単にデータが入ってないからでしょ。

633 :626:02/06/27 00:40
>>629 >>630
レスどうもありがとうございます。
両方試したのですが、CHtmlViewの派生クラスでは変化ナシです。
>>630はPreCreateWindow()内で取り除くんですよね?)

OnDrawで文字を表示させてもまったく反映されず。
Viewの上にIEコンポーネントが乗ってるような???
もうちょっと調べてみますです。

634 :デフォルトの名無しさん:02/06/27 00:52
>632
レス有り難うございます。
スミマセン。説明が足りませんでした。
一行目のレコードにはフィールドで設定した規定値が入ってます。
ただ、NULLを許可しているフィールドもあるのでそこは空白ですが
GetFieldValue()で指定しているフィールドには値が入っています。
レコードを追加すると1行目と同じレコードが追加されるのですが
2行あればGetFieldValue()で値を取ってこれるんです。

635 :625:02/06/27 08:25
>>627
メール送れなかったぞ。メアド違ってない?イタズラならやめてください。

636 :627:02/06/27 10:37
>>625
すみません、
vavaio@infoseek.jp
で届きませんか?
受信箱は空になってます。
他のところとりますか。

637 :627:02/06/27 10:40
届かなければ
vaior505@excite.co.jp
でお願いいたします。
面倒かけてすみません。

638 :デフォルトの名無しさん:02/06/27 11:32
CListCtrl、CListViewで通常マウスドラッグ操作での
範囲指定による複数アイテム選択が可能なのですが、
オーナー描画をした場合にこれが出来なくなるのですが
(全カラム選択みたいになってしまいアイテムドラッグになってしまう)
これを通常どうり範囲指定の処理をさせる方法知りませんか?
OnLButonDownで実装する方法でも構いません。
どなたかお知恵をお貸しください。

※文章では表現がむずかしくて分かりづらい質問でスミマセン


639 :デフォルトの名無しさん:02/06/27 11:40
LINK : fatal error LNK1104: ファイル "nafxcwd.lib" を開けません。

上のエラーメッセージが出てビルドできません
MFCアプリケーションだと問題は無かったのですが
コンソールにしたら突然出てきました・・・
>>2-3のへんとエラー番号をMSDNで見ましたがよくわからなかったです

640 :625:02/06/27 15:08
>>637
送ったよ。

641 :637:02/06/27 15:44
>>625
ありがとうございます。

642 :デフォルトの名無しさん:02/06/27 15:47
>>639
nafxcwd.libは、MFC スタティックリンクライブラリのデバッグバージョンの
様ですよ。プロジェクトのどこかでMFCを使用していたり、MFCのヘッダを
インクルードしているのではないでしょうか?

643 :デフォルトの名無しさん:02/06/27 16:31
すみません。

_variant_t に NULL を入れることは出来るのでしょうか?

ADOのUpdateメソッドで、SQL Server のフィールドをNULLに
したいのですが・・・

644 :642:02/06/28 01:49
>>642
ガーン・・・思いっきりafx.hをインクルードして使ってます(鬱
ごめんなさいありがとう

645 :639:02/06/28 01:50
だった(・∀・;)寝起きなもんでスマソです

646 :デフォルトの名無しさん:02/06/28 19:28
MFC は Microsoft が出している言語の為、VCL よりも OS 寄りの設計に
なっているのは想像できますが、生産性の点で何が VCL に対して上回っ
ているのですか?

647 :デフォルトの名無しさん:02/06/28 19:41
MFCは言語ではありません。

648 :デフォルトの名無しさん:02/06/28 19:51
こいつは…MFCの意味ぐらい知ってろ。
MFCってのは、「マジでファッキンなcharacter」だろ。

649 :デフォルトの名無しさん:02/06/28 19:55
MFC...むふっC

650 :デフォルトの名無しさん:02/06/28 19:57
MFC:manko fucks chinko.


651 :デフォルトの名無しさん:02/06/28 20:01
MFCは、VCLよりも、生産性の点で何がVCL に対して上回っ
ているのかが良く分かりません。


652 :デフォルトの名無しさん:02/06/28 20:17
この板では何かと比較すると必ずネタスレ化するよな

653 :デフォルトの名無しさん:02/06/28 20:27
生産性の点に限っての事だけ教えて頂けませんか
お願いします。

654 :デフォルトの名無しさん:02/06/28 20:29
上回っていないと思います。以上。

655 :デフォルトの名無しさん:02/06/28 20:32
        ∧∧  ミ _ ドスッ
     プッ (´,_ゝ`)┌─┴┴─┐
       /   つ.  終了 │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛


656 :デフォルトの名無しさん:02/06/28 21:51
暖炉でスマソ。

CRichEditCtrlの派生させたクラスで
を使っているのですが、CRichEditCtrl::LimitText
は、設定していないのですが、

40KByteくらい以上のファイルを開くと、文字の入力ができなくなります。
'CRLF'は入力できるのですが、それ以外は、入力ができません。
これを解決する方法はありますでしょうか…。それとも無いでしょうか…

657 :デフォルトの名無しさん:02/06/28 21:52
CRichEditCtrlの派生させたクラスで CMyEdit
を使っているのですが、CRichEditCtrl::LimitText
は、設定していないのですが、

40KByteくらい以上のファイルを開くと、文字の入力ができなくなります。
'CRLF'は入力できるのですが、それ以外は、入力ができません。
これを解決する方法はありますでしょうか…。それとも無いでしょうか…

658 :デフォルトの名無しさん:02/06/29 01:50
リソースエディタのダイアログやフォームに置いたコントロールのフォントを
個別に簡単に変える方法はないもんかね?

659 :デフォルトの名無しさん:02/06/29 17:45
>>657
LimitTextを設定すればいいんじゃ?

660 :デフォルトの名無しさん:02/06/30 11:25
>>643
_variant_t value;
value.vt = VT_NULL;

661 :デフォルトの名無しさん:02/06/30 11:29
>>658
*.rcを直接、エディタで編集汁。


662 :デフォルトの名無しさん:02/06/30 20:44
>>661
おお、それで逝けるんだ。ありがと。
でもコントロール増やした時とかに元に戻されたりしない?

663 :デフォルトの名無しさん:02/07/01 02:18
>>661 >>662
それって、ダイアログのフォントのことだよね?
(下の .rcの場合、6行目)

IDD_TEST_DIALOG DIALOGEX 0, 0, 200, 100
STYLE DS_MODALFRAME | DS_SETFOREGROUND | WS_MINIMIZEBOX | WS_POPUP |
  WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Test"
FONT 9, "MS Pゴシック", 0, 0, 0x1
BEGIN
RTEXT "",IDC_STATIC1,46,47,12,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT |
UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_TABSTOP,58,46,8,13
...

コントロール個別のフォントって、CWnd::SetFont() で変えられるけど、.rcいじれば変えられるんかい?

664 :デフォルトの名無しさん:02/07/01 21:27
>>663
ダイアログのフォント言うか、コントロール別のフォントね。
ダイアログのフォントはエディタ上で変えられるのにコントロールはSetFont使うのが
めんどくさいなあと(w コントロールが多い時なんかね。

665 :デフォルトの名無しさん:02/07/02 01:23
>>664
だから>>663は.rcのどこをいじればコントロールのフォントを
個別に変えられるか聞いてるんだよ。

666 :デフォルトの名無しさん:02/07/02 11:41
MFCでソケットを使った通信を行いたいのですが、
recv()とかsend()とかの関数がインクルードされないみたいです。
どうやったら使えるようになりますか?

667 :デフォルトの名無しさん:02/07/02 11:46
#include <afxsock.h>

AfxSocketInit()

668 :666:02/07/02 12:03
どうもありがとう。

669 :デフォルトの名無しさん:02/07/03 00:01
ガイシュツかとは思うのですが、CTreeCtl でフォントサイズ変えるには
どうしたらよいのでしょう? SetFont()で変えるとフォントは変わらず各
アイテムのスペースだけ変更されてしまってスカスカになってしまいマヌ
ケなんですが・・・

670 :デフォルトの名無しさん:02/07/03 00:04
>>666
CSocket使いなされ。無駄に便利だ。

671 :デフォルトの名無しさん:02/07/03 00:04
>>669
CFontをグローバルというかstaticにしてる?

672 :デフォルトの名無しさん:02/07/03 07:59
>>671
そのとおりでした。単なるクラスなのをすっかり忘れてました。ありがとう
ございますた。
#SDKとMFCを同時に勉強してるもので完全に混同してました。お恥ずかしい。


673 :デフォルトの名無しさん:02/07/04 16:01
DOS用のプログラムがあるんですけど、
コマンドを打つ手間を省くアプリを作るのに
・ボタンを押したらCMDを起動して自動的にコマンドを渡して実行
・出力結果を変数に取得・CMD終了
とさせるにはどうすれば良いですか?


674 :デフォルトの名無しさん:02/07/04 16:35
>>673
system()かな?

675 :デフォルトの名無しさん:02/07/04 22:33
>>673
_popenとかどうですか?

676 :デフォルトの名無しさん:02/07/05 00:49
お前らバッチファイルを奨めてあげなさい。

677 :デフォルトの名無しさん:02/07/05 13:47
vc++って使いづらいような気がするのは俺だけ?

678 :デフォルトの名無しさん:02/07/05 13:48
それがこのMFCスレとどう関係があるのか小一時間問い詰める気も起きない。

679 :デフォルトの名無しさん:02/07/05 14:25
関係無いのか
あっそう、じゃそういうことでいいや。

680 :デフォルトの名無しさん:02/07/05 20:13
CDialogの派生クラスで、
ビューのOnDraw()のような、一部が描画されたときに
描画しなおすってことをしたいんですができるのでしょうか??

681 :デフォルトの名無しさん:02/07/05 20:31
できまふ。

682 :680:02/07/05 22:25
>>681
どのようにすれば?

683 :デフォルトの名無しさん:02/07/05 22:57
え、AppWizard使ったらデフォルトでOnPaint()が追加されてるはずだけど・・・

684 :ndr ◆Fs550miQ :02/07/05 23:49
>>683
CDialogを単純に派生しただけではでないと思われ。
そりゃClassWizardでWM_PAINTを選択すれば出てくるけど。

685 :デフォルトの名無しさん:02/07/05 23:56
あ、新規に派生したのか。
てっきりAppWizardでダイアログアプリを作ってそのダイアログクラスだとばかり・・・

686 :デフォルトの名無しさん:02/07/06 03:27
OnInitDialog中にフォーカスを設定したり(SetFocus、GotDlgCtrl)、
デフォルトボタンを変える(SetDefID)のって、もしかして不可能ですか?

なんか、ことごとく無視されてるっぽいんですけど...

687 :デフォルトの名無しさん:02/07/06 03:39
OnInitDialogでreturn FALSE;

688 :ズン:02/07/06 03:47
VC++経験約半年の半人前です。
VC++でテキスト形式のファイルを作成しました。
このファイルを.doc形式のwordでも使えるようにしたいんですが、
どうしたらいいですか?
ちなみにテキスト形式のファイルは罫線とかも自分で編集してます。
これをどーにかしてwordで使えるように保存、次回からはwordでも編集できる
ようにできないですか?

689 :デフォルトの名無しさん:02/07/06 03:51
>>687
return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
         // 例外: OCX プロパティ ページの戻り値は FALSE となります

こっ、これか〜。このコメント削除してたから気づかんかった。
return FALSEにしたらOKでした。こんな夜更けにありがとう。

690 :デフォルトの名無しさん:02/07/06 03:51
txtは何もしなくてもWordで開けるんじゃないの?

691 :デフォルトの名無しさん:02/07/06 03:57
>>688
txtなのに罫線が使えるの?

692 :デフォルトの名無しさん:02/07/06 03:59
>>691
--------------
とか書いたってことじゃないかな。
いずれにせよそのまんまで問題ないんじゃ?

693 :ズン:02/07/06 04:10
すいません。説明不足でした。
やりたいのは、今はメニューに「保存」ボタンがあるんですが、そこに
「word(で使える)形式で保存」っていうのを追加したいんです。
それを選んだらwordが立ち上がって、という感じなんです。
罫線は692さんの言う通り ------------------ みたいなやつです。
一度txtで保存してwordで開いたら、思った通り、罫線はぐちゃぐちゃで
フォントは変わってるはで、うまくいきません。

694 :デフォルトの名無しさん:02/07/06 10:37
>>693
OpenOfficeのソースから.docフォーマットの保存部分でも読んでみるとよいと思われ。


695 :デフォルトの名無しさん:02/07/06 14:08
MFCウィザードでテーブルゲームをつくってるんですが
ほとんどViewクラスにコードを書いてるんです(こんなフレームワークでいいのかな?)

ところで、ウィンドウズによくある”ファイル”とか”新規作成”のメニュー
を選択するプログラムなんですけど、なんでViewクラスで処理するのですか?
私は、Frameクラスが処理するようなきがするのですが。
(Viewクラスで処理したのは、本を見ながらプログラムしたためです)

696 :デフォルトの名無しさん:02/07/06 14:24
>>695
Viewで処理しなくてもいいと思うけど。
以前もどっかのスレ(前スレだったかな?)で同じような質問があったけど、
本は誌面の都合もあるし、説明したいことを拡散させたくないので
そういう書き方する場合もあるよ。

697 :デフォルトの名無しさん:02/07/06 14:27
俺はviewで処理するのがスジだと思う。
その方が、MDI<=>SDIなんかの時、ちょっと便利なんじゃないか?
なんて言ってみる


698 :デフォルトの名無しさん:02/07/06 15:12
ViewはI/Fだけにしとけ。
DocかAppで処理すれ。


699 :696:02/07/06 15:23
Viewでしなくてもいいってだけね。
最終的にはソフトによるだろうけど。
新規作成メニューがViewを単にまっさらにするだけなら
Viewクラスに書いていいだろうし。

700 :695:02/07/06 15:38
おかげさまですっきりしました。

701 :デフォルトの名無しさん:02/07/06 20:49
いまだにDOCの使い道がわからない俺。

702 :デフォルトの名無しさん:02/07/07 02:59
俺も最初は全部Viewクラスに書いてたなぁ。

703 :デフォルトの名無しさん:02/07/07 14:16


704 :デフォルトの名無しさん:02/07/07 21:01
差し支えなければDOCってどんな感じで使うのか教えてホスィ・・・。
俺も全部Viewに書いちゃうんだよね。

705 :デフォルトの名無しさん:02/07/07 21:11
>>704
スプリッタウィンドウなどでViewが複数ある場合に
ペイン間でデータをやり取りするときとか。


706 :デフォルトの名無しさん:02/07/07 21:15
あーだこーだ、ものができてから色々注文をつける客相手に手抜きアプリを作るとき


707 :680:02/07/08 10:40
>683 684 685
ClassWizardでWM_PAINT出て来るんだ。
ClassWizard使えない状況だからわからんかった。
どーもありがとう。遅レスでスマソ

708 :デフォルトの名無しさん:02/07/08 10:59
継続して扱うデータはDocで管理して、
データの入力・表現に伴う揮発性の高いデータは
Viewで管理って分け方だろうな。
Viewは同一Docであっても差し替え可能だし。
ちょっと違うが、MSHTMLのHTMLDocumentとかが
Docの例としては最適なんではなかろうか。

709 :デフォルトの名無しさん:02/07/08 21:06
DOCってのはいろんなクラスのメンバ変数とか見れたり書けたりするわけ?

710 :デフォルトの名無しさん:02/07/08 22:26
publicにしとけば見れるだろ。

711 :デフォルトの名無しさん:02/07/09 01:33
(´д`;;)

712 :デフォルトの名無しさん:02/07/09 03:05
privateなメンバを参照できるクラスっていうのも困ると思うんだけど

713 :デフォルトの名無しさん:02/07/09 08:59
メンバ変数直接見られたくなかったらアクセス関数かけよ。


714 :デフォルトの名無しさん:02/07/09 10:32
>>712
そうしなきゃいいだけじゃん・・・。
DocもC++のルールの上で設計されるわけだし。
無条件にprivateが見られるなんてないでしょ。

715 :デフォルトの名無しさん:02/07/09 10:36
>>712>>709を受けての答えだと思うんだが。

716 :デフォルトの名無しさん:02/07/09 22:37
すみません、どうしてもわからないので
お聞きしたいのですが。
ダイアログベースのプログラムで
起動直後、メインウィンドウは表示せずに
タスクバーにアイコン状態で起動し、
タスクバーからいつでも
メインウィンドウ表示できるようにしたいのですが
できません。
どうやればいいのでしょうか?
OnInitDialog()のなかで
ShowWindow(SW_SHOW)
をコメントアウトしても表示されてしまうみたいで
見当もつかない状態です。
ヒントだけでもよろしくお願いします。

717 :デフォルトの名無しさん:02/07/09 22:39
>>716
タスクバーで良ければ、
OnInitDialogでShowWindow( SW_MINIMIZE );
でいけない?

718 :716:02/07/09 23:22
ShowWindow(SW NORMAL)
消して
その後に言われたとおりMINIMIZE指定したら
メインウィンドウは消えました。
一歩進歩なんですが
やはり最小化状態で残ってしまうので
これをなんとかしたいです。
SW MINIMIZEの直後にSW HIDEもしてみたのですが
逆にメインウィンドウが表示されてしまいました。
タスクバー以外全く表示させないようにするには
ここからどうすればいいでしょうか。

719 :デフォルトの名無しさん:02/07/09 23:30
>>718
それはタスクバーじゃなくてタスクトレイの事では?
タスクトレイ常駐みたいな感じにするならちょっと面倒くさい。
でも「タスクトレイ VC++」辺りのキーワードで検索すれば
それらしいページは出てくると思うよ。


720 :716:02/07/09 23:33
>>719
すみません、ボケてました!
そうです、タスクバーじゃなくて
タスクトレイのみで起動したいんでした。
すみません。

721 :デフォルトの名無しさん:02/07/09 23:37
DocがDOQに見えた鬱だし脳

722 :デフォルトの名無しさん:02/07/09 23:43
>>718
タスクバーに出現させたくないのなら、通常のウインドウを
見えない(SW_HIDEな)ウインドウの子にするのが一般的。

723 :716:02/07/09 23:50
いろいろありがとうございます。
とりあえず言われたことを試してみます。
後ほどまた報告いたしますので。

724 :デフォルトの名無しさん:02/07/10 01:11
メニューバーをリバーにしたいのだけれどどうすればよいですか?
ツールバーや他のコントロールをリバーにバンドするサンプルは
見つかるけど、メニューはどうやればいいのかがわかりませぬ。

725 :デフォルトの名無しさん:02/07/10 02:53
>>723
モーダレスダイアログにして
ダイアログのプロパティーの可視のチェックをはずせばいいのでは?


726 :デフォルトの名無しさん:02/07/10 17:08
Ver.2
CFormViewに割り当てられているFormを変えるには、
どうすればいいんですか。

727 :デフォルトの名無しさん:02/07/10 17:22
('-`)

728 :デフォルトの名無しさん:02/07/10 22:05
(。A。)

729 :デフォルトの名無しさん:02/07/10 22:28
>>726
デフォルトのフォームはまっさらにしといて新しくフォーム何枚か作って
それ貼り付け&切り替えた方が楽じゃない?

730 :デフォルトの名無しさん:02/07/11 02:12
>>724
リバーの中に入っているメニューバーは、実はメニューに見せかけている
ツールバーであるという罠。

731 :デフォルトの名無しさん:02/07/11 10:02
>>730
そのメニューに見せかけたツールバーの作り方がわからんのだよ・・・

732 :730:02/07/11 12:22
>>731
ttp://www.codeproject.com/menu/menubarxp.asp

733 :デフォルトの名無しさん:02/07/11 13:24
現在MFCを使って独自拡張子のアプリケーションを作っています。
まだ作成途中なのですが、ふと気づくと右クリックの新規作成の中に
その独自拡張子のファイルの新規作成ができていました。
確認のために実行したことしかないんですが・・・。
これはどこが問題なのでしょうか?

734 :デフォルトの名無しさん:02/07/11 13:35
初心者なんですが質問があります。

ドラッグ&ドロップされたフォルダの中身を検索し、サブディレクトリがあれば再帰処理でサブディレクトリ内も検索して全ファイルを表示する。

と言うプログラムを作ったんですが、表示ディレクトリのうち選択したディレクトリだけにしぼって再表示、
と言うのをやろうとしたところで悩んでしまってます。

MFC作法的にはdocクラスに検索内容を保存しておいて、再表示の際にそこから引っ張ってきて表示させればいいのだと思うのですが、
ファイルの総数はわからない状態で、再帰処理のループ中に順次保存用の変数を増やしていく、
と言う感じなんだろうと思うのですがどうやっていいのかよくわかりません。
ディレクトリ、ファイルを分けてソートしてから表示しているので保存用の変数も二種類居るだろうし、こういう場合はどのクラスにどんな変数を用意するとうまく行くのでしょうか?

それとも表示し直したいディレクトリ名で再検索する方がいいのでしょうか。
複数ディレクトリ内を選択、表示したいし、選び直しもできるようにしたいので
それはあまりうまくないかと思ってるんですが。

うまく伝えられてないかもしれませんが、どなたか教えてください。

735 :デフォルトの名無しさん:02/07/11 13:46
つまり配列で持つと上限を越えた場合こまるってこと?
なら動的に用意するといいよ。リストとか知ってる?

自分で構造体かクラスをつくってファイル名やディレクトリかどうかのフラグをもたせて
メンバ関数で登録や削除や参照や破棄が出来るようにすると良いんじゃないかな。

>それとも表示し直したいディレクトリ名で再検索する方がいいのでしょうか。
都度検索でも良いがどのみちそういう検索をしてリストを作成する関数は必要だろう。


736 :734:02/07/11 14:45
>>735
レスどうもです。

えーと、今はビュークラスの関数内でCStringArrayをディレクトリ内のサブディレクトリとファイル用に二つ用意して、
ソート下の後にディレクトリ>ファイルの順で描画させて、その後サブディレクトリ名をこの関数自身に渡して再帰処理させているんです。

この描画する部分をdocクラスの変数に渡してやる処理に変えればいいと思ったのですが、
この変数をどこにどう確保していいのかがよくわからないのです。

構造体の使い方がよくわからないのですが、CStringArrayを二つ含む構造体を作ればいいんでしょうか。

737 :734:02/07/11 15:00
書き忘れてました。

>>なら動的に用意するといいよ。リストとか知ってる?

この動的に用意、がよくわからないのです。
多分これが理解できればうまく行くような気がしてるんですけれども。

738 :デフォルトの名無しさん:02/07/11 15:09
動的とはnewやmallocなどで用意することです。
複雑になると思います。


739 :NDR:02/07/13 00:51
>>734
頑張ってDocに木構造の構造体かクラスを作ってくんなまし。
リストだけでも逝けるかもしれんけど。

740 :デフォルトの名無しさん:02/07/15 11:08
>>738
CArrayでもなんでも使やいいじゃん。

741 :デフォルトの名無しさん:02/07/15 16:08
動的に扱うなら
CListクラス,
便利ですよ。

742 :デフォルトの名無しさん:02/07/15 17:21
MFCでエクスプローラのようなプログラムを作っているのですが
TreeViewからListViewにメッセージみたいなものを伝えるにはどうしたら良いですか?

具体的には、エクスプローラでは、右にあるTreeViewに表示されているフォルダを選択すると
左のListViewにフォルダの中身が表示されますよね?
この、お互いの連絡のやり取りが分からないのです。
TreeViewのフォルダが選択されたことをListViewに伝えるには、どうしたら良いですか?

743 :デフォルトの名無しさん:02/07/15 17:31
現在選択されているフォルダの情報はdocに持つようにして、
変更されたら、UpdateAllViewsにヒントを与えてやればよいのでは?

744 :デフォルトの名無しさん:02/07/15 17:35
さっそくDocを使う例だね。

745 :デフォルトの名無しさん:02/07/15 17:40
スプリッタを使わずに、クライアント領域に複数のViewやコントロールを表示するには
どのようにすればいいですか。

746 :デフォルトの名無しさん:02/07/15 17:42
MDI

747 :デフォルトの名無しさん:02/07/15 17:55
OnNotify(....) で TVN_SELCHANGED
を捕まえて
そこでViewのポインタを得ればいい。
ソースまんまですが参考程度に。

//(2)Viewのポインタを取得する
CMyFilerDoc* pDoc = (CMyFilerDoc*)GetDocument();
POSITION pos = pDoc->GetFirstViewPosition();
if (pos != NULL)
{
CView* pLeftView = pDoc->GetNextView(pos);
CView* pRightView = pDoc->GetNextView(pos);
//デバックで先に検討つけておいてさらにRTTIでもチェックしてみる
CMyFilerView* pMyFilerView = dynamic_cast<CMyFilerView*>(pRightView);
if(pMyFilerView != NULL){
pMyFilerView->GetPath(str_comp);
}
}

748 :名無しさん@Meadow:02/07/16 12:53
ステータスバーに任意の文字を表示させてます。
ペイン内の文字の右揃え、中央揃えをしたいのですが
どうしたらよいでしょう?

CStatusBar::SetPaneStyle にはそれっぽい
スタイルが無いのですが。

749 :デフォルトの名無しさん:02/07/16 13:45
>>748
オーナードロー

750 :デフォルトの名無しさん:02/07/16 13:52
>>748
表示する文字列の前に\tをつけると中央揃え。
\t\tをつけると右揃え。

195 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)