用API函数CreateWindow创建的窗体,怎么像MessageBox那样ShowModal,求良策!! ( 积分: 50 )

  • 主题发起人 主题发起人 TrustMe
  • 开始时间 开始时间
T

TrustMe

Unregistered / Unconfirmed
GUEST, unregistred user!
var<br> M: tagMSG;<br> Termate: boolean;<br> hwd: Cardinal;<br>begin<br> hwd:= CreateDialog(hInst,'TRMTRM',hParent,@dlgproc);<br> if hwd = 0 then begin<br> &nbsp;MessageBox(0,'窗体初始化失败!','错误',0);<br> &nbsp;Exit;<br> end;<br> ShowWindow(hwd,nCmdShow);<br> UpdateWindow(hwd);<br> Termate:= False;<br> while (Not Termate) and GetMessage(m, hwd, 0, 0) do begin<br> &nbsp;Termate:= (m.message = WM_CLOSE) or (m.message = WM_QUIT) or (m.message = WM_DESTROY);<br> &nbsp;DispatchMessage(m);<br> &nbsp;TranslateMessage(m);<br> end;<br>end;<br>像这样创建的窗体,怎么ShowModal,求良策!!<br>不要告诉我去看Forms单元里的代码,我看了,没懂,求良策!<br>最好能给我个例子!!先谢谢了!!
 
var<br> M: tagMSG;<br> Termate: boolean;<br> hwd: Cardinal;<br>begin<br> hwd:= CreateDialog(hInst,'TRMTRM',hParent,@dlgproc);<br> if hwd = 0 then begin<br> &nbsp;MessageBox(0,'窗体初始化失败!','错误',0);<br> &nbsp;Exit;<br> end;<br> ShowWindow(hwd,nCmdShow);<br> UpdateWindow(hwd);<br> Termate:= False;<br> while (Not Termate) and GetMessage(m, hwd, 0, 0) do begin<br> &nbsp;Termate:= (m.message = WM_CLOSE) or (m.message = WM_QUIT) or (m.message = WM_DESTROY);<br> &nbsp;DispatchMessage(m);<br> &nbsp;TranslateMessage(m);<br> end;<br>end;<br>像这样创建的窗体,怎么ShowModal,求良策!!<br>不要告诉我去看Forms单元里的代码,我看了,没懂,求良策!<br>最好能给我个例子!!先谢谢了!!
 
DialogBox(hInst,'TRMTRM',0,@dlgproc);<br>这样不行吗?
 
ShowModal成了,还有点小问题,解决了就散分了!:)
 
如果不使用DialogBox而使用CreateDialog(现在不管ShowModal的问题了)。<br>我是这样做的,新建程序,一个窗体(这个窗体使用Delphi的窗体),一个按钮,点击按钮时,产生一个用CreateDialog创建的窗体,这个窗体对消息的响应不正常!<br>而且当关闭这个窗体时,整个程序也结束了!!<br>郁闷!!<br>继续求良策!
 
就如上面所述,不管是使用CreateDialog还是使用DialogBox,后创建的窗体关闭时,整个程序也跟着关掉了!!<br>郁闷!!<br>求良策!!!!!
 
如果用你上面那段代码<br>父窗口的消息循环被卡了,而新的消息循环又只处理对话框消息<br>我想应该while (Not Termate) and GetMessage(m, 0, 0, 0) do...<br>处理所有窗口的消息,但之前可以先把父窗口DISABLE掉<br><br>另外你对话框的处理过程可别发出什么WM_QUIT消息啊<br>结束标志可以在处理过程中收到WM_DESTROY时设置,而不是放在循环里
 
散分了,好高兴!<br>1、当初想ShowModal窗体的时候,摁着Forms单元里的ShowModal看了个底朝天也不得法,哎!钻牛角尖了!<br>2、终于解决问题了,都是一句PostQuitMessage闹得,说来也是惭愧!<br>好了,谢谢someset兄的热情帮助,分不多,请笑纳!!
 
接受答案了.
 
后退
顶部