实验一 使用API函数进行Windows程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wndclass.lpszClassName = lpszClassName;
窗口类的注册
if(!RegisterClass( &wndclass))
{
return FALSE ; //注册失败后返回
}
窗口创建
HWND hwnd ; //定义窗口句柄
char lpszTitle[]= "我的API函数";//窗口标题名
DEFAULT_PITCH|FF_DONTCARE,//字间距和字体系列使用默认值
"楷体_2312" //字体名称
);
SelectObject(hDC,hFont);
char *tout="hello World!";
TextOut(hDC,100,100,tout,strlen(tout));
}
EndPaint(hwnd,&pt);
//窗口采用箭头光标,这种光标是系统预定义图标
wndclass.hCursor = LoadCursor( NULL,IDC_ARROW);
//使用系统定义的白色画刷为背景画刷
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName = NULL ;//窗口中无菜单
300, //字体的粗度
1, //斜体字
1, //有下划线
0, //无删除线
GB2wenku.baidu.com12_CHARSET, //使用GB2312字符集
OUT_DEFAULT_PRECIS,//输出精度为默认精度
CLIP_DEFAULT_PRECIS,//剪裁精度为默认精度
DEFAULT_QUALITY, //输出质量为默认值
break;
case WM_LBUTTONDOWN:
i=1;
InvalidateRect(hwnd, NULL, TRUE);
break;
case WM_RBUTTONDOWN:
i=2;
InvalidateRect(hwnd, NULL, TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
SelectObject(hDC,hBrush);
//画圆
Ellipse(hDC,100,100,200,200);
}
else if (i==2)
{
hFont=::CreateFont
(20, //字体高度
0, //由系统根据高宽比选取字体最佳宽度值
0, //文本的倾斜度为0,表示水平
0, //字体的倾斜度为0
wndclass.cbWndExtra= 0 ;//窗口实例无扩展
wndclass.hInstance = hInstance ;//当前实例句柄
//窗口的最小化图标为缺省图标,这种图标是系统预定义图标
wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
{
TranslateMessage( &Msg) ;
DispatchMessage( &Msg) ;
}
消息映射函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT pt;
HDC hDC;
break;
default://缺省时采用系统消息缺省处理函数
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
点击鼠标左键的结果:
点击鼠标右键:
出现的问题
对于消息映射函数不是太熟悉,无法得到结果。
error C2061: syntax error : identifier 'intnCmdShow'
HBRUSH hBrush;
HFONT hFont;
switch(message)
{
case WM_PAINT:
hDC=BeginPaint(hwnd,&pt);
if (i==1)
{
//得到系统的绿色画刷
hBrush=CreateSolidBrush(RGB(0,255,0));
//把画刷选入设备环境句柄
执行cl.exe时出错
对问题的解决方法
经过查阅资料,理解了鼠标左右键的触发步骤,进而解决了问题。
Windows
1、建立Windows框架及源文件。
2、建立Windows窗口,初始化并显示。
3、建立消息循环函数。
NULL,//此窗口无父窗口
NULL,//此窗口无主菜单
hInstance,//创建此窗口的应用程序的当前句柄
NULL) ;//不使用该值
窗口显示
ShowWindow( hwnd, nCmdShow);//显示窗口
UpdateWindow(hwnd);//绘制用户区
消息循环
while( GetMessage(&Msg, NULL, 0, 0))
F:\编程\可视化编程\实验一\1.cpp(7) : error C2731: 'WinMain' : function cannot be overloaded
F:\编程\可视化编程\实验一\1.cpp(6) : see declaration of 'WinMain'
F:\编程\可视化编程\实验一\1.cpp(48) : error C2065: 'nCmdShow' : undeclared identifier
hwnd=CreateWindow(
lpszClassName,//窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口的高和宽为缺省值
窗口类的初始化
WNDCLASS wndclass ;
char lpszClassName[] = "简单窗口";//窗口类名
wndclass.style = 0;//窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc ;//窗口处理函数为WndProc
wndclass.cbClsExtra= 0 ;//窗口类无扩展
实验一使用API函数进行Windows程序设计
实验目的
了解Windows应用程序的一般步骤,使用API函数进行应用程序设计。
实验环境
硬件环境:奔3以上处理器,512MB以上内存空间
软件环境:windows2000以上操作系统,VC6.0编译环境。
实验内容与完成情况(附上有价值的实验步骤和结果)
(一)窗口的初始化
窗口类的注册
if(!RegisterClass( &wndclass))
{
return FALSE ; //注册失败后返回
}
窗口创建
HWND hwnd ; //定义窗口句柄
char lpszTitle[]= "我的API函数";//窗口标题名
DEFAULT_PITCH|FF_DONTCARE,//字间距和字体系列使用默认值
"楷体_2312" //字体名称
);
SelectObject(hDC,hFont);
char *tout="hello World!";
TextOut(hDC,100,100,tout,strlen(tout));
}
EndPaint(hwnd,&pt);
//窗口采用箭头光标,这种光标是系统预定义图标
wndclass.hCursor = LoadCursor( NULL,IDC_ARROW);
//使用系统定义的白色画刷为背景画刷
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName = NULL ;//窗口中无菜单
300, //字体的粗度
1, //斜体字
1, //有下划线
0, //无删除线
GB2wenku.baidu.com12_CHARSET, //使用GB2312字符集
OUT_DEFAULT_PRECIS,//输出精度为默认精度
CLIP_DEFAULT_PRECIS,//剪裁精度为默认精度
DEFAULT_QUALITY, //输出质量为默认值
break;
case WM_LBUTTONDOWN:
i=1;
InvalidateRect(hwnd, NULL, TRUE);
break;
case WM_RBUTTONDOWN:
i=2;
InvalidateRect(hwnd, NULL, TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
SelectObject(hDC,hBrush);
//画圆
Ellipse(hDC,100,100,200,200);
}
else if (i==2)
{
hFont=::CreateFont
(20, //字体高度
0, //由系统根据高宽比选取字体最佳宽度值
0, //文本的倾斜度为0,表示水平
0, //字体的倾斜度为0
wndclass.cbWndExtra= 0 ;//窗口实例无扩展
wndclass.hInstance = hInstance ;//当前实例句柄
//窗口的最小化图标为缺省图标,这种图标是系统预定义图标
wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
{
TranslateMessage( &Msg) ;
DispatchMessage( &Msg) ;
}
消息映射函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT pt;
HDC hDC;
break;
default://缺省时采用系统消息缺省处理函数
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
点击鼠标左键的结果:
点击鼠标右键:
出现的问题
对于消息映射函数不是太熟悉,无法得到结果。
error C2061: syntax error : identifier 'intnCmdShow'
HBRUSH hBrush;
HFONT hFont;
switch(message)
{
case WM_PAINT:
hDC=BeginPaint(hwnd,&pt);
if (i==1)
{
//得到系统的绿色画刷
hBrush=CreateSolidBrush(RGB(0,255,0));
//把画刷选入设备环境句柄
执行cl.exe时出错
对问题的解决方法
经过查阅资料,理解了鼠标左右键的触发步骤,进而解决了问题。
Windows
1、建立Windows框架及源文件。
2、建立Windows窗口,初始化并显示。
3、建立消息循环函数。
NULL,//此窗口无父窗口
NULL,//此窗口无主菜单
hInstance,//创建此窗口的应用程序的当前句柄
NULL) ;//不使用该值
窗口显示
ShowWindow( hwnd, nCmdShow);//显示窗口
UpdateWindow(hwnd);//绘制用户区
消息循环
while( GetMessage(&Msg, NULL, 0, 0))
F:\编程\可视化编程\实验一\1.cpp(7) : error C2731: 'WinMain' : function cannot be overloaded
F:\编程\可视化编程\实验一\1.cpp(6) : see declaration of 'WinMain'
F:\编程\可视化编程\实验一\1.cpp(48) : error C2065: 'nCmdShow' : undeclared identifier
hwnd=CreateWindow(
lpszClassName,//窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口的高和宽为缺省值
窗口类的初始化
WNDCLASS wndclass ;
char lpszClassName[] = "简单窗口";//窗口类名
wndclass.style = 0;//窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc ;//窗口处理函数为WndProc
wndclass.cbClsExtra= 0 ;//窗口类无扩展
实验一使用API函数进行Windows程序设计
实验目的
了解Windows应用程序的一般步骤,使用API函数进行应用程序设计。
实验环境
硬件环境:奔3以上处理器,512MB以上内存空间
软件环境:windows2000以上操作系统,VC6.0编译环境。
实验内容与完成情况(附上有价值的实验步骤和结果)
(一)窗口的初始化