问题描述
如果可以的话,我有2个问题?..
1)我尝试将GetWindowText与&至变量一起使用,但在初始化它们时它们仍然为0时没有任何反应..我通过使用WGPrintf(hDC,600,670,%f", F);但它打印了0.00000,所以它没有变化
2)我需要使用绘制曲线按钮来绘制曲线,然后单击它,所以我认为我必须在情况wm_command时使用绘制fn ...但是当我这样放置时
i have 2 questions if i may?..
1)i tried to use GetWindowText with the variables from &to but nothing happened they still 0 as i initialize them..i made a test to know if tey change or not by using WGPrintf(hDC,600,670,"%f",f); but it printed 0.00000 so it means it didn''t change
2)i need the draw curve button to draw the curve win i click it so i think i must use the draw fn at case wm_command...but when i put it like that
case 1:
{
if(controlEvent==BN_CLICKED)
drawing(hWnd,from,to);
InvalidateRect(hWnd,NULL,FALSE);
break;
}
什么都没出现,所以我该怎么办?
预先谢谢你...
nothing appears so what shal i do???
thank you in advance...
#include "wingui.h"
#include "math.h"
#define PI 3.14
float m,l,f,t,c;
static float from =0 ,to =0 ;
int h,k, r=0,z=10,a=-25;
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
void drawing(HWND hWnd,float f,float t)
{
HDC hDC=GetDC(hWnd);
HPEN holdPen, hPen1;
hPen1 = WGCreatePen (RGB(0,255,0),5,PS_SOLID);
holdPen = (HPEN)SelectObject(hDC,hPen1);
MoveToEx(hDC,74,235,NULL);
if (z<18)
{
do
{
float y = sin(((f-74)*PI/100)*10/z);
LineTo(hDC,f,235-(y*100)*z/10);
f+=1;
} while(f<t);>
}
else
{
do
{
float y = sin(((f-74)*PI/100)*10/17);
LineTo(hDC,f,235-(y*100)*17/10);
f+=1;
} while(f<t);>
}
ReleaseDC(hWnd,hDC);
}
HWND hSecondEdit,hThirdEdit;
LRESULT WINAPI WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ HDC hDC = GetDC(hWnd);
RECT R;
GetClientRect(hWnd, &R);
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
switch(message)
{
case WM_CREATE:
{
SetWindowText(hWnd, "Equation Analyzer");
MoveWindow(hWnd,10,10,1330,720,FALSE);
HWND hButton1,hButton2,hButton3,hButton4, hFirstEdit,hSecondEdit,hThirdEdit,hFourthEdit,hFifthEdit;
hButton1= CreateWindow("Button", "" , WS_CHILD|WS_VISIBLE, 16*width/20, 1*height/12 , 200, 50, hWnd ,(HMENU)(UINT_PTR)1,NULL,NULL);
SetWindowText(hButton1, "Draw Curve");
hButton2 = CreateWindow("Button", "" , WS_CHILD|WS_VISIBLE, 16*width/20 , 2*height/12 , 200, 50, hWnd ,(HMENU)(UINT_PTR)2,NULL,NULL);
SetWindowText(hButton2, "Draw Equation");
hButton3 = CreateWindow("Button", "" , WS_CHILD|WS_VISIBLE, 16*width/20, 3*height/12, 200, 50, hWnd ,(HMENU)(UINT_PTR)3,NULL,NULL);
SetWindowText(hButton3, "Zoom In");
hButton4 = CreateWindow("Button", "" , WS_CHILD|WS_VISIBLE, 16*width/20, 4*height/12, 200, 50, hWnd ,(HMENU)(UINT_PTR)4,NULL,NULL);
SetWindowText(hButton4, "Zoom Out");
hFirstEdit =CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,90,625 ,620,35,hWnd,(HMENU)(UINT_PTR)5,NULL,NULL);
SetWindowText(hFirstEdit,""); //f(x)
hSecondEdit =CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,95,670 ,60,25,hWnd,(HMENU)(UINT_PTR)6,NULL,NULL);
SetWindowText(hSecondEdit,""); //from
hThirdEdit =CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,190,670 ,80,25,hWnd,(HMENU)(UINT_PTR)7,NULL,NULL);
SetWindowText(hThirdEdit,""); //to
hFourthEdit =CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,375,670 ,80,25,hWnd,(HMENU)(UINT_PTR)8,NULL,NULL);
SetWindowText(hFourthEdit,""); //resolution
hFifthEdit =CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,490,670 ,80,25,hWnd,(HMENU)(UINT_PTR)9,NULL,NULL);
SetWindowText(hFifthEdit,""); //x
}
break;
case WM_COMMAND:
{
HDC hDC=GetDC(hWnd);
WORD controlEvent = HIWORD(wParam);
WORD controlID = LOWORD(wParam);
HWND hControl = (HWND)lParam;
switch(controlID)
{
case 1:
{
if(controlEvent==BN_CLICKED)
InvalidateRect(hWnd,NULL,FALSE);
break;
}
case 3:
{
if(controlEvent==BN_CLICKED)
z++;
InvalidateRect(hWnd,NULL,FALSE);
break;
}
case 4:
{
if(controlEvent==BN_CLICKED)
z--;
InvalidateRect(hWnd,NULL,FALSE);
break;
}
case 6:
{
if(controlEvent==EN_CHANGE)
{
char text1[128];
GetWindowText(hSecondEdit,text1,128);
from = atof(text1);
f=from;
WGPrintf(hDC,600,670,"%f",f);
break;
}
}
case 7:
{
if(controlEvent==EN_CHANGE)
{
char text2[128];
GetWindowText(hSecondEdit,text2,128);
to = atof(text2);
t=to;
break;
}
}
}
ReleaseDC(hWnd,hDC);
return 0;
}
case WM_PAINT :
{
HDC hDC=GetDC(hWnd);
HBRUSH holdbrush, hbrush1,hbrush2,hbrush3,hbrush4,hbrush5,hbrush6;
HPEN holdPen, hPen1,hPen2,hPen3,hPen4;
HFONT holdfont, hfont1,hfont2,hfont3,hfont4;
hbrush1 = WGCreateBrush (RGB(0,0,0),HS_SOLID);
hbrush2 = WGCreateBrush (RGB(255,255,255),HS_SOLID);
hbrush3 = WGCreateBrush (RGB(245,194,194),HS_SOLID);
hbrush4 = WGCreateBrush (RGB(255,255,255),HS_NULL);
hbrush5 = WGCreateBrush (RGB(150,150,200),HS_SOLID);
hbrush6 = WGCreateBrush (RGB(0,204,153),HS_SOLID);
hPen1 = WGCreatePen (RGB(0,255,0),5,PS_SOLID);
hPen2 = WGCreatePen (RGB(150,150,150),1,PS_SOLID);
hPen3 = WGCreatePen (RGB(150,150,150),3,PS_SOLID);
hPen4 = WGCreatePen (RGB(200,200,200),3,PS_SOLID);
hfont1 =WGCreateFont ("Calibri",15,FS_BOLD,-600);
hfont2 =WGCreateFont ("Calibri",15,FS_BOLD,0);
hfont3 =WGCreateFont ("New Times Roman",16,FS_ITALIC|FS_UNDERLINE,0);
hfont4 =WGCreateFont ("New Times Roman",20,FS_ITALIC|FS_BOLD,0);
holdbrush = (HBRUSH)SelectObject(hDC,hbrush3);
Rectangle(hDC,0,0,10000,4500);
SelectObject(hDC,hbrush1);
Rectangle(hDC,30,30,1010,455);
SelectObject(hDC,hbrush5);
Rectangle(hDC,90,470,710,615);
SelectObject(hDC,hbrush1);
SetBkMode(hDC, TRANSPARENT);
WGPrintf(hDC,10,525,"Equation");
WGPrintf(hDC,40,625,"F(X)");
WGPrintf(hDC,40,670,"From");
WGPrintf(hDC,160,670,"To");
WGPrintf(hDC,275,670,"Resolution");
WGPrintf(hDC,460,670,"x=");
holdPen = (HPEN)SelectObject(hDC,hPen2);
for(int i =70;i<width-400;i> {
for( int h =60;h<400;h=h+30)
{
Rectangle(hDC,i,h,i+35,h+30);
}
}
SelectObject(hDC,hPen3);
MoveToEx(hDC,70,60,NULL);
LineTo(hDC,980,60);
MoveToEx(hDC,70,420,NULL);
LineTo(hDC,980,420);
MoveToEx(hDC,70,60,NULL);
LineTo(hDC,70,420);
MoveToEx(hDC,980,60,NULL);
LineTo(hDC,980,420);
k=0;
for(int i=80;i<=1015;i=i+35)
{
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC,RGB(225,200,0));
SelectObject(hDC,hfont1);
WGPrintf(hDC,i,420,"%d",10*k/z);
k+=5;
}
m=0.24;
for(int i=50;i<=410;i=i+30)
{
SetTextColor(hDC,RGB(225,200,0));
SelectObject(hDC,hfont2);
WGPrintf(hDC,40,i,"%.2f",10*m/z);
m-=0.02;
}
drawing(hWnd,f,t);
DeleteObject(hbrush1);
DeleteObject(hbrush2);
DeleteObject(hbrush3);
DeleteObject(hbrush4);
DeleteObject(hbrush5);
DeleteObject(hbrush6);
DeleteObject(hPen1);
DeleteObject(hPen2);
DeleteObject(hPen3);
DeleteObject(hPen4);
DeleteObject(hfont1);
DeleteObject(hfont2);
DeleteObject(hfont3);
ReleaseDC(hWnd,hDC);
break;
}
}
return WGDefaultWindowProc(hWnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
return WGCreateMainWindow(hInstance, nCmdShow, WndProc);
}
推荐答案
这篇关于图形用户界面2010中的gui绘图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!