主题:各位高手,帮帮忙!
fcc1234
[专家分:20] 发布于 2005-11-10 19:20:00
我做了一个界面,添加了菜单资源,程序可以运行,但是看不到菜单,只有界面,为什么,好想少了mak后缀的文件,怎么解决?我是初学者,求好心人帮忙.谢谢!
回复列表 (共4个回复)
沙发
jhkdiy [专家分:1620] 发布于 2005-11-11 10:28:00
你贴出你的代码给大家看看就知道什么问题了。
板凳
fcc1234 [专家分:20] 发布于 2005-11-12 10:44:00
#include<windows.h>
#include"resource.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE hInst;
TCHAR szAppName[] = TEXT("PopMenu");
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbClsExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL, szAppName);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
if(!RegisterClass(&wndclass))
return FALSE;
hInst = hInstance;
hwnd = CreateWindow(szAppName, TEXT("Popup Menu Demonstration"),
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;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HMENU hMenu;
static int idColor[5] = {WHITE_BRUSH, LTGRAY_BRUSH,GRAY_BRUSH,
DKGRAY_BRUSH, BLACK_BRUSH};
static int iSelection = IDM_BKGND_WHITE;
POINT point;
switch(message)
{
case WM_CREATE:
hMenu = LoadMenu(hInst, szAppName);
hMenu = GetSubMenu(hMenu, 0);
return 0;
case WM_RBUTTONUP:
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
ClientToScreen(hwnd, &point);
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON,point.x, point.y,
0, hwnd, NULL);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_FILE_NEW:
case IDM_FILE_OPEN:
case IDM_FILE_SAVE:
case IDM_EDIT_CUT:
case IDM_EDIT_COPY:
case IDM_EDIT_PASTE:
MessageBeep(0);
return 0;
case IDM_BKGND_WHITE:
case IDM_BKGND_LTGRAY:
case IDM_BKGND_GRAY:
case IDM_BKGND_DKGRAY:
case IDM_BKGND_BLACK:
CheckMenuItem(hMenu, iSelection,MF_UNCHECKED);
iSelection = LOWORD(wParam);
CheckMenuItem(hMenu,iSelection,MF_CHECKED);
SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)
GetStockObject
(idColor[LOWORD(wParam) - IDM_BKGND_WHITE]));
InvalidateRect(hwnd, NULL, TRUE);
return 0;
case IDM_APP_ABOUT:
MessageBox(hwnd, TEXT("Popup Menu DemoNstration Program\n"),
szAppName, MB_ICONINFORMATION | MB_OK);
return 0;
case IDM_APP_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
case IDM_APP_HELP:
MessageBox(hwnd, TEXT("学习编程太难了!加油呀!"),
szAppName, MB_ICONEXCLAMATION |MB_OK);
return 0;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
3 楼
fcc1234 [专家分:20] 发布于 2005-11-12 10:44:00
这是源代码,请帮忙!
4 楼
yjh4866 [专家分:100] 发布于 2007-06-04 11:05:00
hMenu = LoadMenu(hInst, szAppName);要在 CreateWindow 前, CreateWindow里有个参数就是管菜单的,用hMenu填充就行了。
我来回复