EDN Admin
Well-known member
Hello everybody,
<p align=left>
Im trying to create a dialog box from a resource template with the following function call:
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#808080" size=1>
<font color="#000000 hWndMain = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_MAINWINDOW), 0, MainDialogProcedure, (</font></font><font color="#0000ff" size=1>LPARAM</font><font color="#000000" size=1>)</font><font color="#0000ff" size=1>this</font><font color="#000000" size=1>);</font>
<p align=left>
For some reason, this call fails, hWndMain is still 0. So, I call GetLastError() immediately afterwards, but that returns 0 as well!
<p align=left>
<p align=left>MainDialogProcedure is defined as a static member function of my my applications main class, like so:
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#0000ff" size=1>
static</font><font color="#808080" size=1> </font><font color="#0000ff" size=1>INT_PTR</font><font color="#808080" size=1> <font color="#000000 CALLBACK MainDialogProcedure(</font></font><font color="#0000ff" size=1>HWND</font><font color="#808080" size=1> <font color="#000000 hDlg,</font> </font><font color="#0000ff" size=1>UINT</font><font color="#808080" size=1> <font color="#000000 uMsg,</font> </font><font color="#0000ff" size=1>WPARAM</font><font color="#808080" size=1> <font color="#000000 wParam,</font> </font><font color="#0000ff" size=1>LPARAM</font><font color="#808080" size=1> <font color="#000000 lParam);</font></font>
<p align=left>
The procedure itself looks like this, so far: <font color="#008000" size=1>
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#008000" size=1>
<p align=left>// static </font><font color="#0000ff" size=1>
<p align=left>INT_PTR</font><font color="#808080" size=1> <font color="#000000 CALLBACK cProcMemSrch::MainDialogProcedure(</font></font><font color="#0000ff" size=1>HWND</font><font color="#808080" size=1> <font color="#000000 hDlg,</font> </font><font color="#0000ff" size=1>UINT</font><font color="#808080" size=1> <font color="#000000 uMsg,</font> </font><font color="#0000ff" size=1>WPARAM</font><font color="#808080" size=1> <font color="#000000 wParam,</font> </font><font color="#0000ff" size=1>LPARAM</font><font color="#808080" size=1> <font color="#000000 lParam) {</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left></font><font color="#0000ff" size=1>static</font><font color="#808080" size=1> <font color="#000000 cProcMemSrch * pThis = 0;</font>
<p align=left></font><font color="#0000ff" size=1>switch</font><font color="#808080" size=1> <font color="#000000 (uMsg) {</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left></font><font color="#0000ff" size=1>case</font><font color="#808080" size=1> <font color="#000000 WM_INITDIALOG:</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left><font color="#000000 pThis = (cProcMemSrch *)lParam;</font>
<p align=left></font><font color="#0000ff" size=1>return</font><font color="#808080" size=1> <font color="#000000 TRUE;</font> </font><font color="#008000" size=1>// break; </blockquote></blockquote></font><font color="#808080" size=1>
<p align=left><font color="#000000 }</font>
<p align=left></font><font color="#0000ff" size=1>return</font><font color="#808080" size=1> <font color="#000000 FALSE;</font> </blockquote>
<p align=left><font color="#000000 }</font></font>
<p align=left>
<font color="#000000" size=2>I set a breakpoint on the first line of this function to see which messages it receives, and they are WM_SETFONT, WM_DESTROY and WM_NCDESTROY, in that order. Does anybody have any idea what the heck is going on here?</font>
<p align=left><font color="#000000" size=2></font>
<p align=left><font color="#000000" size=2>Just to be complete, here is the dialogtemplate that I use:</font> <font color="#808080" size=1>
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#000000" size=1>
<p align=left>IDD_MAINWINDOW DIALOGEX 0, 0, 384, 278
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "ProcMemSrch"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "",IDC_LIST_ADDRESSES,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,370,246
PUSHBUTTON "New Search",IDC_BUTTON_NEW,269,256,52,15
PUSHBUTTON "Search Again",IDC_BUTTON_AGAIN,325,256,52,15,WS_DISABLED
END </font>
<p align=left>
</font><font color="#808080" size=1>
<p align=left> <font color="#000000" size=2>Thanks in advance for any help you guys may be able to give me.</font></font></font>
View the full article
<p align=left>
Im trying to create a dialog box from a resource template with the following function call:
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#808080" size=1>
<font color="#000000 hWndMain = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_MAINWINDOW), 0, MainDialogProcedure, (</font></font><font color="#0000ff" size=1>LPARAM</font><font color="#000000" size=1>)</font><font color="#0000ff" size=1>this</font><font color="#000000" size=1>);</font>
<p align=left>
For some reason, this call fails, hWndMain is still 0. So, I call GetLastError() immediately afterwards, but that returns 0 as well!
<p align=left>
<p align=left>MainDialogProcedure is defined as a static member function of my my applications main class, like so:
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#0000ff" size=1>
static</font><font color="#808080" size=1> </font><font color="#0000ff" size=1>INT_PTR</font><font color="#808080" size=1> <font color="#000000 CALLBACK MainDialogProcedure(</font></font><font color="#0000ff" size=1>HWND</font><font color="#808080" size=1> <font color="#000000 hDlg,</font> </font><font color="#0000ff" size=1>UINT</font><font color="#808080" size=1> <font color="#000000 uMsg,</font> </font><font color="#0000ff" size=1>WPARAM</font><font color="#808080" size=1> <font color="#000000 wParam,</font> </font><font color="#0000ff" size=1>LPARAM</font><font color="#808080" size=1> <font color="#000000 lParam);</font></font>
<p align=left>
The procedure itself looks like this, so far: <font color="#008000" size=1>
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#008000" size=1>
<p align=left>// static </font><font color="#0000ff" size=1>
<p align=left>INT_PTR</font><font color="#808080" size=1> <font color="#000000 CALLBACK cProcMemSrch::MainDialogProcedure(</font></font><font color="#0000ff" size=1>HWND</font><font color="#808080" size=1> <font color="#000000 hDlg,</font> </font><font color="#0000ff" size=1>UINT</font><font color="#808080" size=1> <font color="#000000 uMsg,</font> </font><font color="#0000ff" size=1>WPARAM</font><font color="#808080" size=1> <font color="#000000 wParam,</font> </font><font color="#0000ff" size=1>LPARAM</font><font color="#808080" size=1> <font color="#000000 lParam) {</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left></font><font color="#0000ff" size=1>static</font><font color="#808080" size=1> <font color="#000000 cProcMemSrch * pThis = 0;</font>
<p align=left></font><font color="#0000ff" size=1>switch</font><font color="#808080" size=1> <font color="#000000 (uMsg) {</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left></font><font color="#0000ff" size=1>case</font><font color="#808080" size=1> <font color="#000000 WM_INITDIALOG:</font>
<blockquote dir=ltr style="margin-right:0px
<p align=left><font color="#000000 pThis = (cProcMemSrch *)lParam;</font>
<p align=left></font><font color="#0000ff" size=1>return</font><font color="#808080" size=1> <font color="#000000 TRUE;</font> </font><font color="#008000" size=1>// break; </blockquote></blockquote></font><font color="#808080" size=1>
<p align=left><font color="#000000 }</font>
<p align=left></font><font color="#0000ff" size=1>return</font><font color="#808080" size=1> <font color="#000000 FALSE;</font> </blockquote>
<p align=left><font color="#000000 }</font></font>
<p align=left>
<font color="#000000" size=2>I set a breakpoint on the first line of this function to see which messages it receives, and they are WM_SETFONT, WM_DESTROY and WM_NCDESTROY, in that order. Does anybody have any idea what the heck is going on here?</font>
<p align=left><font color="#000000" size=2></font>
<p align=left><font color="#000000" size=2>Just to be complete, here is the dialogtemplate that I use:</font> <font color="#808080" size=1>
<p align=left>
<div class=codeseg>
<div class=codecontent>
<div class=codesniptitle><span style="width:100% Code Block <font color="#000000" size=1>
<p align=left>IDD_MAINWINDOW DIALOGEX 0, 0, 384, 278
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "ProcMemSrch"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "",IDC_LIST_ADDRESSES,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,370,246
PUSHBUTTON "New Search",IDC_BUTTON_NEW,269,256,52,15
PUSHBUTTON "Search Again",IDC_BUTTON_AGAIN,325,256,52,15,WS_DISABLED
END </font>
<p align=left>
</font><font color="#808080" size=1>
<p align=left> <font color="#000000" size=2>Thanks in advance for any help you guys may be able to give me.</font></font></font>
View the full article