特怪问题:变量声明换了位置后就会出现问题?

guest 2001-03-03 11:26:00
我知道这个问题听起来十分的幼稚,但确实是这样

我有一个小程序
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("ClipText") ;
HACCEL hAccel ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
//*****************************
// 在这声明没有问题
HMENU hmnu;

//*****************************

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

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
//*****************************
//在这声明编译时出错
// HMENU hmnu;
//*****************************

hmnu=LoadMenu(hInstance,szAppName);
hwnd = CreateWindow (szAppName, szCaption,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, hmnu, hInstance, NULL) ;

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

hAccel = LoadAccelerators (hInstance, szAppName) ;

while (GetMessage (&msg, NULL, 0, 0))
{
if (!TranslateAccelerator (hwnd, hAccel, &msg))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}
return msg.wParam ;
}

出错的提示为:
error C2275: 'HMENU' : illegal use of this type as an expression
see declaration of 'HMENU'

C++支持及时声明变量
这不应该是语言本身的问题
我认为问题或是在编译器,或是在HMENU申明本身
还有或是我的编译器有问题

不知各位对此问题有何高见
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
guest 2001-03-03
  • 打赏
  • 举报
回复
to songshi
这与文件名有关系吗?
我的文件名是cpp
Kevin_qing 2001-03-03
  • 打赏
  • 举报
回复
一定是用的c扩展名

因为C语言的规定必须在函数头定义所有的变量,所以你在中间定义会编译错误
songshi 2001-03-03
  • 打赏
  • 举报
回复
你的文件名是不是*.c 如果是的话就改成*.cpp
yangsj 2001-03-03
  • 打赏
  • 举报
回复
我想问题在于你没有对他进行真确的使用,而不关声明在哪的问题,最好去看一下有关他的声明 和API的具体使用方法。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧