我要在一个窗口中得到一个静态矩形框客户区坐标,
接着在静态矩形框中画条平分线,怎么弄?
getwindowrect(&rect);//得到是屏幕坐标
ddc->lineto(point);//point是客户区坐标
两坐标的原点不同,说一实际画出来的不是在矩形的正中。
试过用screentoclient(&rect)转成客户区坐标
但好像,rect.left=0,rect.top=0;//查了msdn,好像该方法就是做的。
高手教我该怎么做啊
接着在静态矩形框中画条平分线,怎么弄?
getwindowrect(&rect);//得到是屏幕坐标
ddc->lineto(point);//point是客户区坐标
两坐标的原点不同,说一实际画出来的不是在矩形的正中。
试过用screentoclient(&rect)转成客户区坐标
但好像,rect.left=0,rect.top=0;//查了msdn,好像该方法就是做的。
高手教我该怎么做啊
CRect tRct;
this->GetDlgItem(IDC_STATIC1)->GetWindowRect(&tRct);
this->ScreenToClient(&tRct);不过我觉得你的设计思路有问题,就算你找到正确坐标了,也画不上去,因为在父窗口中画的线,会被子窗口(也就是你的静态矩形框)遮住。
Invalidate();UpdateWindow();
就行了。
楼上你有什么好一点的思路
说来体听听啊
//////////////////////
自己定义这个矩形区域,在OnPaint里定义一个客户区的DC,这个DC的大小是客户区的大小。最后把这个DC拷贝到前台DC。
原来是这样写的
CWnd* pwnd = GetDlgItem(IDC_***);
pwnd->GetWindowRect(&rect);
pwnd->ScreenToClient(&rect);
居然转换到客户去坐标是rect.left=rect.top=0
------------------------------------------------------------------
问题就出在pwnd->ScreenToClient(&rect)
这样使得把静态框的屏幕坐标转成静态框的客户坐标,怪不得顶点坐标为0呢
this->ScreenToClent(&rect)//这样才转化成窗口客户区坐标-------------------------
--------------------------
看来细节疏忽不得啊