つーか、
>>939で解決、、、元質問者の勘違いでFAなのでは
947 :
936:2007/07/13(金) 16:15:39
CEdit::LineLengthがMBCSならばバイト数が返り、UNICODEなら文字数が返るのが普通なのは分かったんですが、
それでもなぜうちだとMBCSにも関わらず文字数が返るのかが分からなかったんです。
いろいろ調べたら、どうやらXPスタイルに問題があるようでした。
XPのSP2(もしかしたら他も)でビジュアルスタイルを適用していると、エディットボックスの挙動が変わるらしいです。
ビジュアルスタイルを外してテストしたらちゃんとバイト数が返ってきました。
でも古臭いのはイヤなので、改行コードやらなにやら自分で取得して一行単位の処理したいと思います。
一日中悩みました。
948 :
936:2007/07/13(金) 16:20:41
>>945 ソースまで見てくれてありがとうございました。
僕も見ましたが随分簡単なソースだったんですね。
Editコントロールは行単位で読み書きすると時間かかるから
読みたい行数が多い時はGetLine使わない方がいい
だからGetLine使わずに行処理する方法も考えることになる
だけどGetLineは行の正確なバイト数は知らなくてもいいだろ
バッファは大目に用意しとけばいいし
エディットコントロールの最大を超えることはないし
その発想はないわw
すいませんが質問です
CDialogBar内のコンボボックスでリターンキーを押下したときに
イベントを発生させたいのですが、
どうやってCDialogBar内のコンボボックスのリターンキー押下の
メッセージ拾えばいいですか?
>>952は自決しました
PreTranslateMessageでできました
スレ汚しスマソ
スレが血塗れに!
侍だな
今までMFCでダイアログベースのプログラムしか組んだことがありません
この度MDIのプログラムを作りたいのですが、SDIやMDIの場合リソースファイルを
自分で書かないといけないものなのですか?
ダイアログベースの場合はツールボックスからD&Dして作っていて簡単だったんですが
不便ですよね
MDIで何を作りたいの?
FormViewとか知らんの?
お恥ずかしい限りです、会社ではシリアル関係の実装ばかりやっていて
およそSDIやMDIは知らなくても出来たのでFormViewとか全くの無知です
やりたい事はMDIベースのダイアログからボタンを押したら
グラフのダイアログ(ビューかな?)やテキスト入力の出来るダイアログを出すことです
掲示板で聞かないとわからないようなことじゃないし
普通に勉強すればいいよ
>>959 サンクス
>>958の書込み読んでFormViewを検索して、SDIでもMDIでも新しいプロジェクトの作成から
基底クラスを良く考えて選べば出来そうですね余りにも同じようなプログラムばかり
組んだり改造しているんで世間知らずでしたww、よってこの質問は取り下げます
しね
もうくるな
そんな初心者追っ払うほどの話かなぁ・・・
MDIの話でもドキュメントテンプレートの理解までもってってくれる
入門書はみたことないしドキュメントテンプレート理解できないと結構ハマルと思うんだ、俺。
MDIってアプリの余白部分が無駄食ってしょうがないと思ってるの漏れだけ?
SDIやダイアログonlyのアプリで複数インスタンス立ち上げ可能な創りの方が合理的だろ
何で自分だけと思うんだろう・・・
このスレまだあったのかw
俺はとっくの昔にMFCなんてクズライブラリは見限って
C#とオブジェクト指向で楽チンなプログラミングライフを
送っているというのにお前らときたら大変だなw
同情を禁じ得ない。
いや、昔からの人は今はほとんど同じようなもんじゃない?
このスレにいるのは回答側にまわってるだけさ。
967 :
デフォルトの名無しさん:2007/07/24(火) 00:40:15
独自のDDVとDDXを定義するにはどうしたらよいのでしょうか?
CEditとかはWizardだとCStringとかにしか定義できません。
参考ページとかでもよいので教えてください。
968 :
デフォルトの名無しさん:2007/07/24(火) 01:00:20
すいませんほかにも
UpdateDataではすべてが更新されてしまいますが
コントロールを指定して一つ一つValidateするにはどうしたらよいでしょうか?
Failを呼び出すとメッセージボックスが出てきてしまいますが
これを独自のエラー表示とするにはどうしたらよいでしょうか?
(たとえばToolTipとかLavelに表示)
UpdateDataのソース読んだらわかりそうなものだけど、MSDNの解説読んだ?
>DDX_ プロシージャと DDV_ プロシージャの書き方、
>ClassWizard を拡張して独自のルーチンを使う方法についても説明します。
970 :
デフォルトの名無しさん:2007/07/26(木) 03:19:30
MFCってもう終わりなの?
VC6.0使いつづけて6年・・・
統合環境の中では軽い方だし最高なのに
MFCはともかく、VC6.0は終わりでいいと思う。
秀丸作者がVC5使ってるんじゃなかったっけ?
おれも
VC2002がすげー糞だったから、VC6.0を使い続けている人が多そうだな
俺的にはVC2005が割と良かったからそろそろバージョンアップしてもいいと思うが
2005 Expressと.NET Frameworkでいい気がしてきた
.NET使うならC#でいいだろ
どう考えても
VS2005MFCでダイアログベースのプログアムです、メインのダイアログのボタンを押すと、
別のダイアログが現れますそのダイアログにはリストボックス、OKボタン、キャンセルボタンが張り付けてあります、
そのリストボックスに、継承関係の無い別クラスから、ファイルを読み出しながら
SendMessage関数でデータを送出してリストボックスに表示させたいのですが可能でしょうか?
日本語でおk
非同期で処理するなら、別スレッドでファイルを読みつつ、
ダイアログ側はタイマーで随時その内容を取り込むって感じだな。
>>978サンクスです
非同期で行うとデータの取りこぼしとか起きないでしょうか?
SendMessage関数のならデータを投げて戻り値も見てるから大丈夫なのかな?
何がわからなくて質問してるかわっぱりわからん
たまたま思いついた方法が可能かどうかということ?
漠然と思いついたこと書かれてもイメージつかめない
MFCでSendMessage使うことなんかある?
apiを直に呼ぶ場合は別ね
>>980 すみません曖昧で、データを投げるダイアログのハンドルの取得方法が
分かんなくて困っています、あとその上に貼っているリストボックスのハンドルの
取得方法も教えていただけないでしょうか、宜しくお願いします
>>981 MFCではSendMessageは使わないものなの、となると
MFCでは一般的にはどんな風に行うのでしょうか?
>>982 >データを投げるダイアログのハンドルの取得方法
メインダイアログに問い合わせる
(全く他所からなら AfxGetMainWnd()->SendMessage()とかで )
>その上に貼っているリストボックスのハンドルの取得方法
リストボックス貼っているダイアログに、これまたSendMessageで問い合わせる
32bit vistaのVS2005 stdで組んでいます。
OnNewDocument()でメッセージを表示したいのですが、コンパイル時に定義がない旨の
エラーが出てます。何が悪いのでしょうか。
該当部分は、こんなコードです。
CHogeDoc::OnNewDocument(){
if (中略
AfxMessageBox("ここでファイルを読み込みます"); //定義がどうこう言われてエラーが出る。
return TRUE;
}
表示されるエラーです。
hogedoc.cpp(42): error C2665: 'AfxMessageBox' : 2 オーバーロードのどれも、すべての引数の型を変換できませんでした
afxwin.h(5031): 'int AfxMessageBox(LPCTSTR,UINT,UINT)' の可能性があります。
afxwin.h(5033):または 'int AfxMessageBox(UINT,UINT,UINT)'
ちなみに、AfxMessageBox("ここでファイルを読み込みます",MB_OK)もダメでした。
TEXTマクロかL使えば?
>983
普通はCDialogとCListBox 使うと思う
そういう話ではない
CBitmapについての質問です。
VC2005、WinXPProを使用しています。
BITMAP stBitmap;
::ZeroMemory(&stBitmap, sizeof(stBitmap));
stBitmap.bmBits = pBuf; //ビットマップデータ(これはあってることを確認してます。)
stBitmap.bmBitsPixel = 24;
stBitmap.bmPlanes = 24;
stBitmap.bmWidth = nWidth;
stBitmap.bmHeight = nHeight;
CBitmap* pBitmap = new CBitmap();
VERIFY(pBitmap->CreateBitmapIndirect(&stBitmap));
return pBitmap;
ってな感じの関数を作って動かしているのですが、VERIFYのところで、とまってしまいます。
つまり、CreateBitmapIndirectが失敗しているらしいのです。
どうして、失敗しているのか確認する手段はないでしょうか?
よろしくお願いします。
991 :
986:2007/07/31(火) 06:09:36
あれっ?
麻雀格闘倶楽部のスレじゃないの?
plane=24はすげーな。
16色の時はbppが1でplaneが4のやつがあったなあ・・・
今更だがCControlBar派生のカスタムコントロールバーができたヽ(´∀`)ノ
なんでも入るしマウスでサイズ変更も自在うひょ
.・・・やっぱ.NETのが楽だな、重いけど(゚д゚)