DLLでダイアログを表示させるとコントロールがおかしい

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
のぶあや
記事: 22
登録日時: 2006年10月14日(土) 10:52
お住まい: 愛知

DLLでダイアログを表示させるとコントロールがおかしい

#1 投稿記事 by のぶあや »

初めまして、のぶあやと申します。

RADでダイアログウィンドウを作り、表示させる関数をDLLに入れて、
プログラムからDLLをロード、関数を実行するとダイアログは表示できるのですが、
ダイアログに貼り付けたコントロールのフォントのサイズが大きくなってしまいます。

DLL側 プログラム側 タグが上手くいってればいいのですが・・・

それぞれコンパイルして、実行するとフォントのサイズが変わってしまいます。
DLLの明示的読み込み以外は変なことをしていないのでバグだと思い、投稿しました。
なお、暗黙的読み込みにしても同様の現象が発生しました。

ちなみに環境は
AB4.21、AB4.24、AB5CP3+XP Pro
AB4.24+XP Home
です。

できればAB4もこれの修正版を公開してほしいのですが、
すでにAB5がリリースされているので無理でしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

プログラム側のCallback.wbpを見てもらえれば解ると思うのですが、
hFont_MainWnd=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック")
等とフォントを作っています。

ダイアログウィンドウを作るときも通常これが参照されるのでフォントについてうまく行くのですが、DLL側から作る場合うまく参照されないのではないでしょうか?
Callback.wbpにDialogBox関数が定義されていると思うので、眺めてみてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
のぶあや
記事: 22
登録日時: 2006年10月14日(土) 10:52
お住まい: 愛知

#3 投稿記事 by のぶあや »

確認したところ、DLLのCallback.wbpには とありました。

フォントの作成は

コード: 全て選択

Dim hFont_Modal As HFONT
hFont_Modal=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック")
とプログラム側と同じになっているので正常に作られていると思います。

フォントの参照ですが、DialogBox関数内で

コード: 全て選択

SendMessage(hModal,WM_INITDIALOG,0,0)
とWM_INITDIALOGが送られ、EventCall_Modal関数内で

コード: 全て選択

Case WM_INITDIALOG
	hModal=hWnd
	CreateWindowEx(&H00000000,"STATIC","Text1",&H50000000,151,142,50,12,hWnd,Static1 As HMENU,GetModuleHandle(0),0)
	SendMessage(GetDlgItem(hWnd,Static1),WM_SETFONT,hFont_Modal As WPARAM,0)
となっているので、WM_SETFONTでフォントが参照されていると思うのですが・・・。

ちなみにプログラム側ではMainWndしかないのでDialogBox関数を覗いても
変数(hDlg As HWND)が1個定義されているだけでした。

またCallback.wbpの元となる*.wndファイルには

コード: 全て選択

FONT      = -12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック"
となっていました。(プログラム側、DLL側の両方とも)
返信する