| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:全局变理与局部变量的问题,关于API编程方面
只看楼主 加入收藏
Mycr
Rank: 1
等 级:新手上路
帖 子:203
专家分:0
注 册:2006-9-18
收藏
 问题点数:0 回复次数:4 
全局变理与局部变量的问题,关于API编程方面

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;

//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
PAINTSTRUCT ps;

static char cUp[]="You had hitted the UP key";
static BOOL nUpKeyDown=FALSE,nShiftKeyDown=FALSE,nCtrlKeyDown=FALSE,nCtrlAKeyDown=FALSE,
nShiftBKeyDown=FALSE;

switch(iMessage)
{
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_UP:
nUpKeyDown=TRUE;
break;
default:
break;
}
}
case WM_KEYUP:
InvalidateRect(hWnd,NULL,FALSE);
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
SetTextColor(hDC,RGB(255,0,0));
if(nUpKeyDown==TRUE)
{
//Rectangle(hDC,0,0,300,200);
TextOut(hDC,0,0,cUp,strlen(cUp));
nUpKeyDown=FALSE;
}
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
}

//初始化窗口
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("WinKeyboard",
"键盘操作例程",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}


////////////////

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;

//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
PAINTSTRUCT ps;

static char cUp[]="You had hitted the UP key";
static BOOL nUpKeyDown=FALSE,nShiftKeyDown=FALSE,nCtrlKeyDown=FALSE,nCtrlAKeyDown=FALSE,
nShiftBKeyDown=FALSE;

switch(iMessage)
{
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_UP:
nUpKeyDown=TRUE;
break;
default:
break;
}
}
case WM_KEYUP:
InvalidateRect(hWndMain,NULL,FALSE);
break;
case WM_PAINT:
hDC=BeginPaint(hWndMain,&ps);
SetTextColor(hDC,RGB(255,0,0));
if(nUpKeyDown==TRUE)
{
//Rectangle(hDC,0,0,300,200);
TextOut(hDC,0,0,cUp,strlen(cUp));
nUpKeyDown=FALSE;
}
EndPaint(hWndMain,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
}

始化窗口
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("WinKeyboard",
"键盘操作例程",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}


hWndMain是全局变量
为什么我用HWND hWnd义的局部变量,也可以用于全局呢?
在//初始化窗口
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
hWndMain=hWnd;

为什么在
//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)

case WM_KEYUP:
InvalidateRect(hWnd,NULL,FALSE);
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
SetTextColor(hDC,RGB(255,0,0));
if(nUpKeyDown==TRUE)
{
//Rectangle(hDC,0,0,300,200);
TextOut(hDC,0,0,cUp,strlen(cUp));
nUpKeyDown=FALSE;
}
EndPaint(hWnd,&ps);
break;

我很窗口句柄hWnd也是对的呢,而不是只能用全局变量句柄hWndMain?

[此贴子已经被作者于2006-11-9 11:06:56编辑过]

搜索更多相关主题的帖子: API 变量 全局 局部 
2006-11-09 11:05
radcat
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:306
专家分:45
注 册:2006-9-12
收藏
得分:0 
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)

2006-11-09 11:41
Mycr
Rank: 1
等 级:新手上路
帖 子:203
专家分:0
注 册:2006-9-18
收藏
得分:0 

if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;

hWndMain=hWnd; 那这句有什么用呢?


2006-11-09 16:09
radcat
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:306
专家分:45
注 册:2006-9-12
收藏
得分:0 
WM_PAINT中的可直接用hWnd
hWndMain没用,为什么要定一个全局变量呢?你始终用不到它

2006-11-10 08:41
Mycr
Rank: 1
等 级:新手上路
帖 子:203
专家分:0
注 册:2006-9-18
收藏
得分:0 
明白

2006-11-13 09:55
快速回复:全局变理与局部变量的问题,关于API编程方面
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014590 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved