Re: how to show my Dialog?
[Top posting because that's the way the thread is already going...]
I really doubt that the code you've posted is copied EXACTLY from a
book. You've changed a few things trying to get it to compile, haven't you?
Most likely, your problem is the dialog resource identifier that you're
passing to CreateDialog(). Judging by its name, I'm going to guess that
this is a project that was created with Visual C/C++; that seems a
reasonable assumption considering the newsgroup to which you have posted.
When you create a project with a resource file with Visual C, it creates
a file usually called something like "resource.h". In this file you will
find #define statements that set precompiler variables to integers. This
file should be included in both the resource file and every C/C++ file
that needs to refer to resources.
When the resource compiler compiles the resource file, the integer
values of these precompiler variables are substituted for the resource
names that appear in the resource script. Similarly, the C/C++ compiler
would substitute the integer values where these resource name are used
in your code.
You have prevented that from happening by making the resource name into
a string ("IDD_DIALOG1"). (I suspect that this one of the changes that
you made in attempting to get the program to compile.) This tells
CreateDialog() to look for a resource that has a name rather than a
number. I'm fairly sure that your resources have numbers and not names
because of the precompiler variable substitution.
You can probably solve this problem by:
- make sure you have a resource.h file and including it in your
resource file and your C/C++ files.
- make sure that resource.h contains something like
#define IDD_DIALOG1 1000
- replace "IDD_DIALOG1" in your program with MAKEINTRESOURCE(IDD_DIALOG1)
(The last simply supplies a cast that allows a number to be passed as an
argument to a function that is defined as expecting an integer.)
Norm
FlyR wrote:
window ->OK
menu->OK
Dialog->NG
please help me. I am a SDK freshman. Maybe project seting , resorce.h or
lib has wrong.
Everything is not correct. I am crazy. Help me .........................
FlyR
"Ron Francis" <rfrancis@senet.com.au> ???g???l???s?D:u92akBOmHHA.3264@TK2MSFTNGP04.phx.gbl...
What part of it is not working?
Do you get a window at all.
A menu?
Or is it just that the modeless dialog box won't display?
Regards,
Ron Francis
www.RonaldFrancis.com
"FlyR" <john.wild@msa.hinet.net> wrote in message
news:OGheMJImHHA.4848@TK2MSFTNGP05.phx.gbl...
It cant solve it. My program code copy from a book. The win.cpp is same
as the book's code.
But I dont know what happening. How about Visual C++.net setting , .h
file or lib? Could u help
me again?
Thanx
FlyR
"Arman Sahakyan" <armancho_x@rambler.ru(donotspam)> ???g???l???s?D:59943006-C66D-4A7F-944B-E81DDAAD32DC@microsoft.com...
Try after CreateDialog
::ShowWindow(hDlgModeless, SW_SHOW);
--
======
Arman
"FlyR" wrote:
I design a program that include a menu and a dialog.
But It cant work. I dont know what happening.
Could u tell me how to solve it? My program is following:
resorce.rc
include a menu and dialog
win.cpp
#include <windows.h>
#include "commctrl.h"
#include "resource.h"
#include "Dlgs.h"
//#include <iostream>
//using namespace std;
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK TestDlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR
szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]="MyApp";
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize=sizeof(wndclass);
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadCursor(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
wndclass.lpszClassName=szAppName;
wndclass.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
RegisterClassEx(&wndclass);
hInst=hInstance;
hWnd=CreateWindow(szAppName,"?Lc|!?DU?d",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0))
{
if(hDlgModeless||!IsDialogMessage(hDlgModeless,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM
lParam)
{
HDC hDC;
switch(iMsg)
{
case WM_CREATE:
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
hDC=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
}
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID__40001:
MessageBox(hWnd,"?Lc|!?i3aAI?i?XTR???DU?d","??U?O?Lk?H",MB_OK);
return 0;
case ID__40002:
DestroyWindow(hWnd);
return 0;
case ID_40007:
if(!hDlgModeless)
{
hDlgModeless=CreateDialog(hInst,"IDD_DIALOG1",hWnd,(DLGPROC)TestDlgProc);
}
//MessageBox(hWnd,"?Xo?D??MeRA?e?J","??U?O?Lk?H",MB_OK);
return 0;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,iMsg,wParam,lParam);
}
BOOL CALLBACK TestDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM
lParam)
{
switch(uMsg)
{
// case WM_INITDIALOG:
case WM_COMMAND:
case ID_OK:
DestroyWindow(hDlg);
return(TRUE);
case ID_CANCEL:
DestroyWindow(hDlg);
return(TRUE);
}
}
--
--
To reply, change domain to an adult feline.