c语言设置字体时调用对话框,第1课用C语言函数编写对话框之一直接实践
第1课 用C语言函数编写对话框之一直接实践
【参考资料:孙鑫VC++教学视频】
学习理论总是有点枯燥,而且也需要耐心,慢慢的去理解;那我们就直接实践,动手完成一个用C语言系统函数(API函数)实现的对话框;
一、实现步骤,总共5个步骤;
★★★★★创建一个完整的窗口需要经过下面四个操作步骤:
1)、设计一个窗口类(其实是一个结构体);如:WNDCLASS wndcls;
就是为这个结构体的各个分量赋值,设计一个窗口;
2)、注册窗口类;
如:RegisterClass(&wndcls);
3)、创建窗口;
如:CreateWindow(),CreateWindowEX();
4)、显示及更新窗口。如:ShowWindow(),UpdateWindow();
5)、消息循环GetMessage从消息队列中获得消息;
二、编程实现
1、建立空工程:win32 Application工程;
2、建立源文件:C++Source文件,不是头文件;
3、加头文件:windows.h, stdio.h;
4、定义主函数:WinMain函数,从msdn中拷贝函数头部;
具体做法:msdn索引中搜索WinMain,出现多个主题,选择Windows User
Interface:Platform SDK;不要选择Windows CE API Reference;
拷贝并修改为:
int WINAPI WinMain(
HINSTANCE
hInstance,
// handle to current instance
HINSTANCE
hPrevInstance, // handle to previous
instance
LPSTR
lpCmdLine,
// command line
int
nCmdShow
// show state
)
{
。。。。。。。。
}
5、主函数的参数暂且不表,后面有时间再补充;
现在我们准备实现主函数体:
//第一步:设计窗口;WndClass,实际上是一个结构体;
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL, IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL, IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
//第二步:注册窗口;
RegisterClass(&wndcls);
//第三步:创建窗口;
HWND hwnd;
hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
//第四步:显示窗口
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//第五步:创建消息循环
MSG msg;
While(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
6、主函数里面已经完成,接下来我们要创建窗口过程函数;
★用switch来处理各种消息;
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar, "char is %d", wParam);
MessageBox(hwnd, szChar,"weixin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked", "weixin", 0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc, 0, 50, "计算机编程语言培训", strlen("计算机编程语言培训"));
ReleaseDC(hwnd, hdc);
break;
case WM_PAINT :
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd, &ps);
TextOut(hDC, 0, 0, "维新培训", strlen("维新培训"));
EndPaint(hwnd, &ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd, "是否真的结束", "weixin", MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam,lParam );
}
可以运行看效果,第一课最感性的直接实践就结束了,当然,对里面有些代码还会存在一些疑问,接下去会慢慢分析【待续】。
c语言设置字体时调用对话框,第1课用C语言函数编写对话框之一直接实践相关推荐
- c语言设置字体时调用对话框,三、Windows通用对话框—改变字体
我们将在第十七章`详细讨论字体,但那些都不能代替通用对话框函数来选择字体. 在WM_CREATE消息处理期间,POPFONT.C中的POPPAD呼叫PopFontInitialize.这个函数取得一个 ...
- [css] 设置字体时为什么建议设置替换字体?
[css] 设置字体时为什么建议设置替换字体? 这是由于网站用户的浏览设备不同,可能并不支持或没有安装你所设置的字体. 这时候就会自动使用替换字体来对网页进行一个展示. 设置替换字体可以尽可能保证所有 ...
- android 英文语言设置字体,修改安卓ROM默认语言方法
修改安卓ROM默认语言方法 (2012-06-06 19:29:41) 标签: 安卓 默认语言 中文 手机博客 安卓Android手机的ROM目前主要有三大类: ①官方发布的正版: ②民间开发团队发布 ...
- android 英文语言设置字体,Android中通过typeface设置字体-Go语言中文社区
在网上跑图几个小时,终于总结完. 行吧行吧,发车-- 开发过程中,布局文件中指定仅限于系统自带的四种字体(android Studio 3.0.1),就如: 嫌丑都不喜欢?去下载字体包吧我是免费商用字 ...
- c语言设置程序的优先级,stm32程序中涉及到c语言优先级
遇到的问题:RxMessage->StdId = (u32)0x000007FF & (CAN->sFIFOMailBox[FIFONumber].RIR >> 21) ...
- 计算机桌面成英文怎样变成中文版,怎样把电脑语言设置成英文
现在国内绝大多数电脑都是中文系统,有些喜欢用英文交流的朋友希望将中文系统变成英文系统,但重装英文系统太麻烦,接下来是小编为大家收集的把电脑语言设置成英文方法,欢迎大家阅读. 怎样把电脑语言设置成英文一 ...
- Matlab 2016b 更新及语言设置为英文
自从换了高分辨率的win10系统之后,matlab始终界面模糊难看.抱怨win10也没什么意义,还是更新matlab正经.根据更新记录,从matlab2015b之后,系统界面开始支持高分辨率屏幕.所以 ...
- linux chrome浏览器设置字体
由于firefox对flash的支持太让人不爽了,玩网页游戏更是让人纠结,于是装了个chrome浏览器. 安装好过后,打开网页,字体真的是让人受不了,扁扁的楷体,暗淡的让人心情压抑,时不时还出现几个繁 ...
- centos linux 修改系统默认语言设置,centos怎么更改语言设置为中文
centos怎么更改语言设置为中文,语言包,中文,简体中文,视频教程,就会 centos怎么更改语言设置为中文 易采站长站,站长之家为您整理了centos怎么更改语言设置为中文的相关内容. 查看系当前 ...
最新文章
- C++类的案例(一)
- 傲游5里保存的网址,在傲游4不能同步?外加几句吐槽
- excel行转列_excel统计函数:应用广泛的动态统计之王OFFSET(上)
- Google Dremel数据模型详解(下)
- 分享大厂分布式唯一ID设计方案,快来围观
- Jboss AS7 的一些配置备忘
- lock和synchronized的同步区别与选择
- 用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址
- 线粒体和叶绿体的基因组特点_叶绿体和线粒体基因组的组装研究
- Android Studio 手动创建活动(Activity) 第一行代码 第二章
- UHF超高频RFID纸质电子标签与树莓派通信
- 快速批量微信dat格式转换为jpg
- 《CISP》(三)信息安全管理
- 首师大附中互测题:99999999海岛帝国后传:算法大会【D001】
- 计算机专业笔记本硬盘256G,老笔记本重获新生 东芝256G固态硬盘体验
- 做个大气的女人,不应该自满
- flutter 实现切屏横竖屏切换
- SQL人的优势:实战大数据开发10分钟入门
- 数字图像处理的研究方法
- JS001-JS数据类型