这程序小人调试好几十次都失败了,求高手指教!!!!
下面是程序代码及出错提示:Dialog01.h 代码:#define IDM_OPEN 10 //1行
#define IDM_SAVE 11
#define IDM_SAVEAS 12
#define IDM_EXIT 13
#define IDM_SUM 14
#define IDM_DEVIA 15
#define IDM_STDDEVIA 16
#define IDM_SUMHELP 17
#define IDM_DEVIAHELP 18
#define IDM_STDDEVIAHELP 19
#define IDM_ABOUT 20 //////// //11行 Dialog01.rc 代码:#include<windows.h> // //// //1行
#include"Dialog01.h"
Menu MENU DISCARDABLE
{
POPUP "文件(&F)"
{
MENUITEM "打开(&O)\t Ctrl+O",IDM_OPEN
MENUITEM "保存(&S)\t Ctrl+S",IDM_SAVE
MENUITEM "另存为(&A)",IDM_SAVEAS
MENUITEM SEPARATOR //// //// //10行
MENUITEM "退出(&E)",IDM_EXIT
}
POPUP "计算(&S)"
{
MENUITEM "计算总和(&S)",IDM_SUM
MENUITEM "计算方差(&D)",IDM_DEVIA
MENUITEM "计算均方差(&T)",IDM_STDDEVIA
} POPUP "帮助(&H)" // //// //20行
{
MENUITEM "计算总和帮助(&S)",IDM_SUMHELP
MENUITEM "计算方差帮助(&D)",IDM_DEVIAHELP
MENUITEM "计算均方差帮助(&T)",IDM_STDDEVIAHELP
MENUITEM SEPARATOR
MENUITEM "关于(&A)", IDM_ABOUT
}
}
//===============加速键资源
Menu ACCELERATORS ////////////////// //// //30行
{
"^O" , IDM_OPEN
"^s" , IDM_SAVE
}About DIALOG 10,10,100,50
STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU
CAPTION "关于"
FONT 18,"楷体"//
{ // //// ////////////40行
CTEXT "windows模态对话框",-1,13,10,80,10
DEFPUSHBUTTON "确定",IDOK,35,30,,30,12//IDOK,35,30,30,12 错
}
// //=================位图资源=================pic BITMAP "DfydSetB.bmp" ////// //// //46行 Dialog01.cpp 程序代码:
#include<windows.h> ///////////////// //1行
#include"Dialog01.h"
#include<stdlib.h>
#include<string.h>
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM ,LPARAM );//窗口处理函数
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM ,LPARAM );
//////////==========
HWND hWndMain; //////// //10行
HINSTANCE hInst;
HDC hDC;
HDC hdcmem;
HBITMAP hBm;
BITMAP bm;
int iY=80;
int iX=100;
int iWindowWidth,iWindowHeight;
char cUpWarn[]="已经达到顶部了,不能再向上移动了";
char cDownWarn[]="已经达到底部了,不能再向下移动了"; ///////////////20行
char cLeftWarn[]="已经达到左底部了,不能再向左移动了";
char cRightWarn[]="已经达到右底部了,不能再向右移动了";
char hMenu[20];
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,
LPSTR lpCmdLine,int nCmdShow)
{ MSG Message;
hBm=LoadBitmap(hInstance,"pic");
GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm); ///////////////30行
iWindowWidth=2*bm.bmWidth;
iWindowHeight=2*bm.bmHeight;
HACCEL hAccel;
if(!InitWindowsClass(hInstance))//hInstance从主函数传过来的
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
{ MessageBeep(0);//若注册失败则发出警告
return FALSE;
}
hInst=hInstance;
hAccel=LoadAccelerators(hInst,hMenu); /////////////////40行
while(GetMessage(&Message,0,0,0))//只有一个当前实例句炳
{
if(!TranslateAccelerator(hWndMain,hAccel,&Message))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
} //////////////////////////////////////////50行
return Message.wParam;
}
///+++++++++++++++++++++===============================
LRESULT WINAPI WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{ PAINTSTRUCT ps;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{ //////////////////////////////////////60行
case IDM_OPEN:
MessageBox(hWnd,"文件已经打开","文件打开",MB_OK);
break;
case IDM_SAVE:
MessageBox(hWnd,"文件保存成功","文件保存",MB_OK);
break;
case IDM_ABOUT:
DialogBox(hInst,"About",hWnd,(DLGPROC)DlgProc);
break;
} /////////////////////////////////////70行
break;
case WM_LBUTTONDOWN:
iY=iY-1; //位土高度
InvalidateRect(hWnd,NULL,1);
break;
case WM_RBUTTONDOWN:
iY=iY+1;
InvalidateRect(hWnd,NULL,1);
break;
case WM_KEYDOWN: ////////////////////80行
switch(wParam)
{
case VK_UP:
iY=iY-1;
break;
case VK_DOWN:
iY=iY+1;
break;
case VK_RIGHT:
iX=iX+1; //////////////////90行
break;
case VK_LEFT:
iX=iX-1;
break;
}
InvalidateRect(hWnd,NULL,1);
break;
case WM_CREATE:
hDC=GetDC(hWnd);
hdcmem=CreateCompatibleDC(hDC); ///////////////100行
ReleaseDC(hWnd,hDC);
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if((iY>0&&iY<iWindowHeight/2)&&(iX>0&&iX<iWindowWidth/2))
{
SelectObject(hdcmem,hBm);
BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);
}
else if(iY<=0||iX<=0)
{ if(iY<=0) ////////////////////////////110行
//TextOut(hDC,0,0,cUpWarn,sizeof(cUpWarn));
MessageBox(hWnd,cUpWarn,"超出上框警告",MB_OK);
if(iX<=0)
TextOut(hDC,0,0,cLeftWarn,sizeof(cLeftWarn));
}
else
{ if(iY>=iWindowHeight/2)
TextOut(hDC,0,0,cDownWarn,sizeof(cDownWarn));
else
TextOut(hDC,0,0,cRightWarn,sizeof(cRightWarn)); /////////////////120行
}
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
return(0);
default:
return(DefWindowProc(hWnd ,message,wParam,lParam));
}
return 0; ////////////////////////////////130行
}
//========================================================
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,"END"); /////////////////////////////140行
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="wndfill";
WndClass.lpszMenuName="Menu";
WndClass.style=CS_HREDRAW|CS_VREDRAW;
hMenu[20]=Menu;
return RegisterClass(&WndClass);
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) ///////////////150行
{
HWND hWnd;
hWnd=CreateWindow("wndfill","第一个事例",WS_OVERLAPPEDWINDOW|WS_VSCROLL|
WS_HSCROLL,//|WS_POPUP,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL);
if(!hWnd)
return FALSE; //////////////////////////160行
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);//SW_SHOWNOACTIVE
UpdateWindow(hWnd);
return TRUE;
}LRESULT CALLBACK DlgProc(HWND hdlg,UINT Message,WPARAM wParam,LPARAM lParam)
{
switch(Message)
{ ////////////////////170行
case WM_INITDIALOG:
return 1;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hdlg,0);
return 1;
}
break; ////////////////////////////////180行
case WM_CLOSE:
EndDialog(hdlg,0);
return 1;
}
return 0;} ////////////////////////////////////187行
出错提示:--------------------Configuration: Dialog01 - Win32 Debug--------------------
Compiling resources...
C:\Program Files\Microsoft Visual Studio\MyProjects\VC++\Dialog01\Dialog01.rc (42): error RC2108 : expected numerical dialog constant
Error executing rc.exe.Dialog01.exe - 1 error(s), 0 warning(s)
下面是程序代码及出错提示:Dialog01.h 代码:#define IDM_OPEN 10 //1行
#define IDM_SAVE 11
#define IDM_SAVEAS 12
#define IDM_EXIT 13
#define IDM_SUM 14
#define IDM_DEVIA 15
#define IDM_STDDEVIA 16
#define IDM_SUMHELP 17
#define IDM_DEVIAHELP 18
#define IDM_STDDEVIAHELP 19
#define IDM_ABOUT 20 //////// //11行 Dialog01.rc 代码:#include<windows.h> // //// //1行
#include"Dialog01.h"
Menu MENU DISCARDABLE
{
POPUP "文件(&F)"
{
MENUITEM "打开(&O)\t Ctrl+O",IDM_OPEN
MENUITEM "保存(&S)\t Ctrl+S",IDM_SAVE
MENUITEM "另存为(&A)",IDM_SAVEAS
MENUITEM SEPARATOR //// //// //10行
MENUITEM "退出(&E)",IDM_EXIT
}
POPUP "计算(&S)"
{
MENUITEM "计算总和(&S)",IDM_SUM
MENUITEM "计算方差(&D)",IDM_DEVIA
MENUITEM "计算均方差(&T)",IDM_STDDEVIA
} POPUP "帮助(&H)" // //// //20行
{
MENUITEM "计算总和帮助(&S)",IDM_SUMHELP
MENUITEM "计算方差帮助(&D)",IDM_DEVIAHELP
MENUITEM "计算均方差帮助(&T)",IDM_STDDEVIAHELP
MENUITEM SEPARATOR
MENUITEM "关于(&A)", IDM_ABOUT
}
}
//===============加速键资源
Menu ACCELERATORS ////////////////// //// //30行
{
"^O" , IDM_OPEN
"^s" , IDM_SAVE
}About DIALOG 10,10,100,50
STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU
CAPTION "关于"
FONT 18,"楷体"//
{ // //// ////////////40行
CTEXT "windows模态对话框",-1,13,10,80,10
DEFPUSHBUTTON "确定",IDOK,35,30,,30,12//IDOK,35,30,30,12 错
}
// //=================位图资源=================pic BITMAP "DfydSetB.bmp" ////// //// //46行 Dialog01.cpp 程序代码:
#include<windows.h> ///////////////// //1行
#include"Dialog01.h"
#include<stdlib.h>
#include<string.h>
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM ,LPARAM );//窗口处理函数
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM ,LPARAM );
//////////==========
HWND hWndMain; //////// //10行
HINSTANCE hInst;
HDC hDC;
HDC hdcmem;
HBITMAP hBm;
BITMAP bm;
int iY=80;
int iX=100;
int iWindowWidth,iWindowHeight;
char cUpWarn[]="已经达到顶部了,不能再向上移动了";
char cDownWarn[]="已经达到底部了,不能再向下移动了"; ///////////////20行
char cLeftWarn[]="已经达到左底部了,不能再向左移动了";
char cRightWarn[]="已经达到右底部了,不能再向右移动了";
char hMenu[20];
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,
LPSTR lpCmdLine,int nCmdShow)
{ MSG Message;
hBm=LoadBitmap(hInstance,"pic");
GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm); ///////////////30行
iWindowWidth=2*bm.bmWidth;
iWindowHeight=2*bm.bmHeight;
HACCEL hAccel;
if(!InitWindowsClass(hInstance))//hInstance从主函数传过来的
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
{ MessageBeep(0);//若注册失败则发出警告
return FALSE;
}
hInst=hInstance;
hAccel=LoadAccelerators(hInst,hMenu); /////////////////40行
while(GetMessage(&Message,0,0,0))//只有一个当前实例句炳
{
if(!TranslateAccelerator(hWndMain,hAccel,&Message))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
} //////////////////////////////////////////50行
return Message.wParam;
}
///+++++++++++++++++++++===============================
LRESULT WINAPI WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{ PAINTSTRUCT ps;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{ //////////////////////////////////////60行
case IDM_OPEN:
MessageBox(hWnd,"文件已经打开","文件打开",MB_OK);
break;
case IDM_SAVE:
MessageBox(hWnd,"文件保存成功","文件保存",MB_OK);
break;
case IDM_ABOUT:
DialogBox(hInst,"About",hWnd,(DLGPROC)DlgProc);
break;
} /////////////////////////////////////70行
break;
case WM_LBUTTONDOWN:
iY=iY-1; //位土高度
InvalidateRect(hWnd,NULL,1);
break;
case WM_RBUTTONDOWN:
iY=iY+1;
InvalidateRect(hWnd,NULL,1);
break;
case WM_KEYDOWN: ////////////////////80行
switch(wParam)
{
case VK_UP:
iY=iY-1;
break;
case VK_DOWN:
iY=iY+1;
break;
case VK_RIGHT:
iX=iX+1; //////////////////90行
break;
case VK_LEFT:
iX=iX-1;
break;
}
InvalidateRect(hWnd,NULL,1);
break;
case WM_CREATE:
hDC=GetDC(hWnd);
hdcmem=CreateCompatibleDC(hDC); ///////////////100行
ReleaseDC(hWnd,hDC);
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if((iY>0&&iY<iWindowHeight/2)&&(iX>0&&iX<iWindowWidth/2))
{
SelectObject(hdcmem,hBm);
BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);
}
else if(iY<=0||iX<=0)
{ if(iY<=0) ////////////////////////////110行
//TextOut(hDC,0,0,cUpWarn,sizeof(cUpWarn));
MessageBox(hWnd,cUpWarn,"超出上框警告",MB_OK);
if(iX<=0)
TextOut(hDC,0,0,cLeftWarn,sizeof(cLeftWarn));
}
else
{ if(iY>=iWindowHeight/2)
TextOut(hDC,0,0,cDownWarn,sizeof(cDownWarn));
else
TextOut(hDC,0,0,cRightWarn,sizeof(cRightWarn)); /////////////////120行
}
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
return(0);
default:
return(DefWindowProc(hWnd ,message,wParam,lParam));
}
return 0; ////////////////////////////////130行
}
//========================================================
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,"END"); /////////////////////////////140行
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="wndfill";
WndClass.lpszMenuName="Menu";
WndClass.style=CS_HREDRAW|CS_VREDRAW;
hMenu[20]=Menu;
return RegisterClass(&WndClass);
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) ///////////////150行
{
HWND hWnd;
hWnd=CreateWindow("wndfill","第一个事例",WS_OVERLAPPEDWINDOW|WS_VSCROLL|
WS_HSCROLL,//|WS_POPUP,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL);
if(!hWnd)
return FALSE; //////////////////////////160行
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);//SW_SHOWNOACTIVE
UpdateWindow(hWnd);
return TRUE;
}LRESULT CALLBACK DlgProc(HWND hdlg,UINT Message,WPARAM wParam,LPARAM lParam)
{
switch(Message)
{ ////////////////////170行
case WM_INITDIALOG:
return 1;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hdlg,0);
return 1;
}
break; ////////////////////////////////180行
case WM_CLOSE:
EndDialog(hdlg,0);
return 1;
}
return 0;} ////////////////////////////////////187行
出错提示:--------------------Configuration: Dialog01 - Win32 Debug--------------------
Compiling resources...
C:\Program Files\Microsoft Visual Studio\MyProjects\VC++\Dialog01\Dialog01.rc (42): error RC2108 : expected numerical dialog constant
Error executing rc.exe.Dialog01.exe - 1 error(s), 0 warning(s)
Visual C++ 概念:生成 C/C++ 程序 资源编译器错误 RC2108不对称括号(Unbalanced Parentheses)左括号与右括号不匹配。
0 zero 零
与
O oh 字母 看不出来区别?