在线等待---sdk编程,如何将菜单加在窗口上, 我编辑了一个菜单,用GetMenu()来得到菜单,可是为什么运行时没有显示?还有,菜单有名字吗?如何命名??我用vc6.0求教各位大侠,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用LoadMenu然后SetMenu或者在注册窗口类的时候指定,再或者在createwindow的时候指定 谢谢,用LoadMenu时,第二个参数是什么,菜单名吗??菜单怎么命名呢?? 源程序#include<windows.h>#include"resource.h"LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow){ static TCHAR szAppName[]=TEXT("test"); HWND hwnd; MSG msg; WNDCLASS wndclass; HMENU hMenu; hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)); wndclass.style =CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hIcon=NULL;//LoadIcon(hInstance,szAppName); wndclass.hbrBackground =(HBRUSH)GetStockObject(BLACK_BRUSH); wndclass.hCursor=LoadCursor(hInstance,IDC_ARROW); wndclass.lpszClassName =szAppName; wndclass.lpszMenuName =szAppName; if(RegisterClass(&wndclass)==0) return 0; hwnd=CreateWindow(szAppName, szAppName, WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX, 250,150,300,280, NULL, hMenu, hInstance, NULL); ShowWindow(hwnd,iCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){ static HMENU hMenu; //HDC hdc; switch(message) { case WM_CREATE: MessageBox(hwnd,"create","create",MB_OK); return 0; case WM_COMMAND: //hMenu=GetMenu(hwnd); switch(LOWORD(wParam)) { case IDM_NEW: MessageBox(hwnd,"new","new",MB_OK); break; } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_LBUTTONDOWN: MessageBox(hwnd,"l","l",MB_OK); return 0; case WM_MBUTTONDOWN: MessageBox(hwnd,"m","m",MB_OK); return 0; case WM_RBUTTONDOWN: MessageBox(hwnd,"r","r",MB_OK); return 0; } return DefWindowProc(hwnd,message,wParam,lParam);} 在WNDCLASSws.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);在Create函数,不要hMenu了,设为NULL,用class的menu的意思。 资源id和szAppName不是一样的哦当然,如果资源的id和szAppName相同就没有问题还有szAppName[] = "test";就可以了 CMainFrame* pFrame = new CMainFrame; m_pMainWnd = pFrame; pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); pFrame->ShowWindow(SW_SHOW); pFrame->UpdateWindow(); 连接失败!? ActiveX DoModal 问题?对话框假死? 多语言菜单如何切换? 水晶报表的问题 请问如何将Date and Time Picker的内容设置为只读那样的风格? 上海游戏研发工作 请问有没有好玩的虚拟设区网站? 拷贝问题,欢迎参与,建议给分!!! 问一简单术语:<插件>是什么意思? 高分(以后再送,我现在超不过36)请教:我写了一个单文档的应用程序,想以.dll的形式发布,如何创建?最好详细说明步骤。 讨论软件多语言支持的方式 传奇游戏加密解密源代码
或者在注册窗口类的时候指定,再或者在createwindow的时候指定
菜单怎么命名呢??
#include<windows.h>
#include"resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("test");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
HMENU hMenu; hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)); wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=NULL;//LoadIcon(hInstance,szAppName);
wndclass.hbrBackground =(HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.hCursor=LoadCursor(hInstance,IDC_ARROW);
wndclass.lpszClassName =szAppName;
wndclass.lpszMenuName =szAppName; if(RegisterClass(&wndclass)==0)
return 0;
hwnd=CreateWindow(szAppName,
szAppName,
WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX,
250,150,300,280,
NULL,
hMenu,
hInstance,
NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HMENU hMenu;
//HDC hdc; switch(message)
{
case WM_CREATE:
MessageBox(hwnd,"create","create",MB_OK);
return 0;
case WM_COMMAND:
//hMenu=GetMenu(hwnd); switch(LOWORD(wParam))
{
case IDM_NEW:
MessageBox(hwnd,"new","new",MB_OK);
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"l","l",MB_OK);
return 0;
case WM_MBUTTONDOWN:
MessageBox(hwnd,"m","m",MB_OK);
return 0;
case WM_RBUTTONDOWN:
MessageBox(hwnd,"r","r",MB_OK);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
ws.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
在Create函数,不要hMenu了,设为NULL,用class的menu的意思。
当然,如果资源的id和szAppName相同就没有问题
还有
szAppName[] = "test";
就可以了
m_pMainWnd = pFrame; pFrame->LoadFrame(IDR_MAINFRAME,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
NULL);
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();