使用 Dev-C++开发windows程序界面设计教程

2021-07-29由程序员日记发表于系统教程 浏览21次

很多年前学过C++,但没有怎么使用过。最近有时间,准备重新学起来,以便可以编写自己喜欢的程序。

关于C++编译器,讨论文章已经很多。详细对比的文章也很多,我只是说说我一个初学者的感受。

就我自己而言,当初上学时用的是TC 2.0,DOS时代的C C++编译利器,时代过于久远,除了练习C以外,不知道还能做什么。网上还有可以运行在win 7下的TC 自制版。

VC++,VC++.net 有点庞大,自动生成的代码难以阅读理解。

Code Blocks 也用过,不是很方便。

codelite 使用过,按各个教程配置起来,总是无法编译,一闪而过,卸载换了个版本,仍然如此,看着好像是没有出错的编译完了,但exe 全盘找不到,算了,不折腾了。

最后,找到了DevC++ 6.5版,用起来特别方便,单个文章也能直接编译,不用建项目,对于初学者来说,运行个书上网上的例子特别方便,没有自动生成的那些乱七八糟看不懂的东西。

后来才知道,原来Dev C++ 版本到了5.11后,官方已经放弃了,是中国两位大学老师,教C++的,为了教学,他们接手了 Dev-C++ 的继续更新和开发,做了很多修复和优化工作。这些优化对于初学者很友好,非常适合中国学生练习使用。

熊猫 Dev-C++ 的开发者royqh1979 和 Anbang24,两位都是是教师

我用的是最新版的。6.5 上图。

自己练了几个类似HelloWorld的程序后,试了试能不能用Dev C++开发windows程序,原来,还真的可以,但所有的界面都要使用win32 api 手写。

用搜索大法,完成了这样一个比较简单的界面。

想分析网址,http的比较简单,但https的就比较麻烦。目前只是设计出了界面。

贴几行代码。

HFONT hf = CreateFont( 16, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
DEFAULT_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
TEXT( "微软雅黑"));

switch (message) {
case WM_CREATE:
hwndButton = CreateWindow ( TEXT("button"), TEXT("分析链接"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
680, 60,
75, 23,
hwnd, (HMENU)IDcmdButton, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
if (!hwndButton) MessageBox(NULL,"创建按钮失败","Message",MB_OK|MB_ICONERROR);
ShowWindow(hwndButton,SW_SHOW);
UpdateWindow(hwndButton);

hwndButton1 = CreateWindow ( TEXT("button"), TEXT("开始下载"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
788, 481,
75, 23,
hwnd, (HMENU)IDcmdButton1, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
if (!hwndButton1) MessageBox(NULL,"创建按钮失败","Message",MB_OK|MB_ICONERROR);
ShowWindow(hwndButton1,SW_SHOW);
UpdateWindow(hwndButton1);

hwndButton2 = CreateWindow ( TEXT("button"), TEXT("选择文件夹"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
840, 391,
85, 23,
hwnd, (HMENU)IDcmdButton2, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
if (!hwndButton2) MessageBox(NULL,"创建按钮失败","Message",MB_OK|MB_ICONERROR);
ShowWindow(hwndButton2,SW_SHOW);
UpdateWindow(hwndButton2);

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
// SetTextColor(hdc, RGB(255,0,0)); //可以用RGB三原色设置文本颜色
//SetBkColor(hdc,RGB(0,0,0)); 设置背景色。
SetTextColor(hdc, RGB(255, 0, 0));

TextOut(hdc,60,91,TEXT("实际有水印网址"),14);
TextOut(hdc,108,123,TEXT("Item_IDs"),8);
TextOut(hdc,351,196,TEXT("无水印视频播放地址"),18);
TextOut(hdc,351,277,TEXT("无水印视频真实地址"),18);
TextOut(hdc,50,391,TEXT("作者:"),6);