You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.7 KiB

#include<windows.h>
#include<math.h>
#include<stdio.h>
int GetRoot(float a,float b,float c,double *root){
double delta,deltasqrt;
delta = b * b - 4.0 * a * c;
if(delta < 0.0) return 0;
deltasqrt = sqrt(delta);
if(a != 0){
root[0] = (-b + deltasqrt)/(2.0 * a);
root[1] = (-b - deltasqrt)/(2.0 * a);
}else{
if(b != 0.0) root[0] = root[1] = -c/b;
else return 0;
if(root[0] == root[1]) return 1;
else return 2;
}
}
char str[80];
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nCmdShow){
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 = "SDKWin";
if(!RegisterClass(&wndclass)){
MessageBox(NULL,"REGISTER FAILSED!","HELLO WIN?",0);
return 0;
}
hwnd = CreateWindow("SDKWin",
"1.2.1--Windows API",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
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;
static HWND hwndButton,hwndEdit;
char strEdit[80],strA[3][80],strHint[80];
float a[3];
double root[2];
int i,j,k,m;
switch(message){
case WM_CREATE:
hwndEdit = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,10,60,200,25,hwnd,NULL,NULL,NULL);
hwndButton = CreateWindow("button","<EFBFBD><EFBFBD><EFBFBD>",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240,60,80,25,hwnd,NULL,NULL,NULL);
return 0;
case WM_COMMAND:
if(((HWND)lParam==hwndButton)&&(HIWORD(wParam) == BN_CLICKED)){
GetWindowText(hwndEdit,strEdit,80);
k = 0;m = 0;
for(j = 0;j < 80;j++){
if(strEdit[j] == ','){
k++;m = 0;
}
else{
strA[k][m] = strEdit[j];m++;
}
}
for(i = 0;i < 3;i++){
a[i] = (float)atof(strA[i]);
}
int n = GetRoot(a[0],a[1],a[2],root);
if(n < 1) strcpy(str,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>");
else sprintf(str,"<EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>Ϊ<EFBFBD><EFBFBD>%f,%f",root[0],root[1]);
InvalidateRect(hwnd,NULL,TRUE);
}
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
strcpy(strHint,"input<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD>̵<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м䶺<EFBFBD>ŷָ<EFBFBD>");
TextOut(hdc,10,40,strHint,strlen(strHint));
TextOut(hdc,10,90,str,strlen(str));
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}