LRESULT CALLBACK WinProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(uMsg)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_BOTTOM) ;
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}这是一段代码,RECT rect,这里定义了一个rect结构,GetClientRect(hwnd,&rect);这里用获取客户区坐标函数,获得了这个结构,那么这个rect的值是什么。还有一直在说客户区,客户区到底是什么,
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(uMsg)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_BOTTOM) ;
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}这是一段代码,RECT rect,这里定义了一个rect结构,GetClientRect(hwnd,&rect);这里用获取客户区坐标函数,获得了这个结构,那么这个rect的值是什么。还有一直在说客户区,客户区到底是什么,
==============
rect里面是客户区的坐标,也就是客户区的上、下、左、右的位置。还有一直在说客户区,客户区到底是什么
==============
客户区是指窗口菜单栏以下的部分。
============
对的如果是这样的话,那么GetClient得到的客户区的坐标是不是随机的,也就是我运行程序的时候,生成的窗口在哪里,GetClientRect就得到了这个客户区的坐标。
===========
不对,客户区坐标是相对于窗口左上角而言的,所以你得到的rect.left和rect.top都是0,而rect.right是客户区宽度,rect.bottom是客户区的高度。
=================
这也就是说把运行出来的窗口客户区赋值给了rect,然后 DrawText 就再这个rect矩形里输出文字 对吧
================
应该是RECT rect的范围太小了的原因吧,你换别的数试试
===
如果Bottom
Left
Right
Top 给这几个赋值,Bottom Left 是坐标点, Right Top 是宽度和高度?譬如说这个RECT rect={35.68,98,56};前两个表示的是坐标的位置,那么后两个是宽度和高度的具体值还是说也是一个坐标点
RECT的四个成员中,left代表矩形的左边,right代表右边,top代表顶部,bottom代表了底部。
由于一般情况下,水平方向的正方向是向右的,竖直方向的正方向是向下的,所以一个具体的RECT变量中,right当然要大于left,bottom当然要大于top.
=====
窗口客户区中,水平方向表示X轴,竖直方向表示Y值,知道了一个点的x和Y的坐标才能真正确定一个点,为什么rect中, rect={35.68,98,56};这样就确定了一个矩形,而不是rect={{12,35},{23,56},{,},{,}}这样去赋值。
你看一下MSDN中关于RECT的定义就知道了。
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT;