首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

win32 写的程序,加入了资源菜单,可运行是没有菜单显示。大侠帮忙!该如何解决

2012-01-18 
win32 写的程序,加入了资源菜单,可运行是没有菜单显示。大侠帮忙!同过加入resourcescript添加的菜单资源,可

win32 写的程序,加入了资源菜单,可运行是没有菜单显示。大侠帮忙!
同过加入   resource   script   添加的菜单资源,可运行是没有菜单显示,小的实在找不到原因,求大侠帮忙:感激涕零!

.c文件如下:
#   include   <windows.h>
#   include   "resource.h "

LRESULT   CALLBACK   WndProc(HWND,UINT,WPARAM,LPARAM);

BOOL   CALLBACK   AboutDlgProc(HWND,UINT,WPARAM,LPARAM);

intiCurrentColor   =   IDC_BLACK,iCurrentFigure   =   IDC_RECT;

int   WINAPI   WinMain(HINSTANCE   hInstance,HINSTANCE   hPrevInstance,PSTR   szCmdLine,int   iCmdShow)
{
static   TCHARszAppName[]   =   TEXT( "About2 ");
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;

wndclass.cbClsExtra   =   0;
wndclass.cbWndExtra   =   0;
wndclass.hbrBackground   =   GetStockObject(WHITE_BRUSH);
wndclass.hCursor   =   LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon   =   LoadIcon(hInstance,szAppName);
wndclass.hInstance   =   hInstance;
wndclass.lpfnWndProc   =   WndProc;
wndclass.lpszClassName   =   szAppName;
wndclass.lpszMenuName   =   szAppName;
wndclass.style   =   CS_HREDRAW   |   CS_VREDRAW;

RegisterClass(&wndclass);

hwnd   =   CreateWindow(szAppName,TEXT( "About   Box   Demo   Program "),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))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return   msg.wParam;
}

void   PaintWindow(HWND   hwnd,int   iColor,int   iFigure)
{
static   COLORREFcrColor[8]   =   {RGB(0,0,0),RGB(0,0,255),RGB(0,255,0),RGB(0,255,255),
RGB(255,0,0),RGB(255,0,255),RGB(255,255,0),RGB(255,255,255)};
HBRUSHhBrush;
HDChdc;
RECTrect;

hdc   =   GetDC(hwnd);
GetClientRect(hwnd,&rect);
hBrush   =   CreateSolidBrush(crColor[iColor   -   IDC_BLACK]);

if   (iFigure   ==   IDC_RECT)
Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
else
Ellipse(hdc,rect.left,rect.top,rect.right,rect.bottom);

DeleteObject(SelectObject(hdc,hBrush));

ReleaseDC(hwnd,hdc);
}

void   PaintTheBlock(HWND   hCtrl,int   iColor,int   iFigure)
{
InvalidateRect(hCtrl,NULL,TRUE);
UpdateWindow(hCtrl);
PaintWindow(hCtrl,iColor,iFigure);
}

LRESULT   CALLBACK   WndProc(HWND   hwnd,UINT   message,WPARAM   wParam,LPARAM   lParam)
{
static   HINSTANCEhInstance;
PAINTSTRUCTps;

switch(message)
{
case   WM_CREATE:
hInstance   =   ((LPCREATESTRUCT)lParam)-> hInstance;

return   0;
case   WM_COMMAND:
switch(LOWORD(wParam))
{
case   IDM_APP_ABOUT:
if   (DialogBox(hInstance,TEXT( "AboutBox "),hwnd,AboutDlgProc))
InvalidateRect(hwnd,NULL,TRUE);
return   0;
}
break;
case   WM_PAINT:
BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);

PaintWindow(hwnd,iCurrentColor,iCurrentFigure);
return   0;
case   WM_DESTROY:
PostQuitMessage(0);
return   0;
}
return   DefWindowProc(hwnd,message,wParam,lParam);


}

BOOL   CALLBACK   AboutDlgProc(HWND   hDlg,UINT   message,WPARAM   wParam,LPARAM   lParam)
{
static   HWNDhCtrlBlock;
static   intiColor,iFigure;

switch(message)
{
case   WM_INITDIALOG:
iColor   =   iCurrentColor;
iFigure   =   iCurrentFigure;

CheckRadioButton(hDlg,IDC_BLACK,IDC_WHITE,iColor);
CheckRadioButton(hDlg,IDC_RECT,IDC_ELLIPSE,iFigure);

hCtrlBlock   =   GetDlgItem(hDlg,IDC_PAINT);
SetFocus(GetDlgItem(hDlg,iColor));

return   FALSE;

case   WM_COMMAND:
switch(LOWORD(wParam))
{
case   IDOK:
iCurrentColor   =   iColor;
iCurrentFigure   =   iFigure;

EndDialog(hDlg,TRUE);

return   TRUE;

case   IDCANCEL:
EndDialog(hDlg,FALSE);
return   TRUE;
case   IDC_BLACK:
case   IDC_RED:
case   IDC_GREEN:
case   IDC_YELLOw:
case   IDC_BLUE:
case   IDC_MAGENTA:
case   IDC_CYAN:
case   IDC_WHITE:
iColor   =   LOWORD(wParam);

CheckRadioButton(hDlg,IDC_BLACK,IDC_WHITE,LOWORD(wParam));

PaintTheBlock(hCtrlBlock,iColor,iFigure);

return   TRUE;
case   IDC_RECT:
case   IDC_ELLIPSE:
iFigure   =   LOWORD(wParam);

CheckRadioButton(hDlg,IDC_RECT,IDC_ELLIPSE,LOWORD(wParam));

PaintTheBlock(hCtrlBlock,iColor,iFigure);

return   TRUE;

}
break;
case   WM_PAINT:
PaintTheBlock(hCtrlBlock,iColor,iFigure);
break;
}
return   FALSE;
}



[解决办法]
wndclass.lpszMenuName = MAKEINTRESOURCE(ABOUT2);
[解决办法]
1、wndclass.lpszMenuName = (LPCTSTR)ABOUT2; //需与你资源文件中菜单定义的部分相对应
2、有可能你没把rc文件加到工程里。
[解决办法]

if (DialogBox(hInstance,TEXT( "AboutBox "),hwnd,AboutDlgProc))=====> >

if (DialogBox(hInstance,MAKEINTRESOURCE(ABOUTBOX),hwnd,AboutDlgProc))

热点排行