照着书上编的对话框例子,居然调试不通过,请大侠指点!!
照着书上例子编的程序,这是一个模态对话框的例子,该对话框含有标题栏,系统菜单,简要信息及一个按钮控件。调试时不能通过,请各位大侠帮我看看。
以下是dial.cpp
#include <windows.h>
#include "7_3.h"
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
HACCEL hAccel;
WNDCLASS wndclass;
char lpszMenuName[]="Menu";
char lpszClassName[]="模态对话框";
char lpszTitle[]="模态对话框样例";
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=lpszMenuName;
wndclass.lpszClassName=lpszClassName;
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
hInst=hInstance;
hAccel=LoadAccelerators(hInst,lpszMenuName);
while(GetMessage(&Msg,NULL,0,0))
{
if(!TranslateAccelerator(hwnd,hAccel,&Msg))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_OPEN:
MessageBox(hwnd,"文件已打开","文件打开",MB_OK);
break;
case IDM_SAVE:
MessageBox(hwnd,"文件保存成功","文件保存",MB_OK);
break;
case IDM_EXIT:
SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_ABOUT:
DialogBox(hInst,"About",hwnd,(DLGPROC)DlgProc);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
return 1;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hdlg,0);
return 1;
}
break;
case WM_CLOSE:
EndDialog(hdlg,0);
return 1;
}
return 0;
}
以下是1.rc
#include<windows.h>
#include"7_3.h"
Menu MENU DISCARDABLE
{
POPUP "文件&F)"
{
MENUITEM "打开(&O)\t Ctrl+O",IDM_OPEN
MENUITEM SEPARATOR
MENUITEM "保存(&S)\t Ctrl+S",IDM_SAVE
MENUITEM SEPARATOR
MENUITEM "退出(&X)",IDM_EXIT
}
POPUP "帮助(&H)"
{
MENUITEM "关于(&A)...",IDM_ABOUT
}
}
Menu ACCELERATORS
{
"^O",IDM_OPEN
"^S",IDM_SAVE
}
About DIALOG 10,10,100,50
STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU
CAPTION "关于"
FONT 18 "楷体"
{ CTEXT "Windows模态对话框",-1,13,10,80,10
DEFPUSHBUTTON "确定",IDOK,35,30,30,12
}
以下是7_3.h
#define IDM_OPEN 11
#define IDM_SAVE 13
#define IDM_EXIT 15
#define IDM_ABOUT 20
问题点数:20、回复次数:8Top
1 楼happyparrot(快乐鹦鹉)回复于 2005-03-09 15:09:56 得分 0
请先说明到哪里时调试通不过?Top
2 楼forfor11(沸腾生活)回复于 2005-03-09 15:12:29 得分 0
编译捍示信息为:
-------------------Configuration: diolag1 - Win32 Debug--------------------
Compiling...
dial.cpp
E:\study\VC练习\diolag1\dial.cpp(88) : error C2601: 'DlgProc' : local function definitions are illegal
E:\study\VC练习\diolag1\dial.cpp(108) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
diolag1.exe - 2 error(s), 0 warning(s)
Top
3 楼saliors(正在学习中)回复于 2005-03-09 15:41:56 得分 5
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
函数最后少了一个}号Top
4 楼forfor11(沸腾生活)回复于 2005-03-09 15:51:26 得分 0
谢谢saliors!
我修改后,再编译时的提示为:
--------------------Configuration: dialog1 - Win32 Debug--------------------
Compiling resources...
E:\study\VC练习\diolag1\7_3.h(4) : fatal error RC1004: unexpected end of file found
Error executing rc.exe.
dialog1.exe - 1 error(s), 0 warning(s)
Top
5 楼bobob(静思)回复于 2005-03-09 16:01:39 得分 0
把7_3.h贴出来Top
6 楼forfor11(沸腾生活)回复于 2005-03-09 16:07:34 得分 0
to bobob:
7_3.h在我的楼顶的帖子里的最下面:)Top
7 楼bobob(静思)回复于 2005-03-09 16:14:58 得分 15
在头文件最后一行加一个回车Top
8 楼forfor11(沸腾生活)回复于 2005-03-09 16:21:10 得分 0
谢谢bobob(静思--潜心研究PDF),搞定:)Top




