■ VisualC++(MFC限定)相談室 MFC7.dll■

このエントリーをはてなブックマークに追加
「ダイアログ単位」って香具師が絡んでるんでしょ?
スタティックコントロールを表みたいに並べた時に微妙に行間、列間が
合わなかったりするからね(´Д`;)
なんなんだろ、この仕様。
フォントサイズが環境依存だからじゃないの?
ダイアログ単位についてはMSDNの GetDialogBaseUnits() 参照。

DWORD base = ::GetDialogBaseUnits();
int pixelX = MulDiv( 1, LOWORD(base), 4 );
int pixelY = MulDiv( 1, HIWORD(base), 8 );

を実行すると、pixelX = pixelY = 2 となり、1ダイアログテンプレート単位が
2ピクセルに相当することがわかる。

すなわち2ピクセルの精度でしかコントロールを配置できない、ということになる...?
 RECT wrTarget, crTarget;
 ::GetWindowRect(hWnd, &wrTarget);
 ::GetWindowRect(hWnd, &crTarget);

#define DUX (LOWORD(GetDialogBaseUnits()))
#define DUY (HIWORD(GetDialogBaseUnits()))
#define DSX(x) ((x) * 4) / (DUX)
#define DSY(y) ((y) * 8) / (DUY)


 CString kekka;
 kekka.Format( "ピクセル座標\r\n"
        "ウインドサイズ :(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "クライアントサイズ:(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "ダイアログ座標\r\n"
        "ウインドサイズ :(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "クライアントサイズ:(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        , wrTarget.left, wrTarget.top, wrTarget.right, wrTarget.bottom, wrTarget.right - wrTarget.left, wrTarget.bottom - wrTarget.top
        , crTarget.left, crTarget.top, crTarget.right, crTarget.bottom, crTarget.right - crTarget.left, crTarget.bottom - crTarget.top
        , DSX(wrTarget.left), DSY(wrTarget.top), DSX(wrTarget.right), DSY(wrTarget.bottom), DSX(wrTarget.right - wrTarget.left), DSY(wrTarget.bottom - wrTarget.top)
        , DSX(crTarget.left), DSY(crTarget.top), DSX(crTarget.right), DSY(crTarget.bottom), DSX(crTarget.right - crTarget.left), DSY(crTarget.bottom - crTarget.top)
        );
でためしますた。ダイアログエディタの表示とは異なる結果が・・
ちなみにたて横15ピクセルの窓ですが7*6という結果になってしまいました。

>>947
MapDialogRect()使ってね♥
949デフォルトの名無しさん:03/06/22 16:27
CMainFrameで子ウィンドウを新規に作成するには
::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
って教えてもらったんですけど、
メッセージボックスのエラーがでます。
新規作成の関数を消してMFCに依存すると上手く実行できるのですが。
MFCは糞ライブラリの代名詞
>>949
エラーメッセージを読んで見ましょう。
952デフォルトの名無しさん:03/06/22 17:00
>>951
例外unknown software exception(0xc00000fd)がアプリケーションの0x5f466cbcで発生しました。
どなたかワトソン先生の詳しい使い方を書いたサイトを教えてください。
>>949
>新規作成の関数を消してMFCに依存すると上手く実行できるのですが。
あたりまえだと思う。
>>952
何がしたいのかさっぱりわからんが
DocTemplate辺りを読んで見れ。
956デフォルトの名無しさん:03/06/22 21:56
>>955
そうなんです。DocTemplateを使いたいのですが、
OpenDocumentFileでパラメータを入れないと受け付けないし、
といった具合でうまくいかないのです。
>>956
もっとちゃんと嫁。
958デフォルトの名無しさん:03/06/23 17:10
>>957
問題はCMainFrameで使いたいことにあるのです。
>>958
そんなことは全然問題じゃない
960デフォルトの名無しさん:03/06/23 19:48
>>959
どうすりゃいいんすか?
961デフォルトの名無しさん:03/06/23 22:45
VisualStudioの『プロジェクト』の『設定』の『リンク』に関するオプションは,
プログラム中に以下のように記すことが出来ますが,
#pragma comment(linker, 〜

『プロジェクト』の『設定』の『C/C++』に関するオプションは,
同じように,#pragma 〜 で記述することは出来ないでしょうか?

よろしくお願いします.
出来ないです。

スレ違いでもあるが。
>>962
残念です.
微妙にスレ違いかと思いましたが,多分,このスレの人の方が関係あるかと・・・

どうも有り難うございました.
964デフォルトの名無しさん:03/06/24 18:21
↓に置いてあるようなメモリー最適化とか解放ツールって内部でどんなことやってるんでしょうか?
ttp://www.vector.co.jp/vpack/filearea/win95/hardware/mem/by_trend.html
>>964
そのページにある「超M」ってソフトにソース付いてるヨ(MFC)

原理はどれかのヘルプで説明してるでしょ
片っ端からダウンロードして読みな!
966964:03/06/24 18:45
>>965
ありがとうございます。
ソース付のもあったんですね……。

大量にメモリを確保して、スワップを起こさせてるのか。

API スレのほうで聞くべき質問でした、すいません。
スレ違いだったら申し訳ないんですが、vc6でcファイルやcppファイルの関連付け
のパラメータ設定ってどうなってますか? 

他の開発ツールが勝手に関連づけ変えちゃったのでエクスプローラーから

"C:\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" "%1"

って感じに修正したら・・・
必ず新しいMSDEVを起動してソースを開くようになっちゃいました( ´Д⊂ヽ
※以前は最後にアクティブにしたmsdevウインドウで開いてくれたのですが

>>967

DDEなんで説明がメンドー。だし、やっぱりスレ違い。
969967:03/06/24 19:54
>>968
DDEメッセージに[open("%1")]て入れたら行けマスタ。スレ汚しスマソ(´・ω・`)
970デフォルトの名無しさん:03/06/25 00:19
CFormViewの中身の大きさを、作成時にプログラムからで設定するにはどうすたらいいんですか
GetDlgItem( )->SetWindowPos
違うな。SetScrollSizesだ。
973デフォルトの名無しさん:03/06/25 02:06
MFCって理解しにくいよ。
そこでお願いなんだけど、良い参考書、お勧めの参考書を教えて欲しいんだ。
出来ればAppWizを使わないで解説してくれるようなのがいいな。
>>973
AppWiz使うとどういう不都合がありますか?
975デフォルトの名無しさん:03/06/25 18:53
>>957
ホント、どうすればいいんですか?
976デフォルトの名無しさん:03/06/25 18:55
ダイアログウィンドウをリサイズさせたいんですが、イベントはどのように受け取ればいいでしょうか?
ご存じのかたがおられましたら教えてください。
977デフォルトの名無しさん:03/06/25 19:14
CListCtrl で Itemの無い領域(最大列(行)数より右(下)) も
OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) で
描画させる方法はありますか?
>>973
とりあえず4000円未満の本は無視。
10000万円前後で探せばあるかも。
あと洋書、もしくは原著が外人。
>>975
try{
  ::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
}
catch(...){
  MessageBox("MFC逝ってよし!");
}
>>978
どっかの国買えそう。
買えるかなあ?
>>976
イベントを取るって?
>977
OnEraseBkgnd じゃだめなの?
AВГД・EЁ
985デフォルトの名無しさん:03/06/25 23:34
>>974
MFCとしての構造が理解しにくい

>>978
1万円か〜
と思ったら一億!!
ムリっす
買え!
次スレまだ〜?
>>985
ウィザードの吐くコードなんかたかが知れてるだろ。
あの程度把握できなきゃMFCの内部なんか到底無理。
「MFCによるWindowsプログラミング」を薦めたいところだが売ってないみたいだしな
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/tech/kako/1039/10396/1039607377.html
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/tech/kako/1028/10285/1028553308.html
■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/tech/kako/1021/10216/1021620974.html
■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/tech/kako/1014/10140/1014057520.html
■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/tech/kako/1008/10080/1008031675.html
■ VisualC++(MFC限定)相談室 ■
http://pc.2ch.net/tech/kako/989/989902845.html


ごめん、スレ立てれなかった。誰か頼む〜
991デフォルトの名無しさん:03/06/26 08:48
>>991

ありがとうー