クライアント領域にダイアログが・・・、 – プログラミング – Home

クライアント領域にダイアログが・・・、
 
通知
すべてクリア

[解決済] クライアント領域にダイアログが・・・、

固定ページ 1 / 2

秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

えと、はじめまして秋桜というものです。今現在VC++.netを使用しSDKベースで開発を
しているのですが、クライアント領域にダイアログが貼り付けたみたいになる現象に
非常に悩まされております。なぜこのようなことがおこるのかご助言いただけると
とても助かります。

ちなみにダイアログを表示するのに関係していると思われるソースの一部分を貼り
付けておきます。

int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs,
int nWinMode){

・・・

hInst = hThisInst;

...

}

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg,WPARAM wP, LPARAM lP){

...

switch(msg) {
case WM_COMMAND:
switch(LOWORD(wP)){
case ID_CONECT:
DialogBox(hInst,IDD_CONECT,hwnd,(DLGPROC)ServerConectProc);
break;

...

といった感じです。よろしくお願いいたします。


引用未解決
トピックタグ
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

ダイアログの位置って事なのでしょうか?
だとしたらリソースで指定するか、ダイアログ関数のWM_INITDIALOGでMoveWindow()
すればOKかと。
一応ダイアログのリソース部分も表示した方がアドバイスしやすいと思います。
ダイアログのスタイルとかわかりませんし。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

スタイルにWS_POPUPがないのでは?


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

えっと、お返事ありがとうございます。私の説明が足らずどのような現象なのか
よくわかってもらえてないようなので詳しくさらに詳しく説明したいと思います。

えっと、アプリケーションのクライアント領域にダイアログの内容をベターって
貼り付けたみたいになっているんです。きちんとダイアログの機能は果たしますし
必要な内容があるのですが、的確に表現するなら「別窓で開いてくれない」という
表現が一番しっくり来るのかもしれません。ダイアログは普通別窓で開くと思って
いたのですが・・・、どこにどのような値を与えればあのようになるのか、とても
謎です・・・、

SunPac様
>ダイアログのリソース部分も表示した方がアドバイスしやすいと思います。

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_getHTML DIALOGEX 0, 0, 327, 83
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION Dialog
FONT 8, MS Shell Dlg, 400, 0, 0x1
BEGIN
DEFPUSHBUTTON OK,IDOK,103,51,50,14
PUSHBUTTON キャンセル,IDCANCEL,173,51,50,14
EDITTEXT IDC_EDIT_URL,47,25,254,16,ES_AUTOHSCROLL
LTEXT URL,IDC_STATIC,25,28,20,13
END

#endif // 日本語 resources
/////////////////////////////////////////////////////////////////////////////

この部分でいいのでしょうか?間違っていたら指摘のほどよろしくお願いいたします。

dairygoods様
>スタイルにWS_POPUPがないのでは?

えっと、勉強が足らなくて申し訳ないのですがスタイルとは何なのでしょうか?
よくわからないのでなんとも返事ができずもうしけございません。


返信引用
鷲尾不徳
 鷲尾不徳
(@鷲尾不徳)
ゲスト
結合: 21年前
投稿: 21
 

ちゃんとWS_POPUPはついていますよ、ご安心を。

> STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
                             ~~~~~~~~

この設定で
> DialogBox(hInst,IDD_CONECT,hwnd,(DLGPROC)ServerConectProc);
なら普通にモーダルダイアログが出ます。

 貼り付けたみたい…
 ん~、もしかして親ウィンドウがクリックしても反応しないことを言っていますか?
それであっているなら DialogBox() を CreateDialog() に変えればいいです。
 関数の引数は変えなくていいですが、ダイアログの Visible のプロパティを TRUE を
設定する必要があります。

>的確に表現するなら「別窓で開いてくれない」という表現が
 子ウィンドウの設定もないし、そもそもこのダイアログの作り方ではそうはならないは
ず…う~ん???


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> DialogBox(hInst,IDD_CONECT,hwnd,(DLGPROC)ServerConectProc);

ここでは、IDD_CONECT、

> IDD_getHTML DIALOGEX 0, 0, 327, 83

ここでは、IDD_getHTML
と、リソースIDが異なりますが、
写し間違いなのか、
違うものを見ているのか、
そういう風にマクロが定義してあるのか、
どうなんでしょう?


返信引用
鷲尾不徳
 鷲尾不徳
(@鷲尾不徳)
ゲスト
結合: 21年前
投稿: 21
 

>> DialogBox(hInst,IDD_CONECT,hwnd,(DLGPROC)ServerConectProc);
>
>ここでは、IDD_CONECT、
>
>> IDD_getHTML DIALOGEX 0, 0, 327, 83
>
>ここでは、IDD_getHTML
>と、リソースIDが異なりますが、

うわ、そっちのほう気にしてなかった
マクロが定義してあってもIDが割り付けてないとダイアログは出ないし、
貼り付けた…、別窓で…、うーむ、
他にダイアログが定義してあるとか、ってのはないですよね?>秋桜さん

# 自宅で見たら上の書き込みも位置がずれてるし
# もう少し落ち着かないと。。。


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

あう><、申し訳ありません・・・、貼り付けるそれを間違ったみたいです・・・、
改めてリソースを張りなおさせていただきます。(大して変わりませんが・・・、)

//
// Dialog
//

IDD_CONECT DIALOGEX 0, 0, 174, 82
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION Dialog
FONT 8, MS Shell Dlg, 400, 0, 0x1
BEGIN
DEFPUSHBUTTON OK,IDOK,29,53,50,14
PUSHBUTTON キャンセル,IDCANCEL,94,52,50,14
EDITTEXT IDC_EDIT1,38,25,124,16,ES_AUTOHSCROLL
LTEXT 接続先,IDC_STATIC,10,28,26,9
END

それと文字でも説明ではいまいち現象が説明しきれないようなのでここは百聞は一見に
しかず、ということで画像をアップいたしました。よろしかったら見てやってくださ
い。

ダイアログを作成する前

ダイアログを作成した後

何度も何度もお手数をおかけします。よろしくお願いいたします。


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

うわ~、間違いました・・・、

ダイアログを作成する前

ダイアログを作成した後

で、よろしくお願いいたします。


返信引用
n
 n
(@n)
ゲスト
結合: 21年前
投稿: 90
 

どのリンク先も開けないですー。


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> どのリンク先も開けないですー。

DDNSのようなので……
対象マシンが起動していないかDDNSへのIP更新がされていないか……
と思われます。

# パケットフィルタされていたりして?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ServerConectProc関数の方は問題ないでしょうか?

[DialogProc]
http://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_dialogproc.asp

解説にあるような一連の注意事項に従っていますか?


返信引用
鷲尾不徳
 鷲尾不徳
(@鷲尾不徳)
ゲスト
結合: 21年前
投稿: 21
 

お、開けた。

> ダイアログを作成した後
>

なぜこんなことに・・・
ServerConectProc関数のWM_INITDIALOGの中の処理が気になります。
提示されたソースだけではありえないとしか言えません。

> WS_SYSMENU
があるからダイアログのタイトルバーは出るはずなのに出ていないとは・・・


返信引用
鷲尾不徳
 鷲尾不徳
(@鷲尾不徳)
ゲスト
結合: 21年前
投稿: 21
 

> ServerConectProc関数のWM_INITDIALOGの中の処理が気になります。

おっと、違った。
これは気にしなくていいです。

画面を見て疑問が出たのでまずは質問、
1.CreateWindow は親ウィンドウ(RecvWindow)の生成以外に使っていますか?
2.親ウィンドウはマウスでクリックすると、どう反応しますか?
(タイトルバーが点滅するとか)
3.
> 他にダイアログが定義してあるとか、ってのはないですよね?>秋桜さん
こっちも念のため聞いておきます。

> ダイアログを作成した後
>

CreateWindowで1つづつ親ウィンドウに配置したみたいでかなり驚きました。
# 混乱してます orz


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

いろいろとお返事ありがとうございます。質問への返答をさせていただきます。

>鷲尾不徳様
>ServerConectProc関数のWM_INITDIALOGの中の処理が気になります。

えと、以下のような感じになります。WM_INITDIALOGでは特に何も処理していません。
やっぱり何かやってやらないと問題ありなのでしょうか?

#include <windows.h>

BOOL CALLBACK ServerConectProc(HWND hWnd,UINT msg,WPARAM wP,LPARAM lP){
switch(msg){
case WM_COMMAND:
switch(LOWORD(wP)){
case IDOK:
EndDialog(hWnd,FALSE);
return TRUE;
break;

// 「キャンセル」が押された
case IDCANCEL:
EndDialog(hWnd,FALSE);
return TRUE;
break;
}
}
return TRUE;
}

>1.CreateWindow は親ウィンドウ(RecvWindow)の生成以外に使っていますか?
えっと、CreateWindowは一度も使っていないと思います。DialogBoxは関係ないなら
まず間違いはないと思います。

>2.親ウィンドウはマウスでクリックすると、どう反応しますか?(タイトルバーが点
滅するとか)
これはモーダルダイアログを作ったときと同じ反応です。ダイアログ(この場合クライ
アント領域?)
以外何の反応も示しません。

>3.他にダイアログが定義してあるとか、ってのはないですよね?
えっと、これはリソースで複数のダイアログを定義しているかということなのでしょう
か?
この内容でいいのならば、今のところは定義していません。IDD_CONECTただひとつで
す。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました