-

- 加为好友
- 发送私信
- 在线聊天
frydsh
- 等级:

- 可用分等级:
- 总技术专家分:
- 总技术专家分排名:
|
| 发表于:2008-07-22 13:47:362楼 得分:0 |
我一直被这个问题困扰着,而且我发现,只要逻辑坐标系不是x由左向右,y由右向左都不能用LOEGLISH这个函数绘制矩形.下面是我的程序,请高手指正. 哦,这个写错了,应该是这样的: #include <windows.h> HINSTANCE hInstance1; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { hInstance1=hInstance; static TCHAR szAppName[] = TEXT ("LineDemo") ; 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 ("Program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow ( szAppName, TEXT ("Line Demonstration"), 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) { HDC hdc ; PAINTSTRUCT ps ; TCHAR szbuffer[90]; RECT rect; HBRUSH brush; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx (hdc, 1,1, NULL) ; SetViewportExtEx (hdc, 1, -1, NULL) ; SetViewportOrgEx(hdc,0,500,NULL); SetRect(&rect,100,100,200,200); //这个坐标是无论怎么换,都没有矩形. brush=CreateHatchBrush (HS_VERTICAL, 0); SetBrushOrgEx(hdc,0,0,NULL); FrameRect(hdc,&rect,brush); //Rectangle(hdc,100,100,200,200);//同样的坐标,为什么这一句可以画出矩形,上一句却不行呢?FrameRect有什么特别之处导致这种现象? EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } | | |
修改
删除
举报
引用
回复
| |