#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("SysMets1") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
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 ;
}
hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 1"),
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 int cxChar, cxCaps, cyChar ;
HDC hdc ;
PAINTSTRUCT ps ;
RECT rt;
//POINT apt[5]={100,100,100,200,200,300,300,300,400,400};
int i,j;
switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;
//MoveToEx(hdc,100,100,NULL);//若是没有指定起始位置,那么默认的是从原点(0,0)开始
//LineTo(hdc,500,500);
GetClientRect(hwnd,&rt);
ReleaseDC (hwnd, hdc) ;
return 0 ;case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
/*MoveToEx(hdc,100,100,NULL);
LineTo(hdc,500,300);*//*MoveToEx(hdc,apt[0].x,apt[0].y,NULL);
Polyline(hdc,apt,5);*/
for(i=0;i<rt.right;i+=100)
{
MoveToEx(hdc,i,0,NULL);
LineTo(hdc,i,rt.bottom);
}
for(j=0;j<rt.bottom;j+=100)
{
MoveToEx(hdc,0,j,NULL);
LineTo(hdc,rt.right,j);}
EndPaint (hwnd, &ps) ;
return 0 ;case WM_DESTROY :
PostQuitMessage (0);
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}我是没么这样画不出网格啊?我就是小想在整个屏幕上画网格?求高手解释
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("SysMets1") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
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 ;
}
hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 1"),
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 int cxChar, cxCaps, cyChar ;
HDC hdc ;
PAINTSTRUCT ps ;
RECT rt;
//POINT apt[5]={100,100,100,200,200,300,300,300,400,400};
int i,j;
switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;
//MoveToEx(hdc,100,100,NULL);//若是没有指定起始位置,那么默认的是从原点(0,0)开始
//LineTo(hdc,500,500);
GetClientRect(hwnd,&rt);
ReleaseDC (hwnd, hdc) ;
return 0 ;case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
/*MoveToEx(hdc,100,100,NULL);
LineTo(hdc,500,300);*//*MoveToEx(hdc,apt[0].x,apt[0].y,NULL);
Polyline(hdc,apt,5);*/
for(i=0;i<rt.right;i+=100)
{
MoveToEx(hdc,i,0,NULL);
LineTo(hdc,i,rt.bottom);
}
for(j=0;j<rt.bottom;j+=100)
{
MoveToEx(hdc,0,j,NULL);
LineTo(hdc,rt.right,j);}
EndPaint (hwnd, &ps) ;
return 0 ;case WM_DESTROY :
PostQuitMessage (0);
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}我是没么这样画不出网格啊?我就是小想在整个屏幕上画网格?求高手解释
解决方案 »
- 如何多文档框架程序中创建的对话框只在本进程中前端显示
- CHtmlview的Naviage刷新网页的问题
- obj文件问题-值得研究(高手请进)
- MFC的2个基础的问题?
- 在多线程下访问数据库时出错,
- 如何获得局域网内的所有计算机的IP和Mac地址呀?
- 如何在Dlg上添加一个ComboBoxEx?? Controls上面只有ComboBox
- TerminateProcess杀死某些进程(应用程序,非系统进程)时会导致系统(WIN2000)不稳定,死机,甚至不能关机,怎么处理??
- 如何在程序中启动和关闭一个进程?
- 请问如何像ACDSEE中那样可以改变桌面的墙纸风格
- 求助:iterator
- vc6中socket传输结构体的疑难?
warning C4700: local variable 'rt' used without having been initialized
//
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect(hwnd,&rt);
case WM_CREATE:
hdc = GetDC (hwnd) ;
//MoveToEx(hdc,100,100,NULL);//若是没有指定起始位置,那么默认的是从原点(0,0)开始
//LineTo(hdc,500,500);
GetClientRect(hwnd,&rt);
//那么:
static RECT rt;//={0,0,600,300};
2>. static RECT rt;表示静态变量,(有专门的地址放这个值),在WM_CREATE(第一次被调用)赋值后就可以在后序的调用中使用。
3>.如果没有static则变量在堆栈中,你并没有使用第一次被调用赋的值,所以第一次退出后,这个值就消失了,
4>.等到WM_PAINT时rt又在堆栈产生中,但你没赋值。