■ VisualC++(MFC限定)相談室 MFC10.dll■
>>915 再描画時に背景消去をさせないにはどうすればいいですか?
>>916 OnEraseBkgnd をオーバーライドしる!
>>916 InvalidateRect(NULL,FALSE);
2番目の引数をFALSEで背景消去抑制
>>911 フォントサイズをとる方法なら
MSFlexGrid.GetCellFontSize
で各セルのフォントのサイズが取れる
viewからMainFrameのポインタを取得するにはどうすればいいですか?
921 :
デフォルトの名無しさん :04/06/19 17:31
923 :
デフォルトの名無しさん :04/06/19 18:59
SDIにスクロールバーをつけたいのですが最初のAppWizardとかで設定しておかないとだめですか?
そんなことないよ〜
>>923 あ、簡単なペイントソフト作ってる人じゃないか?
>>923 新規プロジェクトでCScrollViewにして作成して
今のCViewプロジェクトと変化している部分を変えたり追加するのが
一番簡単
気をつけるのは、基底クラスを呼び出している部分とか
メッセージマップの基底クラス部分とかね
C++.net使用しています。 質問なんですが for(int i=0; ... みたいにiを定義すると標準C++ではfor文のブロック内のみが スコープになると思うのですが、.netだと外側からも見えるようです。 これを標準C++仕様にするにはどうしたらいいのでしょうか?
forの外にも定義しておく
929 :
デフォルトの名無しさん :04/06/19 23:11
>>927 #define for if(false) else for
>>927 そうそうfor文のスコープはなにかがおかしい。オレもこれではまったことがある。
for( int i=0; ...) {statementA}
for( int i=0; ...) {statementB}
ってやると、statementBにAのiが影響していた。詳しく調べなかったのでこれ以上のことは判らない。
>>930 詳しく調べてくれ、気になる・・・
後のfor文のi=0の初期化は無視か?
932 :
デフォルトの名無しさん :04/06/19 23:28
/Zc
{ for(int i=0;...){ } } コンパイルオプションでも直せるらしいけど、 それはそれで不都合があるらしいので、 こうするといいよ。
934 :
デフォルトの名無しさん :04/06/20 00:04
MFC でwebブラウザつくりたいのですが わかりやすく載ってるサイトとかないですか?
おかしいと思ったら、曖昧な記述じゃなくて、 はっきりコーディングレベルで明快に書けばいいのに。。。 なんで、そんなに書き方にこだわるんだろう。
936 :
デフォルトの名無しさん :04/06/20 00:08
>>935 んだな
組み込み用のクロスとかローカルルール満載の処理系はよくある
割り切らねーと仕事にならん
int i=1; for(int i=0;;){break;} std::cout << i; // iは0 二重定義でエラーにはならないけど 同一のiを意味するという・・・なんとも不可思議だ
>>934 マジレスすると、ウィザードで基本のビュークラスを
CHtmlViewにしてスケルトンを作ったら、
すぐにビルドして実行しろ。
それでブラウザは完成だ。
939 :
デフォルトの名無しさん :04/06/20 00:26
>>939 じゃ、ダイアログバーにコンボボックスあたりつければOK
941 :
デフォルトの名無しさん :04/06/20 20:09
あらかじめ用意されているDLLを、 自分のプロジェクトで参照して、DLLの関数を使用したいのですが、 どうしたらよいでしょうか? プロジェクト設定のリンクにDLL名を入れたのですが、 ファイルが無効か壊れているってメッセージがでてしまうので、 やり方が間違っているようなのですが、 どうやって参照させたらよいでしょうか?
942 :
デフォルトの名無しさん :04/06/20 20:16
>>941 DLLの使い方は、起動時に自動的にロードして使うやり方と自分でロードして使うやり方がある。
起動時にロードするためには、DLLと一緒に配布されているlibファイル
を実行ファイルにリンクしないといけない
もしDLLにlibファイルがついていないならば、自分でロードして使えということだろう
その方法についてはLoadLibraryというAPIを調べてみればよい
944 :
デフォルトの名無しさん :04/06/21 01:57
> プロジェクト設定のリンクにDLL名
・・・LIB名(拡張子=.lib)
持ってない場合
A.
>>943 の方法
B.DLLの提供元にねだる
C.DLLの作り損ない
SP6にしてからリソースエディタでダイアログのサイズをドラッグして変更 しようとしても、輪郭のところをマウスで掴めなくなってしまったのですが どうしたらマウスで掴めるようになるでしょうか。 ShiftKey+矢印Keyで一応サイズ変更はできるのですが、いったい何が どうなっているのか・・・
946 :
デフォルトの名無しさん :04/06/21 23:29
ダイアログフォームを最大化した時に、 ListBoxやTabコントロールも一緒にリサイズさせたいのですが、 GetClientRectでフォームのサイズをとったあと、 どうやって設定させたらよいでしょうか? SetClientRectってないし・・・
movewindow
948 :
デフォルトの名無しさん :04/06/21 23:48
>>947 OnSizeでは、CX,CYしか取れないのですが、
MoveWindowを使うときにはX,Yも必要らしいのですが、
X,Yはどうやってとったら良いでしょうか?
自分で計算しろ
>>946 まともなリサイズ処理ははそれなりに複雑だよ
codeguruとかcodeprojectで、resizable dialogの
言葉に引っかかりそうなソースを読んでみたら?
GetWindowRect、GetClientRect、ScreenToClient この辺の意味をちゃんと理解しておれば、リサイズなんて怖くねーべ。
私ゃCodeGuruで見つけたResizerってのをベースに使ってるよ。
WTLだと一発なのにね
>>951 単純な拡大縮小ならそれほどでもないけど
コントロール同士の関係を含めてのリサイズの場合結構複雑になるよ
946がどこまで求めているかは知らないけれど
955 :
デフォルトの名無しさん :04/06/22 16:03
CListを入れ子にして使ったら c:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxtempl.h(1159): error C2582: 'operator '=' 関数を 'MDB' で使用できません。 と言われました CListから生成したオブジェクトの中でCListを使うことはできないのでしょうか? 以下のような感じでソースをかいてみました
typedef struct Seqnoinfo{ int Seqno; int Rcvsize; int Type; }Seqnoinfo; typedef struct MDB{ int No; int Done; CList<Seqnoinfo> Silist; int Mtopaddr; int Msize; int Rcvsize; }MDB;
class CMemBuf { public: CMemBuf(void); ~CMemBuf(void); int Send(void); int Run(int startaddr); int Add(CCmdBuf&CmdBuf); int Getcmdlen(DWORD cmd); char* Getcmdname(DWORD cmd); void Clear(void); void Reset(void); DWORD* TmpBuf; DWORD* SendBuf; int BufN; int Maddr; int Up; CList<MDB,MDB&> MDBlist; };
何かアドバイスなどありましたらご教授お願いします
MDB構造体に operator=を定義して CList間の=を明確化してあげればいい
ありがとうございます。 うまく出来ました
961 :
デフォルトの名無しさん :04/06/22 21:41
>>950-954 どもです。
コントロールを含めてのリサイズだったので、結構参りましたが、
なんとかなりました。
情報ありがとうございます。
すみません、VC++.Net2003でソリューションのmakefileをエクスポートしたいんですがどうすればよいですか?
964 :
デフォルトの名無しさん :
04/06/23 22:57 CStringの文字を数値に変換するのにatoiを使ってるのですが、 これの例外って、どうやって取ったらよいでしょうか?