实验 1
实验目的和要求
Windows 编程基础
PART 第
1 部分
创建一个 Win32 应用程序 Ex_SDK,在程序中构造一个编辑框控件和一个按钮。编辑 框用于输入一元二次方程的系数,各系数之间用逗号分隔,当单击“计算”按钮,获取方 程系数,然后将求得的根通过 TextOut 显示在窗口客户区中。
实验准备和说明
(1)具备知识:简单的 SDK 编程基础。 (2)准备本次上机所需要的程序。 (3)创建本次实验工作文件夹“…\Visual C++程序\实验\实验 1”
实验内容和步骤
1.启动 Visual C++ 6.0 . 打开计算机,启动 Visual C++ 6.0 系统。 2.创建工程并添加代码 . ① 选择“文件”→“新建”菜单命令,打开应用程序向导,显示出“新建”对话框。 单击“工程”标签,从列表框中选中 Win32 Application(Win32 应用程序)项。在工程名 称框中输入 Win32 应用程序项目名称 Ex_SDK。单击浏览按钮...将工程定位到文件夹 “…\Visual C++ 6.0 程序\实验\实验 1” 。 ② 单击“确定”按钮继续。在向导第一步对话框中,选中 An empty project(一个空 的工程)项。单击“完成”按钮,系统将显示 AppWizard(应用
程序向导)的创建信息, 单击“确定”按钮,
系统将自动创建此应用程序。 ③ 再次选择“文件”→“新建”菜单命令,显示出“新建”对话框。单击“文件” 标签,在左边的列表框中选择 C++ Source File 项,在右边的“文件”下的编辑框中输入 Ex_SDK.cpp,单击“确定”按钮。 ④ 在打开的
文档窗口中输入下面的代码:
#include
#include #include // 求一元二次方程的根,函数返回根的个数 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; // 无根
2
Visual C++实训
deltasqrt = sqrt(delta); if (a!=0.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 lpCmdLine, int nCmdShow) { HWND MSG WNDCLASS hwnd ; // 窗口句柄 msg ; // 消息 wndclass ; // 窗口类 = CS_HREDRAW | CS_VREDRAW ; = WndProc ; =0; =0; = hInstance ; = LoadIcon (NULL, IDI_APPLICATION) ; = LoadCursor (NULL, IDC_ARROW) ; = (HBRUSH) GetStockObject (WHITE_BRUSH) ; = NULL ; = "SDKWin"; // 窗口类名 // 注册窗口 return 0 ; // 窗口过程
wndclass.style wndclass.lpfnWndProc wndclass.cbClsExtra wndclass.cbWndExtra wndclass.hInstance wndclass.hIcon wndclass.hCursor wndclass.hbrBackground wndclass.lpszMenuName wndclass.lpszClassName {
if (!RegisterClass (&;wndclass))
MessageBox (NULL, "窗口注册失败!", "HelloWin",
0) ; } // 创建窗口 hwnd = CreateWindow ("SDKWin", "实验1——Windows编程基础", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, nCmdShow) ;
// 窗口类名 // 窗口标题 // 窗口样式 // 窗口最初的 x 位置 // 窗口最初的 y 位置 // 窗口最初的 x 大小 // 窗口最初的 y 大小 // 父窗口句柄 // 窗口菜单句柄 // 应用程序实例句柄 // 创建窗口的参数 // 显示窗口
实验 1
Windows 编程基础
3
UpdateWindow (hwnd) ; while (GetMessage (&;msg, NULL, 0, 0)) TranslateMessage (&;msg) ; DispatchMessage (&;msg) ; } return msg.wParam ; {
// 更新窗口,包括窗口的客户区 // 转换某些键盘消息 // 将消息发送给窗口过程,这里是WndProc
} LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static HWND hwndB