■ VisualC++(MFC限定)相談室 4■(2ちゃんねる)

FTP、CGI、SSI、telnetが自由に使える超高速レンタルサーバ。
工夫しだいで、楽しさ100倍。 www.binboserver.com
月額千円サーバ | サブドメインコース | BIGなサーバ

サブドメインコース:CGIやFTPが使いたい・お金を掛けたくない人のために。
 *****.syo-ten.com *****.gasuki.com *****.zansu.com
 お好きな名前を無料で使えます。早い者勝ち。

人気サイト 月額千円サーバ:.com .net .org で取得できます。.JPドメイン大歓迎!
 超高速・高機能サーバを1000円で!使ってみれば、分かります。

BIGなサーバ:Big なBig なサーバー。充実したサポートをお求めの方へ。
 インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ。
2ちゃんねるは、このサーバを使っているです。

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■

■ 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をつけると右揃え。


751 名前: デフォルトの名無しさん 投稿日: 02/07/17 10:39



752 名前: SetClipboard? 投稿日: 02/07/17 17:59
あのークリップボードに直接書き込むことってできます?
たとえば "hoge\0" にしたいとき、Edit::Copy() とかを経由せずに。



753 名前: デフォルトの名無しさん 投稿日: 02/07/17 18:38
つーかMSDNみろよ、、


754 名前: デフォルトの名無しさん 投稿日: 02/07/17 19:11
すいません。長方形以外の形をしたダイアログはどのようにして作るのですか?


755 名前: デフォルトの名無しさん 投稿日: 02/07/17 19:19
僕ぁ>>2を参考にしてくれないので悲すぃです。


756 名前: 質問者 投稿日: 02/07/17 19:48
質問ですー。
CWnd::ScrollWindow() でウィンドウの中身をスクロールさせるんですが、
他にTopMostなウィンドウがある場合、
TopMostなウィンドウの下に隠れてた部分がスクロール表示されないわけです。
これってどうすればいいんでしょ?
なにか定石がありますか?


757 名前: 保守あげだ〜よ 投稿日: 02/07/18 03:07
(`Д´||)
あ、あれ??


758 名前: 名無しさん@Meadow 投稿日: 02/07/18 09:38
リストビューの並び替えをしようとしています。

static int CALLBACK
CompareFunc( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort );

を定義してデバッグモードで監視しているんだけど
関数が呼ばれても常に1,2番目の引数が0なのはなんで?

ちなみにitemを挿入するときは
m_clist.InsertItem(m_clist.GetItemCount(), sBuf);
ってやってます。


759 名前: 758 投稿日: 02/07/18 09:40
すいません。
リストビューじゃなくてリストコントロール。
CListCtrl です。


760 名前: シュー 投稿日: 02/07/18 09:56
VC6でソース管理しない方法教えてください。
起動が遅くてむかつきます。


761 名前: 758 投稿日: 02/07/18 09:59
解決。
LV_ITEMにLPARAM lParam;ってのがあったわ。
これに値を入れておいてやればいいのね。



762 名前: デフォルトの名無しさん 投稿日: 02/07/18 13:02
>>760
Visual SourceSafe をアンインストールしなさい。


763 名前: デフォルトの名無しさん 投稿日: 02/07/18 13:07
>>762
みんなのどから手が出るほど欲しがってるソフトなのにね。


764 名前: デフォルトの名無しさん 投稿日: 02/07/18 17:04
すみません質問です。ちょっとMFCの領域からはみ出ちゃうのですが...。

GUIを持ったアプリがあるのですが、起動時にあるオプションを付けた場合は、
普通のコンソールアプリとして動作するにはどうしたらいいでしょうか?

CWinAppのInitInstance()内で、AllocConsole()をやって、
CreateFile("CONOUT$", ... でハンドルを得て、
文字列を「新規の」コンソールに出力する事は出来たのです。

これを、コマンドプロンプト上から実行した場合に、新規にコンソールを作らず、
普通のコマンドラインアプリの様に、起動したコマンドプロンプト上に
文字列を出力したいのです。

すみませんが、お知恵を拝借出来れば幸いです。


765 名前: デフォルトの名無しさん 投稿日: 02/07/18 17:31
前に似たような質問があったけど、
subsystem指定みてWindows側で処理するから、
そーゆー動作は出来ないのでは、という結論が
でてたと記憶している。
   プロンプトから実行 / 他から起動
Cnsl   継承         構築する
Win    デタッチ       〃  しない


766 名前: まりまり 投稿日: 02/07/18 19:19
ダイアログベースのアプリ.
アプリ起動時にテキストファイル読み込み.

これってInitInstance()中にコード書く,でよいですか.


767 名前: デフォルトの名無しさん 投稿日: 02/07/18 19:33
>>766
正しいかどうかはともかく、間違ってはいないんじゃない?


768 名前: まりまり 投稿日: 02/07/18 20:40
あら,OnInitDialog()というのも有りますが
こっちの方がいいのかな...


769 名前: 初心者 投稿日: 02/07/18 21:32
困ってます。Debugモードでは問題なく動作しているプログラムですが、
Releaseモードで実行時にエラーが出てしまいます。
ダイアログに張り付けたリストコントロールのポインタを取得する
pList = (CListCtrl*)GetDlgItem(IDC_LIST);
という部分でAccessViolationが出ています。
コンパイルの最適化設定は、どちらもデフォルトになっています。
こんなとき、考えられる問題はどのようなことですか?




770 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:12
間違ってAPIすれで質問してしまったのでこちらで質問させてください…。
実行するユーザのローカルファイルを検索したいとき、実行ファイルのある
フォルダ内だったらCFileFindのFindfile関数を使うとできますが、
ドライブ全体にわたって検索したいときはどのようにすればよいのでしょうか?
なにかうまい関数があるのでしょうか?MSDNライブラリは検索などをして
いろいろ調べてみたのですがどうも適当な方法が見つかりません。
もし方法を知っている方がいらっしゃったら教えていただけないでしょうか?


771 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:18
findfileには c:\*.mpg とか渡せなかったっけ?


772 名前: 初心者 投稿日: 02/07/18 22:18
APIのSetCurrentDirectory()でC:\などと指定すれば
CFileFindで検索できます。サブフォルダを検索するときは
再帰関数を使って検索します。「再帰・CFileFind」とかで
検索したら出てきますよ。


773 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:28
>>769
デバッグん時は実行されるメモリが初期化されるけど、Releaseの時はされない。
初期化してない変数を参照したりしてない?

それと、Releaseでもデバッグ情報を有効にして、追ってみるって作戦もあるよ。
オプティマイズが効いてると、ソースと違う動きをしてるように見えるけどね。

まぁDebugで動いてReleaseで動かないなんて普通に有ることだから、
慣れるしかないね。あとは開発途中で、Releaseのテストをやるといいよ。

んじゃがんばって


774 名前: 770 投稿日: 02/07/18 22:28
>>772
こんなにも早く答えてくれてありがとうございます。
私は初心者中の初心者で、新入社員でVCをやらされて毎日が勉強の連続です。
みなさんの質問を読んでるだけでも勉強になります。
早く質問する側ではなく質問に答えられる側になりたいです。
ありがとうございました。


775 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:37
CFile f;
CFileException e;

if( !f.Open("duo.txt", CFile::modeRead, &e ) )
{
#ifdef _DEBUG
afxDump << "File could not be opened " << e.m_cause << "\n";
#endif
}


ファイルの読み込みがわからない.いろんなサイトにいろいろ書いてあるが,
Read()の使いが...えーと,えーと,
ファイルのサイズが大きくても(数百K)うーんと,
いっぺんに読み込むんだと思うけど...


776 名前: 初心者 投稿日: 02/07/18 22:39
>>773
ありがとうございます。変数周りから絞り込んでみようと思います。

>>774
私も初心者です。あなたと同じように今年の春からVC++で
プログラミングを始めました。3ヶ月目で分からないことだらけ。
変数とか関数の意味が分からないところから始めましたよ・・・
お互いがんばりましょうね。

とりあえず、今日は帰れないな・・・うう・・・


777 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:47
>>775
ねぇ、ヘルプは見たの ?

-----------------
virtual UINT Read( void* lpBuf, UINT nCount );
throw( CFileException );

戻り値
バッファに転送されたバイト数を返します。すべての CFile クラスで、
ファイルの終わりに到達したときの戻り値は nCount よりも小さいこと
に注意してください。

引数
lpBuf
ファイルから読み出したデータを受け取るための、ユーザーが用意した
バッファへのポインタ。

nCount
ファイルから読み出す最大バイト数です。テキスト モード ファイルで
は、キャリッジ リターンとラインフィードの組は、1 文字と数えます。

解説
CFile オブジェクトに関連付けられたファイルからバッファにデータを
読み出します。
------------------------

いったい、何がわからんのか ?


778 名前: 初心者 投稿日: 02/07/18 22:47
CWnd* CWnd::GetDlgItem(int nID) const
{
ASSERT(::IsWindow(m_hWnd)); ←ここ

if (m_pCtrlCont == NULL)
return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID));
else
return m_pCtrlCont->GetDlgItem(nID);
}
っていうアサートが出てます・・・でも意味が分かりません。
つまりどういうことなんでしょうか?教えてください!


779 名前: デフォルトの名無しさん 投稿日: 02/07/18 22:53
つまり、このウインドウ(this window)が
有効ではないということです。
原因は、thisが有らぬ方向を指していたり、m_Wndが
破壊されていたり、単にCreateを忘れていたり、
すでにDestroyしていたり、多岐に渡ります


780 名前: デフォルトの名無しさん 投稿日: 02/07/18 23:08
>>775の続きで

CString str;
f.Read(&str, f.GetLength());

を書いたら,デバッグしたらdebag assertion fail...

これ,なんか辺だからなんだろうがいったい...


781 名前: 初心者 投稿日: 02/07/18 23:14
>>779
ありがとうございます。詳しく調べてみると、1回目のアクセスは成功して
次のアクセスで問題が出ていることが分かりました。その間にthisポインタに
何が起こっているか、詳しく調べてみようと思います。
あぁ・・最終電車が・・・もうあきらめよう・・・


782 名前: 初心者 投稿日: 02/07/19 02:57
ダイアログボックスにあるボタンをクリックするとスレッドが作成され、
そのスレッドから投げられたメッセージを受け取って、
ダイアログボックスに張り付けられたのリストコントロールを更新する
というようなプログラムを作っています。
スレッドを作成する際に、ダイアログボックスへのthisポインタが
失われてしまうとかなんとか・・・そしたらコントロールはどうやって
扱えばよいのでしょう??



783 名前: デフォルトの名無しさん 投稿日: 02/07/19 03:25
サブスレッドにhwnd(またはそれを含む構造体へのポインタ)を渡し、
サブスレッドからそのhwndへユーザ定義メッセージを投げて、
そのメッセージハンドラでコントロールを扱う。



784 名前: 初心者 投稿日: 02/07/19 03:27
>>783
そうか!!thisポインタじゃなくて、hwndを使うんですね!
やってみます!ありがとう!!


785 名前: 初心者 投稿日: 02/07/19 04:20
LRESULT SendMessage(
HWND hWnd, // 送信先ウィンドウのハンドル
UINT Msg, // メッセージ
WPARAM wParam, // メッセージの最初のパラメータ
LPARAM lParam // メッセージの 2 番目のパラメータ

SendMessage(hwnd,WM_USER_MESSAGE1,(WPARAM)pMyStruct,0);

ですよね・・・なぜだかCWndのSendMessageと思われて
引数がおかしいとか言われます。
かなーり初心者的な事を聞いているのは承知ですが・・・
わかんないです・・・。教えてください。


786 名前: デフォルトの名無しさん 投稿日: 02/07/19 04:42
::SendMessage(〜);


787 名前: デフォルトの名無しさん 投稿日: 02/07/19 04:52
すみません、お聞きしたいのですが。
ダイアログアプリで
起動処理中->待機状態
この流れ出
待機状態になったということを
検知できるMessage、または関数などありませんか?
なにがしたいのかといいますと、
起動したら一瞬ウィンドウが表示されて
直後に最小化->タスクトレイへ格納
という流れをしたいのですが困ってます。
低レベルな質問で申し訳ないですがよろしくお願いします。


788 名前: デフォルトの名無しさん 投稿日: 02/07/19 07:34
最近暑いから汗でファンデ浮いちゃって大変。


789 名前: デフォルトの名無しさん 投稿日: 02/07/19 11:46
質問です。

MFC標準の CPrintInfo を使って印刷しようとしているんですが、
デフォルトの印刷方向を横にしたいのです。
プリンタに依存しない方法ってありますか?

環境は VC++6.0 です。


790 名前: デフォルトの名無しさん 投稿日: 02/07/19 15:53
>>789
CWinApp::GetPrinterDeviceDefaults()


791 名前: デフォルトの名無しさん 投稿日: 02/07/19 17:00
>>787
WM_INITDIALOGで最小化(かSW_HIDE)すればいいと思うが、
明示的に一瞬表示されて欲しいのなら、
WM_INITDIALOGでSetTimerして適当な時間を(1秒とか)あけてから最小化したらどうか。

>>788
pFace->RedrawWindow();


792 名前: デフォルトの名無しさん 投稿日: 02/07/20 09:49
クラスのインスタンスが存在したままの状態でthisポインタが
書き換えられるなんてことは、あり得るのでしょうか?


793 名前: 87 投稿日: 02/07/20 09:57
みるならここだよ







http://www.abr200x.gr.jp


794 名前: デフォルトの名無しさん 投稿日: 02/07/20 12:21
>>792




795 名前: デフォルトの名無しさん 投稿日: 02/07/20 12:23
>>792
a::d()

は内部的には

a::d(a *this)

である。
思いっきりローカル変数なんだけど。


796 名前: デフォルトの名無しさん 投稿日: 02/07/21 12:06
メンバ関数の削除について
VC++6 だと クラス ビュー からメンバ関数を削除できて便利だったのですが,
VC++7 では クラス ビュー から削除できませんでした.
VC++7 でどうやってメンバ関数を削除するのでしょうか.
お手数ですがご存じでしたら教えてください.


797 名前: 投稿日: 02/07/22 22:45
MFCの勉強がてらHTTPSサーバに接続して、文字列(html文書等)
を取得するクライアントプログラムを作ってみたいのですが、
HTTPSプロトコルをラップしてくれるようなMFCのクラスはあるの
でしょうか?
Netを検索してもHTTPのソケットの作り方はあるのですが、HTTPS
になるとうまく情報が見つかりません。
WinAPIを叩ないといけないのでしょうか?
会社にある環境はVC++6.0なのですが。
教えていただけるとうれしいです。


798 名前: デフォルトの名無しさん 投稿日: 02/07/22 23:40
>>796
確かにメソッドの削除が面倒だ
ねぇどうしよう俺も困ってる


799 名前: デフォルトの名無しさん 投稿日: 02/07/23 12:05
>>976 >>978 マジ?


800 名前: 807 投稿日: 02/07/23 21:04
今 CFileDialog を使って以下のような処理を書いてます。

char filter[256] = "すべて (*.*)|*.*|";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, filter, this);
POSITION pos;
CString s;

if (dlg.DoModal() == IDOK){
pos = dlg.GetStartPosition();
while (pos){
s = dlg.GetNextPathName(pos);
//処理
}
}

Win2k(SP2)でテストしてて、どんなに「開く」を選択しても
IDCANCELが帰って来ちゃいます(whileの処理にいけない)
どうしてなんでしょう?

ちなみに選択したフォルダとファイルの合計が15を越えると
IDCANCELが帰ってくるみたいです。
15以下だとIDOKがちゃんと帰ってきます。



801 名前: 800 投稿日: 02/07/23 21:05
ぐはぁ 名前が別スレのままだ・・鬱氏。
ついでに age。


802 名前: 800 投稿日: 02/07/23 22:06
自己レス。

char szFileNameBuffer[10240] = "";
dlg.m_ofn.nMaxFile = 10240;
dlg.m_ofn.lpstrFile = szFileNameBuffer;

加えたらうまくいきました。


803 名前: デフォルトの名無しさん 投稿日: 02/07/24 10:36
>>802
それで解決にしたようだが、一応解説。
ファイルダイアログがデフォルトで持ってる
バッファの大きさが512(多分)。このバッファに
NULL文字区切りで複数のパスを格納する。終端はダブルNULL文字。
パス長の平均を30〜40文字とすると、15個前後でバッファを使い切ることになる。
ファイルダイアログはバッファを拡張してくれないので結果としてIDCANCEL(失敗)が返る。
なので、バッファを多めに取るのが解決のひとつ。ただし、10240でも選択ファイル数制限なしならば
いつかはオーバーしてしまう。
フックプロシージャを作ってファイル選択が増えるたびに
自前でバッファを拡張していくといくつでも格納できるようになる。


804 名前: デフォルトの名無しさん 投稿日: 02/07/24 12:25
質問です。
キー入力を取得するには
PretranslatMessageを使用すると思うのですが、
たとえばEDITBOXに文字を1文字入力した場合
PretranslatMessageを使用すると
EDITBOX内に文字が描かれる前に処理がされてしまいます。
EDITBOX内に文字が表示されてからその内容をSetWindowTextで取得し
処理をしたいのですが・・・・・



805 名前: 804 投稿日: 02/07/24 12:43
すみません問題を勘違いしていました。

CEdit内に文字を入力した場合は普通に表示し、
空白を入力(spaceキー入力)
した場合はCEdit内に空白を表示させずにべつのCEditBoxの処理をしたいのです。
この場合、文字を表示する前に
EN_UPDATEメッセージがでるので
そこでフックして処理すればいいのだと思いますが、
ON_EN_UPDATE関数ないでキー入力(この場合はスペースが入力されたという情報)
はどのようにして取得すればいいのでしょうか?


806 名前: デフォルトの名無しさん 投稿日: 02/07/24 13:19
>>804-805
PreTranslateMessageをオーバーライドして、
スペースの時の処理をしたら、TRUEを返せば
EDITにはキーメッセージが送られない。


807 名前: 804 投稿日: 02/07/24 13:48
>806
あ・・・
なるほど・・・
ありがとうございます


808 名前: デフォルトの名無しさん 投稿日: 02/07/24 14:00
>>803
VisualC++パワフルテクニック(本)に「ファイルダイアログで選択で
きるファイル数を増やす」というのがあって、これだ!と思って見た
ら、何のことはない char szFileNameBuffer[10240] みたいなこと
やってて全然パワフルじゃなくて萎え萎えになったことがあるな。


809 名前: デフォルトの名無しさん 投稿日: 02/07/24 14:19
>>808
同士よ。


810 名前: デフォルトの名無しさん 投稿日: 02/07/24 17:06
>>808-809
やっぱ、みんなアレに過剰な期待するよな(w
でも、何十個もユーザにファイル選ばせるようなのは
設計上に問題がある気もしないでもない。
特殊なケース除いては、正しく何十何百ものファイルを
選べるユーザを想定したアプリは怖い。


811 名前: デフォルトの名無しさん 投稿日: 02/07/24 18:16
質問です。
MFCを使って中が透明の円って描画できるでしょうか?


812 名前: デフォルトの名無しさん 投稿日: 02/07/24 18:21
>>811
SelectObject調べまくり。


813 名前: デフォルトの名無しさん 投稿日: 02/07/24 18:39
過去ログにはありませんでした。
SelectObjectでどのようにして指定すれば透明な円にできますでしょうか?


814 名前: デフォルトの名無しさん 投稿日: 02/07/24 19:06
>>813
Arc。


815 名前: デフォルトの名無しさん 投稿日: 02/07/24 19:08
ブラシを透明のブラシか何かにして円を書くんじゃなかったっけ?



816 名前: デフォルトの名無しさん 投稿日: 02/07/24 19:14
>>815
それもあり。


817 名前: 七誌 投稿日: 02/07/25 07:38
メッセージを自分で送信する方法ってありますでしょうか?
たとえばマウスの右クリックをしたならばWM_SIZEが送られるようにしたいのですが・・・


818 名前: デフォルトの名無しさん 投稿日: 02/07/25 07:46
>>817
sendmessage


819 名前: デフォルトの名無しさん 投稿日: 02/07/25 07:53
PostMessage


820 名前: デフォルトの名無しさん 投稿日: 02/07/25 09:13
>>811
SelectObjectでNullBrushで指定するんじゃないのかな?


821 名前: 800 投稿日: 02/07/25 11:01
>>803
それってどのタイミング?
CFileDialog::OnLBSelChangedNotify()
をオーバーライドすればいいのかなぁ?


822 名前: sage 投稿日: 02/07/25 12:58
メインフォームのキャプション(アプリの左上にあるタイトル)を
プログラムで変更したいのですがうまくいかないです。

CDialog*b1 = (CDialog*)GetDlgItem(1001);
b1->SetWindowText("タイトル");

こんな感じにしてみましたが、アプリケーションエラーとかになりました。


823 名前: デフォルトの名無しさん 投稿日: 02/07/25 13:08
>>822
AfxGetMainWnd()->SetWindowText("ほげ");


824 名前: デフォルトの名無しさん 投稿日: 02/07/25 13:23
ドキュメントクラスにデータをClassの形でおきたいのですが、
Structなら簡単にヘッダファイルに記述できますが、
Classの形だとできません。

:public
Struct foo{
}
ならできますが

:public
class bar{
}
とやるにはどうすればいいでしょうか?



825 名前: デフォルトの名無しさん 投稿日: 02/07/25 15:02
別ファイルで作ったクラス
MyClassをドキュメントクラスで宣言しようとします。

ドキュメントクラスのヘッダファイルで
:pubric
MyClass* NewClass;
と宣言して
Viewクラス内で
GetDocument()->NewClass->(メンバ関数);
とやるとメモリ関連のエラーが出てしまいます。

ドキュメントクラス内で宣言したクラスのメンバにアクセスする方法を教えてください。


826 名前: デフォルトの名無しさん 投稿日: 02/07/25 15:04
http://js-web.cside.com/index.html


827 名前: デフォルトの名無しさん 投稿日: 02/07/25 21:16
ogram Files\Microsoft Visual Studio\MyProjects\qq\qq.cpp(19) : error C2440: '=' : 'void *' から 'struct HBRUSH__ *' に変換することはできません。(新しい動作 ; ヘルプを参照)
'void*' から非 'void' 型への変換には明示的なキャストが必要です。



828 名前: デフォルトの名無しさん 投稿日: 02/07/25 21:36
キャストしんさい


829 名前: デフォルトの名無しさん 投稿日: 02/07/25 22:44
↑質問の下半分しかなかったのにありがとう。

ついでに
cpp(52) : fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
ってのがやたらでて,直しようがないんですがどうしたもんでしょう


830 名前: デフォルトの名無しさん 投稿日: 02/07/25 22:46
>>829
stdafxをインクルード


831 名前: デフォルトの名無しさん 投稿日: 02/07/25 22:49
C++理解したらVC++を自由に使いこなせると思っていたけど
ぜんぜんわかんね


832 名前: デフォルトの名無しさん 投稿日: 02/07/25 22:51
>>831
正常


833 名前: デフォルトの名無しさん 投稿日: 02/07/25 22:53
逆もまた然りだ。


834 名前: デフォルトの名無しさん 投稿日: 02/07/25 23:56
>>833
逆は厨房


835 名前: デフォルトの名無しさん 投稿日: 02/07/26 03:03
CStdioFileがUnicode環境で使い物にならなくて鬱...
あと何でもMSDNで throw( CFileException ); みたいに書いてあるけど,
例外投げないものも混じってない?




836 名前: デフォルトの名無しさん 投稿日: 02/07/26 06:57
>>829
プリコンパイル済みヘッダを使用しない。


837 名前: 825 投稿日: 02/07/26 07:25
ドキュメントクラスでクラス宣言して、そこにデータ格納するのはできないのでしょうか?
コンストラクタで宣言しても使えませんでした。


838 名前: デフォルトの名無しさん 投稿日: 02/07/26 10:23
>>837
やりたいことはサパーリわからんが、文面通り解釈するとこうか?

class MyDoc : public CDocument
{
public:
 MyDoc()
 {
  // コンストラクタでクラスを宣言してみました
  class DataClass;

  DataClass* pData = new DataClass(); // error: 定義してないのでインスタンスは作れませんでした

  pData->???? = 10 ; // error: どんなメンバがあるのかもサパーリなのでデータは格納できませんでした

  m_pData = pData; // なんの役に立つのかは知らないけど一応メンバ変数に保存して置こう
 }
 void* m_pData;
};


839 名前: 825 投稿日: 02/07/26 11:37
レスありがとうございます。
説明が不十分なようで・・・

#include "Newclass.h"

class MyDoc : public CDocument
{
public:
 Newclass* myClass = new Newclass[10];
 
};

って感じで定義して、ViewClassで



void CClusteringView::OnButtonRun()
[
GetDocument()->NewClass->(メンバ関数);
]

という感じで使いたいのですが、文法、もしくは定義の仕方が違うのでしょうか?


840 名前: 825 投稿日: 02/07/26 11:37
すみません
ViewClass内では
void CClusteringView::OnButtonRun()
[
GetDocument()->myClass->(メンバ関数);
]

とやってます。


841 名前: デフォルトの名無しさん 投稿日: 02/07/26 11:47
>>839
クラス定義の中で、
>Newclass* myClass = new Newclass[10];
なんてできない。
Newclass* myClass;
と、Newclassのポインタをドキュメントクラスのメンバに加えておいて
コンストラクタなりでnewすれ。


842 名前: 825 投稿日: 02/07/26 11:58
なるほど、レスありがとうございました。

あとはコンストラクタで、
NewClass* myClass = new NewClass[10];

と宣言して

ViewClassで
GetDocument->myClass[0]->x = 0.0;

みたいにメンバにアクセスできますね。

本当にありがとうございました。


843 名前: 825 投稿日: 02/07/26 12:21
たびたびすみません。
コンストラクタで

NewClass* myClass = new NewClass[10];

このように宣言するのは間違ってますか?


844 名前: デフォルトの名無しさん 投稿日: 02/07/26 12:29
>>843
コンストラクタ内でそれやったら新しいローカル変数が出来ちゃうでしょ

myClass = new NewClass[10];

だけで十分。
どっかで

delete[] myClass;

するの忘れないように

”クラス”と”オブジェクト”または”インスタンス”の言葉の使い分けをどこかで調べとくと吉
あと”宣言”も


845 名前: 825 投稿日: 02/07/26 12:57
>>844のようにやったところ
Doc.obj : error LNK2001: 外部シンボル ""public: __thiscall NewClasst::NewClass(void)" (??0NewClass@@QAE@XZ)" は未解決です
Doc.obj : error LNK2001: 外部シンボル ""public: virtual __thiscall NewClass::~NewClass(void)" (??1NewClass@@UAE@XZ)" は未解決です

とのエラーが(TT



846 名前: デフォルトの名無しさん 投稿日: 02/07/26 13:01
>>845
そのエラーはクラスのメンバの実装が書かれてないときに出ると思うけど
ちゃんと書いてるの?
VC++ではなく普通のC++の文法からやったほうがいいと思えてならない


847 名前: 825 投稿日: 02/07/26 16:21
>>846
解決できました。
プロジェクトに入ってなかったようです。
本当にありがとうございました。


848 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:01
C***View::OnDraw(CDC* pDC)関数に
MessageBox("hello",NULL,MB_OK);
と入力したのですがウィンドウの大きさを変化させたりしても
反応がありません。どうしてですか?


849 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:12
何Viewの派生クラスに具体的にどう書いたのか


850 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:24
CEditViewから派生させました。
内容は、
void CTestView::OnDraw(CDC* pDC)
{
 CTestDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 MessageBox("hrelo",NULL,MB_OK);
}

です。
コンストラクタとかにMessageBoxをかくと
ちゃんとダイアログが出るんですけど、、、



851 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:31
CEditViewはOnDraw呼ばないよ


852 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:36
はっ、そうだったのですか。
こりゃどうも失礼しました。
ありがとうございますう。


853 名前: デフォルトの名無しさん 投稿日: 02/07/27 21:58
ベターな質問ですみませんが、
線等を再描画して、他のアプリケーションに隠れたときに
消えてしまう現象を直すのにはどうしたらよいのでしょう?



854 名前: デフォルトの名無しさん 投稿日: 02/07/27 22:01
>>853
書き直す。
Windowsのお勉強。



855 名前: デフォルトの名無しさん 投稿日: 02/07/27 22:05
EXCELの質問ですみませんが、EXCELにはないイベントを拾いたいのですが・・
AddressOfで関数のアドレスを拾って、うんぬんまで分かりますが・・。
実際に搭載可能なのでしょうか?


856 名前: デフォルトの名無しさん 投稿日: 02/07/27 23:31
( CButton * )GetDlgItem( IDB_BUTTON1 )->SetWindowText( "test" );
って書くと、void型からCButton *型には変更できないって言われるんですが、
何かおかしいところがありますか?
CWndのGetDlgItemをリソースのIDだけで呼び出したときって、
戻り値はCWnd *型ですよね?



857 名前: デフォルトの名無しさん 投稿日: 02/07/27 23:32
>>856
( CButton * )(GetDlgItem( IDB_BUTTON1 ))->SetWindowText( "test" );



858 名前: デフォルトの名無しさん 投稿日: 02/07/27 23:44
>>857
ありがとうございます。
ブランクがしばらくあったので、前はできたのに…とか思ってました(^^;)



859 名前: デフォルトの名無しさん 投稿日: 02/07/27 23:55
SetWindowTextならCWndのままでもいいのでは


860 名前: デフォルトの名無しさん 投稿日: 02/07/28 00:04
GetDlgItem(IDB_BUTTON1)->SetWindowText("test");
ということで。


861 名前: デフォルトの名無しさん 投稿日: 02/07/28 00:15
>>859-860
確かに、SetWindowTextならキャストする必要ないですね(^^;)
鍛えなおします。



862 名前: デフォルトの名無しさん 投稿日: 02/07/28 00:49
.NETでスタティックリンクした
ダイアログアプリなんですが
動作するOS、
必要なランタイムがわかりません。
IE4以上推奨、とかそういう関係です。
解説ページとかあったら教えてもらいたいのですが。
OSはじかにテストしてみるしかないのでしょうか?




863 名前: デフォルトの名無しさん 投稿日: 02/07/28 00:52
>>862
Win98以降じゃないかな?


864 名前: デフォルトの名無しさん 投稿日: 02/07/28 08:51
>>862
ヘルプ読めよ。そのAPIが使えるOS載ってる。


865 名前: N 投稿日: 02/07/28 10:41
>>853
。。。。。。。ちょっとは本を読んで勉強しましょう。

MFCのCView系ならばOnDraw。
純粋なWidnowsSDKで組んでいるならば、WM_PAINTで描画しる!!


866 名前: 811 投稿日: 02/07/28 13:47
すみませんがもう一度質問します。
MFCを使って中が透明の円って描画できるでしょうか?

簡単なプログラム例も載せていただくと助かります。


867 名前: デフォルトの名無しさん 投稿日: 02/07/28 13:49
>>866
selectobject使え。



デジャブ。w

NULL_BRUSHに早く気づけ。


868 名前: デフォルトの名無しさん 投稿日: 02/07/28 22:04
>>866
GetStockObjectでNULL_BRUSH、それをSelectObject


869 名前: デフォルトの名無しさん 投稿日: 02/07/28 22:06
Arcでも円が書けるのになぁ(しょぼん


870 名前: _ 投稿日: 02/07/29 03:49
<FORM></FROM>で囲ったフォームオブジェクトと同じ事を、ActiveXコントロールで
行いたいのですが、可能でしょうか?
つまり、<FORM>でGET/POSTされる時に、ActiveXコントロールからも、自動的に
データが読み出されて、サーバへリクエストが送信されると行った動きです。

宜しくお願いします。


871 名前: デフォルトの名無しさん 投稿日: 02/07/29 09:37
ActiveXでDHTMLに介入すればええんでないかい?


872 名前: デフォルトの名無しさん 投稿日: 02/07/29 10:04
>>870
スクリプト側で解決すべき問題かと思われ


873 名前: デフォルトの名無しさん 投稿日: 02/07/29 10:12
Class1(自作クラス)とProjectDoc(ドキュメントクラス)の2つのクラス間を
ポインタを使ってデータを相互参照しようと思います。

Class1のメンバに

#include "ProjectDoc.h"
public:
  void GetDoc(const CProjectDoc& src);

と指定すると

ドキュメントのほうで、
#include "Class1.h"

:private
  Class1* myclass;

とすると
: error C2143: 構文エラー : ';' が '*' の前に必要です。
: error C2501: 'Class1' : 識別名を宣言するのに、型が指定されていません。
: error C2501: 'myclass' : 識別名を宣言するのに、型が指定されていません。

というふうに、
ドキュメントクラスの #include"Class1.h"が無効になってしまうエラーが出てしまいます。
どこかおかしいのでしょうか?


874 名前: デフォルトの名無しさん 投稿日: 02/07/29 10:53
VC初心者です。CAsyncSocketを使って非同期ソケットを
つくってみたいのですが、OnAcceptでSendをすると
-1が帰ってきてしまいます。
OnAccept自体はエラーになっていません。
なぜでしょう?


875 名前: デフォルトの名無しさん 投稿日: 02/07/29 11:12
>>874
GetLastError()は?


876 名前: デフォルトの名無しさん 投稿日: 02/07/29 11:39
>>875
ヘルプにある戻り値ではありませんでした。
あと、OnCloseとかもまったく呼ばれません。
OnAcceptだけが呼ばれる感じです。
ちなみにコードはこんな感じです。

グローバル
CSockTest s;
CSockTest aptsock;
CSockTest& clsock = aptsock;


ダイアログ

// TODO: 特別な初期化を行う時はこの場所に追加してください。
AfxSocketInit();
if (s.Create(5007) == 0){
MessageBox("Socket Err");
}
if (s.Listen() == 0){
MessageBox("Listen Err");
}
s.Accept(clsock);

派生クラス
void CSockTest::OnAccept(int nErrorCode)
{
if (Send("TEST",4,0) == SOCKET_ERROR){
MessageBox(NULL,"ERR","",MB_OK);
}
CAsyncSocket::OnAccept(nErrorCode);
}



877 名前: デフォルトの名無しさん 投稿日: 02/07/29 11:44
Sendの前にAcceptしてみそ。


878 名前: デフォルトの名無しさん 投稿日: 02/07/29 11:53
>>877
Listenの後のAcceptではだめでしょうか?


879 名前: デフォルトの名無しさん 投稿日: 02/07/29 13:56
>>877
できましたー
ありがとうございます。
OnAcceptだからAcceptを呼ぶ
うーん。なるほど。


880 名前: デフォルトの名無しさん 投稿日: 02/07/29 14:41
ダイアログアプリでWindowsのシャットダウンを
検知して、終了作業を行いたいんですが
どうやって検出すればいいですか?
上手く検索できなかったので
検索ワードでも結構ですので、
よろしくお願いします。


881 名前: デフォルトの名無しさん 投稿日: 02/07/29 14:58
>>880
必ず終了処理ができなければいけないアプリではまずいのでは?


882 名前: 880 投稿日: 02/07/29 15:12
>881
えっそうなんですか?
じゃ例えばレジストリや.iniファイルへの書き出し
っていうのはその都度行うのが正しいんでしょうか?
終了時にすべて一括して書き出してるのですが。。


883 名前: デフォルトの名無しさん 投稿日: 02/07/29 15:24
>>882
そういうのは随時更新すべし


884 名前: デフォルトの名無しさん 投稿日: 02/07/29 15:31
終了時に設定をまとめて書き出す
アプリがdだときってとっても悲しいね


885 名前: 880 投稿日: 02/07/29 15:36
知らなかった。。
だってどこにも書いてなかった。
結構当たり前の基本だったのね。。
もうそこ」以外全て完成してただけに
がっかり。。
書き直してきます。
ありがとうございました。
深く感謝。


886 名前: デフォルトの名無しさん 投稿日: 02/07/29 16:39
>>880
ちなみに、Winがシャットダウンするときは WM_QUERYENDSESSION(だったかな?)
が飛んでくるので、それをハンドリングしてやればよろし。


887 名前: デフォルトの名無しさん 投稿日: 02/07/29 16:45
俺は一括して読み書きしてるがなぁ・・・


888 名前: 880 投稿日: 02/07/29 19:04
>>886
ありがとうございます。
無事解決しました。

ですが、根本的にそのたびに書き出した方が
いいということがわかりよかったです。
すると新たな疑問が湧いてきたのですが
そのたびにiniファイルに書き出すのだとしたら
逆に必要になればその度読み出すべきなのでしょうか?
今までは起動時にiniファイルから読み出し変数へ格納、
終了時に変数とiniファイルに書き出し、
この流れだったんですがその度に書き出すとすると
メモリを使ってまで変数を使用する必要があるのですか?


889 名前: デフォルトの名無しさん 投稿日: 02/07/29 19:34
>>888
そう、どっちかに決めることないじゃん。
ケースバイケースだよ。



890 名前: デフォルトの名無しさん 投稿日: 02/07/29 19:36
ちなみにオレは
読み込みは起動時に一気に変数へ格納
書き換え時は変数とini両方書き換え


891 名前: 880 投稿日: 02/07/29 19:42
今の私の状況的にも
>890
のようにするのが一番手っ取り早いんですが
そうなるとメンバ変数のメモリ使う意義がわからなくなって。。
次に読み出すときメンバ変数からじゃなくて
iniファイルに最新のデータがはいってるわけで
iniファイルから読み出せばいいんじゃないかと。
でも理由はないんですがなんとなく不安で。。
ご意見ありがとうです。


892 名前: 890 投稿日: 02/07/29 20:00
書き換えることは少ないからねー



893 名前: デフォルトの名無しさん 投稿日: 02/07/29 20:53
COleCurrencyって、使ったことある方、います?
属性にお金を持たせるクラスがあったんで何も考えずにこれを使ったんですが、
どうしてもdouble型との掛け算をしたいって話になって・・・

しょうがないので今は強引にdouble型をlong型に変換して計算してるんですが、
これってもっといい方法とかあるんでしょうか。
それとも、そもそもCOleCurrencyを使う時点で間違ってるんでしょうか。


894 名前: デフォルトの名無しさん 投稿日: 02/07/29 23:19
イメージリスト(CImageList)からインデックス別にビットマップを
作成するにはどうすれば良いのでしょうか?
ExtractIconではアイコンしか取得できないし、GetImageInfo
で取得できるIMAGEINFO構造体のhbmImageを取得しても、
これは指定したインデックスのビットマップではないようなのです。


895 名前: デフォルトの名無しさん 投稿日: 02/07/30 11:17
ダイアログベースで、ダイアログにピクチャーでビットマップを貼り付けて
その上に図形を描画しようと思っているんですけど、

OnPaint上で描画すると図形が先に描画されてしまって
そのあとビットマップが描画されるためビットマップが上になってしまいます。

どうすればいいですかね??



896 名前: デフォルトの名無しさん 投稿日: 02/07/30 13:19
ダイアログ上で、マウス・キーボードが入力されたときの判定を行いたいのですが
BOOL CDlg::PreTranslateMessage(MSG* pMsg)
{
     if(
( pMsg->message == WM_KEYDOWN )||
( pMsg->message == WM_MOUSEMOVE )||
( pMsg->message == WM_LBUTTONDOWN )||
( pMsg->message == WM_RBUTTONDOWN )
)

こう書いたところ、WM_MOUSEMOVEが常に通ってしまいます。
正しいマウスの動作チェックのしかたを教えてください。

この質問は、ここに書いてもよいのでしょうか?
C言語スレに書いてスイマセンでした。


897 名前: デフォルトの名無しさん 投稿日: 02/07/30 23:29
>>896
おかんが廊下歩くときの振動でマウスが動いてる。揺らすなとお願いすれ。


898 名前: デフォルトの名無しさん 投稿日: 02/07/30 23:39
>>895
ビットマップ描いた後に図形描けば良いじゃん?


899 名前: デフォルトの名無しさん 投稿日: 02/07/31 00:13
メモリDCを使おう。


900 名前: デフォルトの名無しさん 投稿日: 02/07/31 10:54
>>896
XP?


901 名前: デフォルトの名無しさん 投稿日: 02/07/31 11:12
ダイアログの中にプロパティシートを置いて使っているんですが、
プロパティシート上のページと、ダイアログ本体のフォントは同じ
MSゴシック9ポイントを指定しているのに(ダイアログリソースの
プロパティでフォントサイズを指定しています。)、明らかに
違って見えるんです。
(プロパティページ上のフォントはMSPゴシックのような気がします。)

また、ためしに同じサイズのボタンを置いてみましたが、
明らかにボタンの大きさが違ってみえます。

原因ご存知の方いましたらぜひ教えてください。おながいします。


902 名前: デフォルトの名無しさん 投稿日: 02/07/31 11:21
>>72
スマン、C#素晴らしいと思うのだが、どっかのスレで
C#よりVBで生成するコードの方がアセンブリ情報が
どうとかで高速らしい。




903 名前: デフォルトの名無しさん 投稿日: 02/07/31 13:37
C++万歳


904 名前: デフォルトの名無しさん 投稿日: 02/07/31 15:46
IEのメニューバーの右端で回ってるWindowsマークだけど、
あれって、どうやって実現するのですか?
方法をご存知の方、ご教授願います。


905 名前: デフォルトの名無しさん 投稿日: 02/07/31 15:49
CAnimateCtrlを使ってるんだよ。AVIファイルが必要だから自分で作る。
MFCIEていうサンプルプログラムがあるから参照してくれ。


906 名前: デフォルトの名無しさん 投稿日: 02/07/31 15:49
>>904
一定時間ごとに別なビットマップを描画していけばアニメーションする。


907 名前: デフォルトの名無しさん 投稿日: 02/07/31 15:52
>>905
Thx!
キーワードが分からなかったので、ぐぐれなくて困ってました。
今、ダウソ中です


908 名前: デフォルトの名無しさん 投稿日: 02/07/31 15:52
ダイアログアプリで
SCMPXのようにWindowをドラッグして移動してる時に
画面端近くならぴたっと画面端に吸い付くようにしたいのですが
できません。
考えて↓のように書いたのですが。。

//Window移動中
void CTestDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
CDialog::OnMoving(fwSide, pRect);//Default

CRect rcDT;
GetDesktopWindow()->GetWindowRect(&rcDT);
if(pRect->top<=rcDT.top+30)
{
CRect rc(pRect);
rc.top=rcDT.top;
rc.bottom=rc.Height();
MoveMainWindow(&rc);
}
}
これだとなぜか画面上部に近づくと
ドラッグ中のカーソル位置<->画面端に引っ付いた位置
をすごい速さで行ったり来たりして思うように動いてくれてません。
説明難しいですが。。
どこが間違っているのでしょうか?


909 名前: デフォルトの名無しさん 投稿日: 02/07/31 16:28
聞きたいことと少し違ったので、再度質問させてください。
MFCIEではツールバー上にアニメーションコントロールが置かれていますが、
これをIEのようにメニューバー上に実装したいのですが、
どうしたら良いか分かりません。


910 名前: 909 投稿日: 02/07/31 16:33
904=909です


911 名前: デフォルトの名無しさん 投稿日: 02/07/31 16:39
>908
//Window移動中
void CTestDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
  CDialog::OnMoving(fwSide, pRect);//Default
  ↑
  これって何やってんの?
  
  CRect rcDT;
  GetDesktopWindow()->GetWindowRect(&rcDT);
  ↑
  これって、デスクトップのサイズを取得してる?
  
  if(pRect->top<=rcDT.top+30)
  {
  ↑
  で、上に30ドット以内になったら、ここにきて
  
    CRect rc(pRect);
    ↑
    これって、rcの初期値として、pRectを入れてるの?
    
    rc.top=rcDT.top;
    rc.bottom=rc.Height();
    ↑
    bottomってサイズが入るんじゃないの?
    pRectに既にサイズが入ってないの?
    
    MoveMainWindow(&rc);
    ↑
    これで、更新した値を反映してる。
 }
}


912 名前: 908 投稿日: 02/07/31 20:14
こんばんわ、908です。
ご指摘の部分はVCが自動作成したものです。
ちなみにコメントアウトしても問題なかったです。
もともとは
CDialog::OnMoving(fwSide, pRect);
//TODO:ここに独自の処理と追加…
みたいな感じのやつです。
よろしくお願いします。


913 名前: 908 投稿日: 02/07/31 20:16
>911
すみません、スクロールバーが一番↓だと思ってて
一番上しか読めてなかったです。
ゆっくり考えてきます。
ありがとうございました。


914 名前: 908 投稿日: 02/07/31 20:38
>>911
考えてきました。連カキコすみません。
GetDesktopWindow()->GetWindowRect(&rcDT);
↑デスクトップのサイズを取得してます。
CRect rc(pRect);
↑わざわざ使う必要は無いのですがちょっと
頭の整理と、見やすくなるので。
rc.bottom=rc.Height();
pRectに既にサイズが入ってるのですが
rc.topをずらしたら同じだけrc.bottomをずらさねば、と。
rc.bottom -= rc.top と同じです。
MoveMainWindow(&rc)
すみません、説明抜けてました。
中身はメインウィンドウのMoveWindowと
コントロールの子ウィンドウを同時に動かすためのものです。

もうかなり迷ってるのですが、
根本的に間違ってるんではないかとも考えてしまいます。
ご存知の方、よろしくお願いします。


915 名前: Bluck 投稿日: 02/07/31 21:08
VC++のofstreamって、UNICODEに対応していますか?
テキストファイルに書き出すと、ただの数字の羅列が出力されてしまいます。


916 名前: NEW 投稿日: 02/07/31 21:11
TIFF形式での画像ファイル作成方法を教えてください。
よろしくお願いします。



917 名前: デフォルトの名無しさん 投稿日: 02/07/31 21:12
>>916
MFCで?


918 名前: デフォルトの名無しさん 投稿日: 02/07/31 21:13
>>916
そんなクラスはMFCになかったと思うよ


919 名前: デフォルトの名無しさん 投稿日: 02/07/31 21:32
MFCよく知らんが
>    MoveMainWindow(&rc);
こんな命令あったっけ。

914は、中学生?
その機能を何に使いたいの?


920 名前: 908=914 投稿日: 02/07/31 21:44
>こんな命令あったっけ
>914
メインウィンドウのMoveWindow +
コントロールの子ウィンドウを同時に動かすためのものです。
作りました。
>その機能を何に使いたいの?
その機能=MoveMainWindow()なら

質問の意図は↓
>908
SCMPXのようにWindowをドラッグして移動してる時に
画面端近くならぴたっと画面端に吸い付くようにしたいのですが
です。よろしくお願いします。


921 名前: デフォルトの名無しさん 投稿日: 02/07/31 22:03
>920
質問するにあたって、アレではダメだろ。
ブラックボックスがあるし。
まずは、親ウィンドウだけを希望通りに動くようにすべきだろ?


922 名前: Bluck 投稿日: 02/07/31 22:06
>>915
よく見たらすれ違いでした。すみません。


923 名前: 908 投稿日: 02/07/31 22:08
>921
それもそうですね、すみません、
MoveMainWindow =>MoveWindow()
と考えてもらって結構なんで
よろしくお願いします。


924 名前: デフォルトの名無しさん 投稿日: 02/07/31 22:21
MFC知ってる奴来ないみたいだけど、暇だから考えてみる。
RECT系の構造体って、
topとleftに左上の座標が入り、
bottomとrightにサイズが入る場合と、
bottomとrightに右下の座標が入る場合がある。
あのソースのRECT系変数は、それぞれどのタイプ?って、分かってる?


925 名前: デフォルトの名無しさん 投稿日: 02/07/31 22:37
SetWindowPosのこと?


926 名前: デフォルトの名無しさん 投稿日: 02/07/31 23:03
>>908
MoveWindowするんじゃなくて、pRectの中身を書き換えてやれば
いいんじゃないのか? ヘルプ慾余命幾許。


927 名前: 暇人 投稿日: 02/07/31 23:18
これでドーダ!
//Window移動中
void CTestDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
  CRect rcDT;
  GetDesktopWindow()->GetWindowRect(&rcDT);
  
  if(pRect->top<=30)
  {
    pRect->bottom-=pRect.top;
    pRect->top=0;
    pRect->right-=pRect.left;
    MoveMainWindow(pRect); //または、CDialog::OnMoving(fwSide, pRect);
  }else
  {  CDialog::OnMoving(fwSide, pRect);//Default
  }
}



928 名前: 暇人 投稿日: 02/07/31 23:19
あ、
pRect.top;
とかは、
pRect->top;
の間違いね



929 名前: 908 投稿日: 02/07/31 23:53
>927
ありがとうございます。
pRectの方を調整したらよかったんですね。
全く気付きませんでした。
上手く動作しました。
ただしへばりついたまま離れようとしてくれませんがw
これは自分でがんばってみたいと思います。
ありがとうございました。


930 名前: 暇人 投稿日: 02/08/01 00:08
結局、908は、
>あのソースのRECT系変数は、それぞれどのタイプ?って、分かってる?
分かってなかっただけ。

へばりついたまま動かないのは、当然やな。
Windowをドラッグしてるときの、あの枠組の座標って取得できるのかな。
できなけれは、Windowを最初にクリックしたときのマウスポインタの座標を記録して、
ドラッグでマウスポインタが動いてるときのY座標の差が、30を超えたら、
Windowの座標を、30超えた値にする方法がある。
それか、Windowの移動を自前で設定するときは、Windowの移動を完了したときだけにして、
そのイベントを取得して、そのときの座標がピッタリでなければ、自前で設定する。
暇だといろいろ考えてしまう。


931 名前: デフォルトの名無しさん 投稿日: 02/08/01 10:57
すごく初歩的なことだと思うんですが
Cで言う構造体宣言やグローバル変数ってどこで作ったらいいんでしょう。。。
C++初心でぜんぜんわかりません...


932 名前: 投稿日: 02/08/01 11:01
スレ違い


933 名前: デフォルトの名無しさん 投稿日: 02/08/01 12:49


CString CXXX::XXX()
{

}

int iGlobal; //←がグローバル変数

void CXXX::INCXXX()
{
   iGlobal++;
}

int CXXX::GetXXX()
{
  return iGlobal;
}



934 名前: 931 投稿日: 02/08/01 13:14
ごめんなさいMFCでのグローバル変数の作り方が
わかりませんということです。
933のやり方で、ほかのcppファイルでも変数扱えるんでしょうか。


935 名前: デフォルトの名無しさん 投稿日: 02/08/01 13:19
>>934
externすればな
ていうかMFCでグローバル使うな


936 名前: がすけ 投稿日: 02/08/01 16:47
お世話になります、がすけと申します。

早速ですが質問させてください。
「rasphone.pbk」の内容を直接編集しても「rasphone.pbk」は、
変更できますが、システム?は即反映されません。

具体的には
1.「rasphone.pbk」に対して「WritePrivateProfileString」を
使用し「接続時にタスクバーにアイコンを表示する」を有効にする

2.「rasphone.pbk」の編集成功

3.編集したダイヤルアップでダイヤルアップを行う

4.タスクバーにアイコンが表示されない!!←ここが問題

以下のことを行うとタスクバーにアイコンが表示されます
a.Windowsの再起動を行う
b.エクスプローラでダイヤルアップを開き「最新情報に更新」を行う

「rasphone.pbk」を直接編集後にその内容をシステムに通知?する方法を
教えて下さいお願いします・・・・・

開発環境
Windows2000
VC++6.0



937 名前: 370 投稿日: 02/08/01 17:04
標準のキーボード入力(PS2 I/F)を無効にするような
ことはできますか?


938 名前: デフォルトの名無しさん 投稿日: 02/08/01 17:18
ひっこ抜く。


939 名前: デフォルトの名無しさん 投稿日: 02/08/01 17:19
>>937
単発スレたてんな


940 名前: デフォルトの名無しさん 投稿日: 02/08/01 18:12
あの370じゃないんですが、似たような質問いいですか?
OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
を利用して、仮想コードがVK_MENU(Altキー)の場合、
Alt+Tabなどを使用させないように無効にしたいのですが、
やり方ありますか?教えてください。


941 名前: デフォルトの名無しさん 投稿日: 02/08/01 18:17
nChar = 0 では、いけませんでした。


942 名前: デフォルトの名無しさん 投稿日: 02/08/01 19:08
VC++勉強をはじめたばかりなのですが
MFC使うのと使わないのではどの程度生産性が違いますか?
それとMFCを使わない方法を知っていると何か良いことはありますか?


943 名前: 940 投稿日: 02/08/01 19:39
検索で調べたところ、
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, &i, 0);
でシステムキーを無効にできるとあったのですが、ヘルプをみてみると
SPI_SCREENSAVERRUNNINGは、Win95のみとのことでした。
現在使用しているPCは、2000なのですが、対応策ありませんか?おねがいします。


944 名前: デフォルトの名無しさん 投稿日: 02/08/01 20:06
>940
DirectInputの関連で、その話題がたまに出てくる。
いそのこと使ってみたら?


945 名前: デフォルトの名無しさん 投稿日: 02/08/01 20:47
GetLastError 関数が返したシステムエラーコードに対応するエラーメッセージを取
得しようとして
以下のようなプログラムを埋め込むと、

LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGN
ORE_INSERTS,
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );

MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK |
MB_ICONINFORMATION );
LocalFree( lpMsgBuf );

error C2660: 'MessageBoxA' : 関数が不正な 4 個の実引数をともなって呼び出され
ました。
cl.exe の実行エラー

とでてきます。これはなぜ起こるのでしょうか?以前はちゃんとエラーが帰ってきた
のですが、
最近はこのエラーがでて使えません。よろしくお願いします。




946 名前: デフォルトの名無しさん 投稿日: 02/08/02 00:11
>>945
CWnd::MessageBoxを呼んでるから。


947 名前: デフォルトの名無しさん 投稿日: 02/08/02 00:16
>>945
CWnd::MessageBoxを呼んでるから。
APIを呼びたかったら、::Mess〜とすれ。


948 名前: デフォルトの名無しさん 投稿日: 02/08/02 01:09
ボタンにBitmapを貼り付けたくて
CBitmapButtonを使って実装しました。
ヘルプにもある通り、OnInitDialogの中で
AutoLoad()を呼び出したのですが、
納得できないのが
CDialog::OnInitDialog();
より後ろに書くとASSERTのエラーが出てしまいます。
前に書くとエラーが出ないのですが、
ヘルプには前に書けという指示も無かったので、
CDialog::OnInitDialog();
より後ろにAutoLoad関数を書いてはいけない理由がわかりません。
どうしてでしょうか?


949 名前: デフォルトの名無しさん 投稿日: 02/08/02 01:30
ソースみれ


950 名前: 940 投稿日: 02/08/02 10:38
>>944
DirectInputクラスをヘルプと、Googleで少し検索してみたのですが、
ゲームパッド・ジョイスティックで使用するクラスですか?
MSDNには、これも2000・xpには適用されないとのコトでした。

SPI_SCREENSAVERRUNNINGを使ってみたのですが、エラーにはならない
のですが、無効のようですね。


951 名前: デフォルトの名無しさん 投稿日: 02/08/02 11:32
>MSDNには、これも2000・xpには適用されないとのコトでした。
DirectInputが? 2000/XPで使えないと?
MSDNのどこにそんなことが?


952 名前: 940 投稿日: 02/08/02 12:13
>>951
勘違いしてました。すいません。この組み合わせだけでした。
Windows XP または
Windows 2000 と DirectX 8.1 SDK

この記事は、DirectInput API を使用している DirectX 開発者を対象としていますが、
Microsoft Windows 2000 と DirectX 8.0 および DirectX 8.0a SDK を
使用している開発者のみに適用されます。この記事は、Windows XP または
Windows 2000 と DirectX 8.1 SDK を使用している開発者には適用されません。


953 名前: 940 投稿日: 02/08/02 12:16
さらにこの記事は
「DirectInput デバッグ時の遅延を防ぐ方法」
でした。
あせりすぎでした。すいません。


954 名前: デフォルトの名無しさん 投稿日: 02/08/02 19:15
すいません、スレ違いかもしれませんが、
一応 MFC に関することなので質問させてください。
MFC ActiveX ControlWizard で作った ActiveX に
JavaScript から文字列を渡す方法ってあるんでしょうか。

例えば URL を入力してそれを JavaScript から ActiveX に渡す、
すると ActiveX はその URL を使って色々なんかやる、みたいな。
(↑くれぐれもこれは例え話なんで「全部 ActiveX でやれば」とか
 「全部 JavaScript でやれば」なんてお願いですから言わないで下さい)

誰か知ってるなら、助けてください。どうかお願いします。


955 名前: 945 投稿日: 02/08/02 19:52
>>946,947
どうもありがとうございます。
修行不足です。精進します。


956 名前: デフォルトの名無しさん 投稿日: 02/08/04 02:50
MFCでプログラムしててCWindowなんてのを見つけて
こりゃ便利だと使ってコンパイルしたら失敗〜。。ありゃりゃ〜?!
あっそうか、ヘッダが要るのか〜と
#include <atlbase.h>
#include <atlwin.h>
を追加してふと気がついたがこれはATLじゃん・・
直すのもめんどくさいし。なんとかこのまま突き進む方法はありませんか?



957 名前: Rina ◆tI333vNE 投稿日: 02/08/04 03:31
おとなしく直すほうが吉かと。



958 名前: デフォルトの名無しさん 投稿日: 02/08/04 11:38
>957
どうもです。

しかしHWNDとかHBITMAPとかWin32系ハンドルとMFCのクラスの関係っていまいちわかりずらいよなぁ。
CWnd *p = CWnd::FromHandle(hWnd);
p->ShowWindow();
とかでOK?
CWnd wnd;
wnd.Attach(hWnd);
だとなぜ死ぬんだろう・・



959 名前: デフォルトの名無しさん 投稿日: 02/08/04 14:16
>>958
下の例だと、wndの寿命が終わったときにウインドウが破棄されない?


960 名前: デフォルトの名無しさん 投稿日: 02/08/04 15:02
初めてDLLを作成するんですが、
GetFileNameという自作の関数を
エクスポートしたいのですが、リンクエラーが発生
してしまいます。
エラーは大量に出るのですが、どうやら
CString classのGetFileNameとぶつかってる(?)
ようです。
自作の「GetFileName」という名前の関数をDLLから
使おうという発想自体が間違いなのでしょうか?
よろしくお願いします。


961 名前: デフォルトの名無しさん 投稿日: 02/08/04 16:32
>959
死ぬというかデバッグ時のassertで引っかかるみたいですね。
まぁ上の方法でなんとか動いてます


962 名前: デフォルトの名無しさん 投稿日: 02/08/04 16:41
CByteArrayなどのテーブルを
を"<<"や">>"でシリアライズすることはできますか?


963 名前: デフォルトの名無しさん 投稿日: 02/08/04 17:44
>>962
Yes. つーかここで訊かずにMSDNに訊いた方が500倍くらい
速く答えが返ってくると思うぞ。


964 名前: 960 投稿日: 02/08/04 23:37
>960です。
なにか聞き方がまずかったかな。
要約すると、DLLを使う側のプログラムで
GetFileName関数を呼び出したいのです。
他の関数はエクスポートできてるみたいなんですが
CStringTクラスとぶつかる(?)らしく、
GetFileNameのみエラーがでます。
これをなくすにはGetFileNameという
名前を他のものにするしかないのでしょうか?


965 名前: デフォルトの名無しさん 投稿日: 02/08/04 23:39
>>964
名前を変えたらエラーは一つも出ないの?


966 名前: 960 投稿日: 02/08/04 23:46
えっと、デバッグモードでは出ませんが、
リリースモードにすると
LINK : warning LNK4089: 'OLEAUT32.dll' への
すべての参照は /OPT:REF によって廃棄されます。
上がひとつでます。
関係ないと思って放置してますが。
ヘルプ読んでも理解できなかったので。
これが関係あるのでしょうか?


967 名前: 960 投稿日: 02/08/04 23:46
↑ageてしまいました、すみません。


968 名前: 960 投稿日: 02/08/05 01:15
報告です。
結局GetFileName関数の名前を変更してエラーを回避して、
無事動作を確認しました。
根本的な解決ではありませんが。。
LINK : warning LNK4089: 'OLEAUT32.dll' への
すべての参照は /OPT:REF によって廃棄されます。
リリースビルドでこのエラーがどうしても消えません。
ヘルプには
リンカは dynamic-link library のエクスポートを参照する
パッケージ化された関数をすべて破棄しました。
とありますが、未熟者なので理解できませんでした。
これはつまりどういうことなのでしょうか?


969 名前: 投稿日: 02/08/05 02:06
>>968
warningはエラーじゃない。


970 名前: 960 投稿日: 02/08/05 02:38
>969
すみません、言葉の選択を間違えました。
エラー-->警告
でお願いします。
警告なので無視しても大丈夫と思いますが
分かっていて無視するのはいいですが、
わからないまま無視するのもどうかと思いまして、
悩んでいます。


971 名前: デフォルトの名無しさん 投稿日: 02/08/05 07:31
>>970
> LINK : warning LNK4089: 'OLEAUT32.dll' への
> すべての参照は /OPT:REF によって廃棄されます。

訳:リンクの設定の所ではOLEAUT32.dllをリンクするように
書いてるようだが、おみゃーのプログラムは一回もOLEAUT32.dllを
使ってないのでそこんとこ無駄だから無視するぞゴルァ!!

つーわけで別に問題ないかと。


972 名前: 960 投稿日: 02/08/05 07:55
>971
なるほど、わかりやすい解説ありがとうございました。
将来使うかもしれないので、警告は消さずに、
置いておこうと思います。
ありがとうございました。


973 名前: デフォルトの名無しさん 投稿日: 02/08/05 10:58
MDIGetActive以外でMDIのアクティブなウィンドウのハンドルを
取ることは出来ないのでしょうか?

GetForegroundWondowだとフレームのハンドルのほうを取ってしまう
ようで・・・。


974 名前: 973 投稿日: 02/08/05 11:38
自レスですスマソ。

::SendMessage(m_hWndMDIClient , WM_MDIGETACTIVE , 0 , 0);

としたらOKでした。
お騒がせしましたm(__)m


975 名前: デフォルトの名無しさん 投稿日: 02/08/05 22:16
新スレです。
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/test/read.cgi/tech/1028553308/


976 名前: SITNAM 投稿日: 02/09/03 17:37
ふっ、ついに俺の出番か…。
1000はこのSITNAM様が頂戴する。
ふははははははは…


977 名前: SITNAM 投稿日: 02/09/03 17:37
ヒッヒッヒ…


978 名前: SITNAM 投稿日: 02/09/03 17:39
がんばるぞ!


979 名前: SITNAM 投稿日: 02/09/03 17:41
          , -  ̄  ̄ `  ヽ 、
       ゝ´          ___ --´ヽ_
      〃`---|---l- ̄ ̄  __ ---  `ヽ.
    〃` ----| |--|\- ̄ ̄           ヽ.
    l    | | | |  \l\     ヽ       l
   l     | |   | |   \ ヽ.      l       l
   | /    | |__ l    ___ \    |       |
   レ´|  / / |,,- 、    ,- 、ヽ |   |-- 、   l
   | |   l 〃レ|    レ |ヾ |   |/  l   l
     |   l` ゝノ      ゞ.ノ ´ |   | ) /  l
     | |   |                |   | / 〃
     ||   l   ヽ        |   |  /
      |   ヽ 、  ヽ フ     |   |/
        l    / ヽ 、   _ - ´| /
      l  /      ̄l      |/.|_
        l/      /´ ̄l      | |_`\
       |   _,-/ /-/     , ―――´\
       __--l´  l /     /  ____l--__


980 名前: SITNAM 投稿日: 02/09/03 17:42
         ,    -―-  、
       /            \
    /     /| /| ハ    ヽ_
   / /  / / // | | |  ヽ / /
  / _/ / / |/ |/  v N | | |/ /|   / ̄ ̄ ̄ ̄
   | ./ / |/TΤ   ГTヽ|( (/))| < マルチ
   |/レ | 〉 -┘ 、 └-  V ~ | |  \____
       v\ ″ ー  ″ イv w N
        ^ ` ー-    ノ  ヽ
         | |  |  /  / ∧


981 名前: SITNAM 投稿日: 02/09/03 17:43
               , -'" ̄~"'-、
             /, ミ 彡⌒ヽ、ヽ、
            /, '//( .)\ヽ |lヽ |l
            l|/〃 / l ヾヾヽ l|ヽ l|
          〃 l| l| ノ从ハ从从ヽ|l从l|
            |l|l |l|l-tェ ´'ェェ-l|6)I||
            l|  l||i'"" , ""l||  I||   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
             __ l|i .  ヮ  l||  I|I|I <
           /   ̄  ! ー ' |||l  l|l|I|   |
          /      ヽ'      I||I`ヽI|I|  \_________________
          |  ,     L -─ I|I  ヽI
          |  |         l||     ヽ
          |/     y   _,i! v    |
          /      ,'      |    /
          |      |        |   /
         ι)__   .:人  (._) ,ノ   /
           |  ̄i~  `'ー-- ''~   /
 ,-、_       |   |   ゝ  /  ./
ζ    ̄ ̄ヽ _/|   |     /  /.ioー-,
 '-、  ⌒ /   |    |ヽ、_/   //!_iヾ'
 /  _/     |   |`ー-/   / /´i
'" /           |  |`ー/   /, '-'" |
/             |  |-/  ./'     |
              ノ _, -'~  /       |
          ,〈√'    /          |


982 名前: SITNAM 投稿日: 02/09/03 17:45
             /;;;;;;;;;i;;;;;;;/;;;;;;;;/;;;/;;///ー-- - |;;;;;|;;;;;;;|l
             |;;;;;;;;;li;;;;;/;,,-/-,,/ |/ / ,-=-,,, .|;;;;;|;;;;;;;;| 1000は取らないでね
            il;;;;;;;;;|;;;;;;il~i (゚,,,i ' '  ' i ) , i |;i--;;;;;;;|
            |;;;;;;;;;;|;;;;||    ̄  ,,    ̄   .|;;|6/;;;;;;;|
            il|;;;;;;;;;|i;;;;;;;;ゝ ~~   I|  ~~  ,/;;;;~;;;;|;;;;;;|i
            |;;;;;;;;;;;|;;;;;;;;;~=,    :'_`ヽ  ./;;;;;;;;|;;;;;|;;;;;|l
           |i|;;;;;;|;;;|i;;;;;;;;;;;;;|~'-,,    ,,,,'.';;;;;;;;;;;;;|;;;;;;|;;;;;;;|i
           ;|;;;;;;;|;;;;|;;;;;;;;;;;;;il;;;;;| ~=--‐~ :;|;;;;;;;;;;;;;;;;;;;/-/~~~~^-,,
           |i;;;;;;;;;;;;;|;;;;;;;;;;;;;i-~|i      ~~~|;;;;;;;;;/        ~-,,
           il;;;;;;;,,=~|;;;;;;;;;;;;;|i ヽ   ,,,ノ ,,/|i;;;;;;;|i          ~-,
           |i,,-~ ,,,ヽ;;;;;;;;;;;;|       -~ |;;;;;;;;|    ,,,,       ~'=,
           ,-~  γ  ヾ;;;;;;;ヾ  ,,. ;:      ヾ;;;;;;|  ,,=~ \     /-,,
          /  ;:丿    |;;;;;;) ...,:;:'       ::|;;;;;|/::::::: ::::::/~-,, /    -,,
          /  /     |;;;;;li γ:;          :;;|=,,,:: :::::/     ~/       ~‐
         / ヽ/ .         :/;:          :ヾ;;:: :::/      ~‐
        /  i;''。;:       :|:;:     ;' 。',   ;| :: :::/
       /   ヾ.,; '      ::;\;:     ',';::   ;:,/::::;;/
      /    :;/ヽ:;:     ;;;ノ;;::ヽ;;::::     ,,::/;;;::;:/          /~⌒~^~^` :;ヽ
    /    ;:/   `ー---‐':::::;   :::ヾ;‐---‐'''''  ::::::;/         /          ::;ヽ


983 名前: SITNAM 投稿日: 02/09/03 17:46
   //";;;;;;;;;;;;;;;;;;;;;;/    //::://::/::/:/;;/:/::i:::i:::i;/  `'、i::'、:;::/::::/::::;;;;;;;;;;;/`'''"
 ./;;;;;;;;;;;;;;;;;;;;;;;;;;/     .//;;:/i;;;/;;/:/.i/i:/|::;;;/:/;i    'i;;';;;ノ;;;;;;;;;;;;;;;;ミ;;/
 '`、;;;;;;;;;;;;;;;;;;;;;;;く      ./i:;;:/:/:;/;;// / i/ i;;;/i/i/_,,,,,,,_  彡/ ̄`''ー、;;;ヽノ
   ヽ;;;;;;;;;;;;;;;;;;;;;;ヽ、_   /:i:;;;;|:i::;/::(/ ̄`''-|://.'/、--,、, ` i;;:/     `';;i'
   ヽ;;;;;;;;;;;;;;;;;;;;;/'.、 /;;i:;;;;;i;;i:;|;;/;;'、、-=、::" ::  .、:'':)'ーノ:/     ::::/´
    \;;;;;;;;;;/.   \/;|;;;;i:;;i:;;|;;'、;'ヽ、:::::  、   ´~''' /;/     ::::/
      ヽ;;;/::.      ヽ|;;;;|:;i:;;;|/;'、'ヽ、   、--,   -/::/      ;;/
       ー、:::...      |::||:;':;;;;|//'、;/;;`:: 、'ー'.,、-'"/;;;/      :::/
        .\:::...     |;| i:;、;;;|-、,,/、/;/ ` ´:::::":i/      ::::/
         .\:::...    ヽ::i:;'、;;|__/:/ /   /:ノ";|i:..    .::::::/
        /::/\:::....   '、;'、:|,ヽ/:.\i:: /‐'::|:,;;|,::.. /´:::: ./
       ,/:://:;;;;\;::::.... ,/、;;;i'/::..." ` '":::::ノ'i,"~i:::../;::::: ../
     ./::/::/:::;;;/:;;;;ヽ;:/;;、-ヽ;i.'、,,,、:‐''''" ̄~` ヽ、-、/;:::.. ./
    /:::/::;/::;;;;/::::、‐''" ̄"´   i,/    .;'.;    .ヽ;i,;::::../
   .//::/:::/::::/;;;::/       _、-/i     " '     :::';|:::../
  /:/:/::::/:::/::ノ         ...::_、           :::i|、/,
. /:::/:;/;;/:;;/:'i.、       、‐-'"-‐'''        .:::i:::i:/"
/:;;/;;/:/;;;;;;/;;/:|:::..     ..:::'":::::::/'/:::....    ....:::::::i:/ノ
;;;/;;;;/:;;;;/;;;/:::i,::::::......  ..:::::::::::::'":::::":::::::::::::::::::::::::::::::ノノ´
;/;;/;;;;;;;;//::::;;;;';、:::::::::::::::::::::::::、-‐""::::::::,,,,,:::::::::::::_、‐ /


984 名前: SITNAM 投稿日: 02/09/03 17:48
    i       ,i:i;;;;i                         ヽ、,,、::_、‐~´            i
    i       i,,i;;;ノ                         _、-~              i
    'i       i/´                       _、‐''、 :|、              i;
     i,                           _,,、-''~ノ:::::ヽ ::i              ,i、
    /、,                       ___、-‐'´ /_:::/:::::::::i ;i、___            i、"ー
   i´ i;;;ヽ、              _、‐:::::,、-"_,、-''~        _、-''"´~ ̄::::::::::::::~^''''ー--、,,,,i
    i |;;;;;i´ヽー、          ,,、‐_、-‐''"_、-~         /´:::::::::::::::::::::::::::::::::::::::::::::::::::::::::i
   i" i::::i.   `ー、_''ー-----‐‐'''~,,,,、-‐''_、-''~           /´::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i
  / /::::::、    ~^'''''''''''ー‐‐---‐;:‐''"~            :,i´::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i
  i i´::::::::、            /"              /´;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_____::::::::::::::::::::::::i
,,i''"i-'::::::::::::ヽ           :/              i/;;;;;;;;;;;_,,,,、-ー'''''''"^~^~~^^''''ー--、,,,,_i'、__
‐´-'-------ヽ          '               :i;、-‐'''~        :::::::::::::::::::::::::::::::::'ー、.


985 名前: SITNAM 投稿日: 02/09/03 17:49
        おにぎりワッショイ!!
     \\  おにぎりワッショイ!! //
 +   + \\ おにぎりワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´∀`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ヽノ  ) ) )
       (_)し' し(_) (_)_)


986 名前: SITNAM 投稿日: 02/09/03 17:50
           今だ!おにぎりゲットォォォォ!!

             ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄    (´´
          /⌒ヽ      ∧ ∧   )      (´⌒(´
         ( ■ )   ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡
                       ̄ ̄   (´⌒(´⌒;;
                   ズザーーーーーッ


987 名前: SITNAM 投稿日: 02/09/03 17:50
             ガポッ!
           /■\   Σ ∧ ∧   )
        Σ( ´∀` )了 ⊂(゚Д゚⊂⌒`つ≡≡


988 名前: SITNAM 投稿日: 02/09/03 17:51
     +   +    +   ワッショイ!
                   +
.     +   /■\   +
        ( ´∀`∩
   +  (( (つ   ノ ))  ∧ ∧ ・・・・
         ヽ ( ノ     (゚Д゚,,)
         (_)し'     ∩    ̄⊇〜
                     ̄ ̄ ̄


989 名前: SITNAM 投稿日: 02/09/03 17:52
      きみもやらない?
.      ∧_∧
      ( ´∀`) /■\
      (    つ ̄ ̄    ∧ ∧ だ、だれがやるかゴルァ!
     .  | ||        (゚Д゚,,)
      (__)__)       ∩    ̄⊇〜
                     ̄ ̄ ̄


990 名前: SITNAM 投稿日: 02/09/03 17:52
      そう。じゃっ
     ∧_∧
    (´∀` )   ポイッ
    (    )   ヽヽヽ    ∧ ∧
     | .| | )))        (゚Д゚,,)
    (__(____)    /■\ ∩    ̄⊇〜
               ̄ ̄    ̄ ̄ ̄


991 名前: SITNAM 投稿日: 02/09/03 17:53
                    ∧ ∧ ・・・
                    (゚Д゚,,)
             /■\  ∩    ̄⊇〜
               ̄ ̄    ̄ ̄ ̄


992 名前: SITNAM 投稿日: 02/09/03 17:54
                    ∧ 三  ∧
                    (゚Д゚ 三 ゚Д゚)
             /■\  ∩     ̄⊇〜
               ̄ ̄    ̄ ̄ ̄


993 名前: SITNAM 投稿日: 02/09/03 17:54
    今だ!おにぎりゲットォォォォ!!

      ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄        (´´
            /■\  )     (´⌒(´
         ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
               ̄ ̄  (´⌒(´⌒;;
           ズザーーーーーッ


994 名前: SITNAM 投稿日: 02/09/03 17:55
 |
 |
 |__∧
 |∀`) ・・・
 |  )
 |  |       !! ./■\  )
 | __)      Σ(゚Д゚⊂⌒`つ
┘             ̄ ̄


995 名前: SITNAM 投稿日: 02/09/03 17:57
ついに995か…


996 名前: SITNAM 投稿日: 02/09/03 17:57
 おにぎりワッショイ!
\_____ _______         /|
  /■\   |/                /  |
 ( ●∀`)                   |   |
 (づ   ,)                   |   |
 | |  |                ∧_∧  |    |
 (__)_)             (´∀` )/|  /
                   (    つ |/|
                    |  |  |     |
                  /|  (__)_)    |
       / ̄ ̄ ̄ ̄ ̄  ̄
        | バカか貴様


997 名前: SITNAM 投稿日: 02/09/03 17:58
                                / ̄ ̄ ̄ ̄ ̄ ̄
                    /■\       < ワッショイ
               ___(´∀`  )_____   \______
           .__/___     _____, )__
         〃  .//    /    /     / /    〃⌒i
         |  ./ /     /    ./     / /    .i::::::::::i
   ____|  .しU /⌒\./    /     / | ____|;;;;;;;;;;;i
  [__]___|    / /-、 .\_.  /     Uし'[_]     .|
   | ||     |    / /i  i    /         | ||      |
   | ||____|____/ / .| .|\_ノ______..| ||      |
   |(_____ノ /_| |_________..| ||      |
   | LLLLLL./ __)L_| |LLLLLLLLLLLLLLLL. | ||_____」
   | ||    (_/   / i                .| ||    | ||
   |_||        / .ノ               |_||    |_||
            (_/


998 名前: SITNAM 投稿日: 02/09/03 17:59
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          |おにぎりワッショイ!
          \
             ̄|/ ̄ ̄ ̄ ̄
          ___                     |  \ \
    /    / ))))                     |
   /    /_⊂ノ                 | ヽヽ .|\
  /    //              i 、、. | ヽヽ .|\   |  \
 / /  \\  /■\  ド ド |ヽ   |\  |    |
/ /     \\(  ´∀`)
/ /     ヽ      ⌒\
/       ノ      /> >
        /     / 6三ノ
       /  / \ \ ` ̄
―    /  ん、  \ \
――  (__ (   >  )
⌒ヽ   ’ ・`し'  / /
  人, ’ ’,  ( ̄ /
Y⌒ヽ)⌒ヽ、  )  |
          \_つ


999 名前: デフォルトの名無しさん 投稿日: 02/09/03 17:59
1000


1000 名前: デフォルトの名無しさん 投稿日: 02/09/03 17:59
1000


1001 名前: 1001 投稿日: Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。



2ちゃんねるは、ここのサーバを使ってるです。。。