第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语言函数编写对话框之一直接实践相关推荐

  1. c语言设置字体时调用对话框,三、Windows通用对话框—改变字体

    我们将在第十七章`详细讨论字体,但那些都不能代替通用对话框函数来选择字体. 在WM_CREATE消息处理期间,POPFONT.C中的POPPAD呼叫PopFontInitialize.这个函数取得一个 ...

  2. [css] 设置字体时为什么建议设置替换字体?

    [css] 设置字体时为什么建议设置替换字体? 这是由于网站用户的浏览设备不同,可能并不支持或没有安装你所设置的字体. 这时候就会自动使用替换字体来对网页进行一个展示. 设置替换字体可以尽可能保证所有 ...

  3. android 英文语言设置字体,修改安卓ROM默认语言方法

    修改安卓ROM默认语言方法 (2012-06-06 19:29:41) 标签: 安卓 默认语言 中文 手机博客 安卓Android手机的ROM目前主要有三大类: ①官方发布的正版: ②民间开发团队发布 ...

  4. android 英文语言设置字体,Android中通过typeface设置字体-Go语言中文社区

    在网上跑图几个小时,终于总结完. 行吧行吧,发车-- 开发过程中,布局文件中指定仅限于系统自带的四种字体(android Studio 3.0.1),就如: 嫌丑都不喜欢?去下载字体包吧我是免费商用字 ...

  5. c语言设置程序的优先级,stm32程序中涉及到c语言优先级

    遇到的问题:RxMessage->StdId = (u32)0x000007FF & (CAN->sFIFOMailBox[FIFONumber].RIR >> 21) ...

  6. 计算机桌面成英文怎样变成中文版,怎样把电脑语言设置成英文

    现在国内绝大多数电脑都是中文系统,有些喜欢用英文交流的朋友希望将中文系统变成英文系统,但重装英文系统太麻烦,接下来是小编为大家收集的把电脑语言设置成英文方法,欢迎大家阅读. 怎样把电脑语言设置成英文一 ...

  7. Matlab 2016b 更新及语言设置为英文

    自从换了高分辨率的win10系统之后,matlab始终界面模糊难看.抱怨win10也没什么意义,还是更新matlab正经.根据更新记录,从matlab2015b之后,系统界面开始支持高分辨率屏幕.所以 ...

  8. linux chrome浏览器设置字体

    由于firefox对flash的支持太让人不爽了,玩网页游戏更是让人纠结,于是装了个chrome浏览器. 安装好过后,打开网页,字体真的是让人受不了,扁扁的楷体,暗淡的让人心情压抑,时不时还出现几个繁 ...

  9. centos linux 修改系统默认语言设置,centos怎么更改语言设置为中文

    centos怎么更改语言设置为中文,语言包,中文,简体中文,视频教程,就会 centos怎么更改语言设置为中文 易采站长站,站长之家为您整理了centos怎么更改语言设置为中文的相关内容. 查看系当前 ...

最新文章

  1. C++类的案例(一)
  2. 傲游5里保存的网址,在傲游4不能同步?外加几句吐槽
  3. excel行转列_excel统计函数:应用广泛的动态统计之王OFFSET(上)
  4. Google Dremel数据模型详解(下)
  5. 分享大厂分布式唯一ID设计方案,快来围观
  6. Jboss AS7 的一些配置备忘
  7. lock和synchronized的同步区别与选择
  8. 用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址
  9. 线粒体和叶绿体的基因组特点_叶绿体和线粒体基因组的组装研究
  10. Android Studio 手动创建活动(Activity) 第一行代码 第二章
  11. UHF超高频RFID纸质电子标签与树莓派通信
  12. 快速批量微信dat格式转换为jpg
  13. 《CISP》(三)信息安全管理
  14. 首师大附中互测题:99999999海岛帝国后传:算法大会【D001】
  15. 计算机专业笔记本硬盘256G,老笔记本重获新生 东芝256G固态硬盘体验
  16. 做个大气的女人,不应该自满
  17. flutter 实现切屏横竖屏切换
  18. SQL人的优势:实战大数据开发10分钟入门
  19. 数字图像处理的研究方法
  20. JS001-JS数据类型

热门文章

  1. 企业上云规划与云原生环境设计
  2. Censored! POJ - 1625 AC自动机+大数DP
  3. java 新特性-TWR(Try-with-resources)
  4. Linux 磁盘动态扩容 PVM(转载)
  5. github的Whoa there!问题
  6. html手机打不开是什么意思,html是什么意思
  7. 记录关于监听HDMI插拔广播
  8. YTU OJ-1329: 手机尾号评分
  9. vscode配置远程连接失败:过程试图写入的管道不存在(已解决)
  10. AcrelCloud-9500电瓶车充电桩收费平台在公共场所中的应用