■ 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は糞ライブラリの代名詞
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でパラメータを入れないと受け付けないし、
といった具合でうまくいかないのです。
958 :
デフォルトの名無しさん:03/06/23 17:10
>>957 問題はCMainFrameで使いたいことにあるのです。
960 :
デフォルトの名無しさん:03/06/23 19:48
961 :
デフォルトの名無しさん:03/06/23 22:45
VisualStudioの『プロジェクト』の『設定』の『リンク』に関するオプションは,
プログラム中に以下のように記すことが出来ますが,
#pragma comment(linker, 〜
『プロジェクト』の『設定』の『C/C++』に関するオプションは,
同じように,#pragma 〜 で記述することは出来ないでしょうか?
よろしくお願いします.
出来ないです。
スレ違いでもあるが。
>>962 残念です.
微妙にスレ違いかと思いましたが,多分,このスレの人の方が関係あるかと・・・
どうも有り難うございました.
964 :
デフォルトの名無しさん:03/06/24 18:21
>>964 そのページにある「超M」ってソフトにソース付いてるヨ(MFC)
原理はどれかのヘルプで説明してるでしょ
片っ端からダウンロードして読みな!
>>965 ありがとうございます。
ソース付のもあったんですね……。
大量にメモリを確保して、スワップを起こさせてるのか。
API スレのほうで聞くべき質問でした、すいません。
スレ違いだったら申し訳ないんですが、vc6でcファイルやcppファイルの関連付け
のパラメータ設定ってどうなってますか?
他の開発ツールが勝手に関連づけ変えちゃったのでエクスプローラーから
"C:\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" "%1"
って感じに修正したら・・・
必ず新しいMSDEVを起動してソースを開くようになっちゃいました( ´Д⊂ヽ
※以前は最後にアクティブにしたmsdevウインドウで開いてくれたのですが
>>967 DDEなんで説明がメンドー。だし、やっぱりスレ違い。
>>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
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逝ってよし!");
}
買えるかなあ?
>977
OnEraseBkgnd じゃだめなの?
AВГД・EЁ
985 :
デフォルトの名無しさん:03/06/25 23:34
買え!
次スレまだ〜?
>>985 ウィザードの吐くコードなんかたかが知れてるだろ。
あの程度把握できなきゃMFCの内部なんか到底無理。
「MFCによるWindowsプログラミング」を薦めたいところだが売ってないみたいだしな
991 :
デフォルトの名無しさん:03/06/26 08:48