鱼C论坛

 找回密码
 立即注册
查看: 3972|回复: 6

帮忙看看这个小程序是什么问题

[复制链接]
发表于 2012-10-29 21:38:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我发现LoadMenu函数一只返回0 ,没有是程序和资源文件挂钩  ,帮忙看看什么原因啊
win32.c
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK wndproc(HWND,UINT,WPARAM,LPARAM);
HMENU hmenu=0;
HMENU hsubmenu=0;
HWND hwnd;
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,
       LPSTR lpCmdLine,int nCmdShow)
{
char classname[]="myclass";
char a[]="win32";
HACCEL accelerator;
MSG msg;
WNDCLASSEX wndclass;
accelerator=LoadAccelerators(hinstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));
hmenu=LoadMenu(hinstance,MAKEINTRESOURCE(IDR_MENU1));
wndclass.cbSize=sizeof(wndclass);
wndclass.style=CS_VREDRAW | CS_HREDRAW;
wndclass.lpfnWndProc=wndproc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=NULL;
wndclass.hCursor=NULL;
wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=classname;
wndclass.hIconSm=NULL;
if(!RegisterClassEx(&wndclass))
  MessageBox(NULL,TEXT("窗口注册失败!"),TEXT(a),MB_OK);
hwnd=CreateWindowEx(WS_EX_STATICEDGE,classname,a,WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,hmenu,hinstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,hwnd,0,0))
{
  if(!TranslateAccelerator(hwnd,accelerator,&msg))
  {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
  }
}
return msg.wParam;
}
DisplayMenuItem(WPARAM command)
{
char szBuf[256];
wsprintf(szBuf,"你选择了菜单命令:%08x",command);
MessageBox(hwnd,szBuf,"win32",MB_OK);
}
quit()
{
DestroyWindow(hwnd);
PostQuitMessage(0);
}
LRESULT CALLBACK wndproc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
int tiem=0,i=0;
POINT point;
HMENU hsysmenu;
switch(message)
{
case WM_CREATE:
  hsubmenu=GetSubMenu(hmenu,1);
  hsysmenu=GetSystemMenu(hwnd,FALSE);
  AppendMenu(hsysmenu,MF_SEPARATOR,0,NULL);
  AppendMenu(hsysmenu,0,ID_MENUITEM40016,"帮助");
  AppendMenu(hsysmenu,0,ID_MENUITEM40017,"关于本程序");
  return 0;
case WM_SYSCOMMAND:
  i=wparam;
  i=LOWORD(i);
  if(i==ID_MENUITEM40016 || i==ID_MENUITEM40017)
   DisplayMenuItem(wparam);
  else
   DefWindowProc(hwnd,message,wparam,lparam);
case WM_COMMAND:
  i=wparam;
  i=LOWORD(i);
  if(i>=ID_MENUITEM40012 && i<=ID_MENUITEM40015)
  {
   tiem=message;
   message=GetMenuState(hmenu,tiem,MF_BYCOMMAND);
   if(message==MF_CHECKED)
    message=MF_UNCHECKED;
   else
    message=MF_CHECKED;
   CheckMenuItem(hmenu,tiem,message);
  }
  if(i>=ID_MENUITEM40008 && i<=ID_MENUITEM40011)
  {
   CheckMenuRadioItem(hmenu,ID_MENUITEM40008,ID_MENUITEM40011,message,MF_BYCOMMAND);
  }
  if(message==ID_MENUITEM40003)
  {
   quit();
  }
   return 0;
  
case WM_RBUTTONDOWN:
  GetCursorPos(&point);
  TrackPopupMenu(hsubmenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
  return 0;
case WM_CLOSE:
  quit();
  return 0;
default:
return DefWindowProc(hwnd,message,wparam,lparam);
}
return 0;
}


win32.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#include "afxres.h"
/
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU1 MENU DISCARDABLE
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "打开文件(O)...",              ID_MENUITEM40001
        MENUITEM "关闭文件(C)...",              ID_MENUITEM40002
        MENUITEM SEPARATOR
        MENUITEM "退出(X)",                     ID_MENUITEM40003
    END
    POPUP "查看(&v)"
    BEGIN
        MENUITEM "文字(F)...\tAlt+F",           ID_MENUITEM40004
        MENUITEM "背景色(F)... \tCtrl+Alt+B",   ID_MENUITEM40005
        MENUITEM SEPARATOR
        MENUITEM "被禁止的菜单项",              ID_MENUITEM40006, INACTIVE
        MENUITEM "被灰化的菜单项",              ID_MENUITEM40007, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "大图标(G)",                   ID_MENUITEM40008
        MENUITEM "小图标(M)",                   ID_MENUITEM40009
        MENUITEM "列表(L)",                     ID_MENUITEM40010
        MENUITEM "详细资料(D)",                 ID_MENUITEM40011
        POPUP "工具栏"
        BEGIN
            MENUITEM "标准按钮(S)",                 ID_MENUITEM40012
            MENUITEM "文字标签(C)",                 ID_MENUITEM40013
            MENUITEM "命令栏(I)",                   ID_MENUITEM40014
        END
        MENUITEM "状态栏(U)",                   ID_MENUITEM40015
    END
    POPUP "帮助(&H)", HELP
    BEGIN
        MENUITEM "帮助主题(H)\tF1",             ID_MENUITEM40016
        MENUITEM SEPARATOR
        MENUITEM "关于本程序(A)...",            ID_MENUITEM40017
    END
END

/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_ACCELERATOR1 ACCELERATORS MOVEABLE PURE
BEGIN
    "B",            ID_MENUITEM40005,       VIRTKEY, CONTROL, ALT, NOINVERT
    "F",            ID_MENUITEM40004,       VIRTKEY, CONTROL, NOINVERT
    VK_F1,          ID_MENUITEM40016,       VIRTKEY, NOINVERT
END

resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by win.rc
//
#define IDR_MENU1                       101
#define IDR_ACCELERATOR1                102
#define ID_MENUITEM40001                40001
#define ID_MENUITEM40002                40002
#define ID_MENUITEM40003                40003
#define ID_MENUITEM40004                40004
#define ID_MENUITEM40005                40005
#define ID_MENUITEM40006                40006
#define ID_MENUITEM40007                40007
#define ID_MENUITEM40008                40008
#define ID_MENUITEM40009                40009
#define ID_MENUITEM40010                40010
#define ID_MENUITEM40011                40011
#define ID_MENUITEM40012                40012
#define ID_MENUITEM40013                40013
#define ID_MENUITEM40014                40014
#define ID_MENUITEM40015                40015
#define ID_MENUITEM40016                40016
#define ID_MENUITEM40017                40017
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        103
#define _APS_NEXT_COMMAND_VALUE         40018
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
帮忙看看什么问题呢?
运行后是这样的
76CEBW`[U62QOA~DZESYJVD.jpg
76CEBW`[U62QOA~DZESYJVD.jpg
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-29 22:03:06 | 显示全部楼层
你狠 ,只能说你狠
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-29 22:54:39 | 显示全部楼层
不要这么多的代码。写关键的就行了,看得头大。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-30 10:30:09 | 显示全部楼层
重点就是 所有获取自愿文件的句柄时,都出错了,都返回了NULL.我使用的是资源ID,也使用了MAKEINTROSOUCE宏,资源没有句柄也就用不了了,在看下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-30 23:50:41 | 显示全部楼层
哥,我直接盲目了,这能是个小程序啊!你还是得慢慢调试去吧!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-31 01:07:42 | 显示全部楼层
额,小程序。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-31 07:48:14 | 显示全部楼层
good                     
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 02:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表