c不是我学的第一门编程语言,我入门的语言是汇编(滑稽脸)。那时候,在几百万的高考大军中漂流,总觉得得做点不一样的事情。作为一名从小受科幻影片影响的人,我觉得编程是一件很能用来装高深的事情,于是我去想去学。要学,就从最底层学起,但怎么也得看得懂,所以我选择汇编。但是,说真的,要是我一开始选择了c,或许情况大大不一样,我看了两天汇编,我的自信心深深受到了打击,从此跟编程死磕上了。
c是我学的第二门编程语言。但是,学不深,刚学到使用malloc就没学了,这是一件可惜的事情。其中,一个原因是因为在Ms的影响下,我觉得c是一种不开源的东西;另外一个原因是因为这个时候开始接触了Java,走向了面向对象之路(一直面向,却怎么也找不到)。其实那时候还学了C#的选修,但是不喜欢Ms,所以也有所影响。其实,那仅仅只是一个原因,另外一个原因是因为我用C#写了几个小软件,发给了我的朋友,但在他们机子怎么也跑不起来(作为一个大老粗,我怎么也学不懂静态链接和动态链接)。
写了几个月的程序以后,我觉得这些东西好像都一样,所以我没有继续再区分我该学什么,不该学什么。
最近在无网络环境开发,以前使用的很多是在线工具,没有网络,连个Sql的去空白字符都要打开其他大软件进行格式化。所以打算利用以前学的c知识写个小软件工具(现在学精了,尽量使用标准库),我熟悉的是eclipse(其实我受不了Ms的开发软件那么大,机子渣)所以打算利用eclipse+cdt+mingw进行开发,其中,利用win32的api写了个软件。
(第一次写博客,无关话多多,下面进入正题)
(sourceforge是个十分好的网站(从以前玩mc的时候装mod的时候知道的),上面有很多免费的开源软件)

点击打开,一直next(要记得你的安装路径)到这个界面:

勾选你需要的部分(右键Mark for installation),base一定要msys-base、developer-toolkit要,g++可选。
然后就可以了。接下来配置环境路径,跟配Java一样的
计算机右键-》属性-》高级系统设置-》环境变量
在你的用户变量里添加

然后添加Path(如果没有就添加一个),在变量值里添加;%MINGW_HOME%\bin;

点击确定,完成环境变量配置。
接下来,开始-》运行-》cmd
![]()

方式1:直接从官网下载带cdt的eclipse,当然借助强大的某度搜索eclipse cdt了,这个是网址(其实,很多文章的问题是,点进去链接失效了,所以我也没办法保证这个链接一直有效)
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2
方式2:从eclipse的marketPlace下载,菜单帮助(Help)-》Marketplace-》搜索cdt


![]()

然后就可以直接在工程下新建源文件了,
工程结构:
Binaries:运行的目标二进制文件
Includes:包含的库文件(包括系统库)
Debug:调试时构建生成的文件
*.c:源文件
若新建了source folder,则在引用的时候,应该使用(文件夹)/(头文件的)的引用方式
下面我们写一个win32的HelloWorld,主要源文件main.c:
然后在initWindows中可以进行窗口初始化函数:
4、关于自定义程序图标:
作为一名有个性的程序猿,怎么会愿意让生成的程序成为这种什么图标风格都没有的样子:

像一般的软件,至少得从表面让人家看起来愿意去用它,而不是看起来像个不安全的东西。在Ms的开发软件中,一般通过自定义资源的模式定义图标,那么,在mingw下,用的是它自带的windres工具。它用于编译Microsoft Windows资源文件:

使用步骤如下:(1)先下载一个可以用的图标(.ico 不要太大):

(2)创建一个.rc文件,你的文件编辑器可以打开的(我这里叫icon.rc),用文件编辑器打开,然后输入以下内容(每一行第一个是资源的id、第二个是文件格式、第三个是文件所在路径。):
1 ICON "wint.ico"
3056 ICON "wint.ico"
(3)然后,在命令行中使用windres工具进行资源文件的编译(命令格式为:windres .rc源文件 [-o 输出文件] 如果没有-o选项,编译后的数据将直接显示在命令行窗口中,不会生成.o文件):

(4)windows下的gcc在编译的时候,会查找连接参数的资源文件,如果找不到就会使用系统默认的。接下来,在我们的工程中加入该文件,首先打开工程设置


然后重新build一下:

生成的文件就有图标了:

5、关于黑窗(cmd窗口):
当你使用gcc写了一个win32之后,总有这么一个黒窗,严重影响美观,为了不要这个黑窗,我们需要在链接的时候,加入-mwindows的选项:还是在工程的properties设置里面,加入即可

接下来,就可以进行win32的开发了。好了,这就是这几天使用eclipse进行win32开发的心得。第一次写博客,有错误的请大家多多包含,多多指出,有什么不好的也请给建议哈。
c是我学的第二门编程语言。但是,学不深,刚学到使用malloc就没学了,这是一件可惜的事情。其中,一个原因是因为在Ms的影响下,我觉得c是一种不开源的东西;另外一个原因是因为这个时候开始接触了Java,走向了面向对象之路(一直面向,却怎么也找不到)。其实那时候还学了C#的选修,但是不喜欢Ms,所以也有所影响。其实,那仅仅只是一个原因,另外一个原因是因为我用C#写了几个小软件,发给了我的朋友,但在他们机子怎么也跑不起来(作为一个大老粗,我怎么也学不懂静态链接和动态链接)。
写了几个月的程序以后,我觉得这些东西好像都一样,所以我没有继续再区分我该学什么,不该学什么。
最近在无网络环境开发,以前使用的很多是在线工具,没有网络,连个Sql的去空白字符都要打开其他大软件进行格式化。所以打算利用以前学的c知识写个小软件工具(现在学精了,尽量使用标准库),我熟悉的是eclipse(其实我受不了Ms的开发软件那么大,机子渣)所以打算利用eclipse+cdt+mingw进行开发,其中,利用win32的api写了个软件。
(第一次写博客,无关话多多,下面进入正题)
1、安装mingw
当然是强大的某度了,搜索mingw也可以mingw 64或者mingw 32精确一点你的平台。我的是64,找的网址是这个:
https://sourceforge.net/projects/mingw-w64/(sourceforge是个十分好的网站(从以前玩mc的时候装mod的时候知道的),上面有很多免费的开源软件)
点击打开,一直next(要记得你的安装路径)到这个界面:
勾选你需要的部分(右键Mark for installation),base一定要msys-base、developer-toolkit要,g++可选。
然后,选择菜单栏
然后就可以了。接下来配置环境路径,跟配Java一样的
计算机右键-》属性-》高级系统设置-》环境变量
在你的用户变量里添加
然后添加Path(如果没有就添加一个),在变量值里添加;%MINGW_HOME%\bin;
点击确定,完成环境变量配置。
接下来,开始-》运行-》cmd
有出来就成功了(库不一定一样)。
2、安装eclipse,当然安装cdt也可以包含在这里面,因为有两种方式:方式1:直接从官网下载带cdt的eclipse,当然借助强大的某度搜索eclipse cdt了,这个是网址(其实,很多文章的问题是,点进去链接失效了,所以我也没办法保证这个链接一直有效)
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2
方式2:从eclipse的marketPlace下载,菜单帮助(Help)-》Marketplace-》搜索cdt
如果你是eclipse的忠实用户,你也一定会熟悉如何使用它安装插件的。完成后重启eclipse即可。
在源文件下面添加源文件,这里添加一个main.c文件:
内容就来个HelloWorld先吧:
#include<stdio.h>
/*
* main.c
*
* Created on: 2017-6-15
* Author: dev2
*/
int main(int argc, char **argv) {
printf("hello world!");
getchar();
return 0;
}
然后先build一下:然后运行一下:
如果这时候报can't found binaries 错误那么,需要先进行一下运行配置(Run Configurations,c/c++ Application 没有配置就增加一个):
然后就可以直接在工程下新建源文件了,
工程结构:
Binaries:运行的目标二进制文件
Includes:包含的库文件(包括系统库)
Debug:调试时构建生成的文件
*.c:源文件
若新建了source folder,则在引用的时候,应该使用(文件夹)/(头文件的)的引用方式
下面我们写一个win32的HelloWorld,主要源文件main.c:
#include <stdio.h>
#include <windows.h>
int initWindows(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) {
return initWindows(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
然后在initWindows中可以进行窗口初始化函数:
/**
* 初始化窗体。
*/
int initWindows(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) {
int WIN_WIDTH = 200;
int WIN_HEIGH = 200;
int x = (GetSystemMetrics(SM_CXSCREEN) - WIN_WIDTH) / 2;
int y = (GetSystemMetrics(SM_CYSCREEN) - WIN_HEIGH) / 2;
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_PEN);
wndclass.hCursor = LoadCursor(NULL, IDC_HAND);
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(3056));//自定义图标,在下文
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WinProc;
wndclass.lpszClassName = "clazzName";
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd = CreateWindow("clazzName","截图",WS_OVERLAPPEDWINDOW^WS_THICKFRAME,x,y,WIN_WIDTH,WIN_HEIGH,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/**
*
*消息处理函数。
*/
LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
HDC hdcMem;
int screenx = GetSystemMetrics(SM_CXFULLSCREEN);
int screeny = GetSystemMetrics(SM_CYFULLSCREEN);
static char filePath[MAXPNAMELEN];
switch (uMsg) {
case WM_CREATE:
break;
case WM_CLOSE:
if (IDYES == MessageBox(hwnd, "close window?", "", MB_YESNO))
DestroyWindow(hwnd);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
4、关于自定义程序图标:
作为一名有个性的程序猿,怎么会愿意让生成的程序成为这种什么图标风格都没有的样子:
像一般的软件,至少得从表面让人家看起来愿意去用它,而不是看起来像个不安全的东西。在Ms的开发软件中,一般通过自定义资源的模式定义图标,那么,在mingw下,用的是它自带的windres工具。它用于编译Microsoft Windows资源文件:
使用步骤如下:(1)先下载一个可以用的图标(.ico 不要太大):
(2)创建一个.rc文件,你的文件编辑器可以打开的(我这里叫icon.rc),用文件编辑器打开,然后输入以下内容(每一行第一个是资源的id、第二个是文件格式、第三个是文件所在路径。):
1 ICON "wint.ico"
3056 ICON "wint.ico"
(3)然后,在命令行中使用windres工具进行资源文件的编译(命令格式为:windres .rc源文件 [-o 输出文件] 如果没有-o选项,编译后的数据将直接显示在命令行窗口中,不会生成.o文件):
(4)windows下的gcc在编译的时候,会查找连接参数的资源文件,如果找不到就会使用系统默认的。接下来,在我们的工程中加入该文件,首先打开工程设置
然后重新build一下:
生成的文件就有图标了:
5、关于黑窗(cmd窗口):
当你使用gcc写了一个win32之后,总有这么一个黒窗,严重影响美观,为了不要这个黑窗,我们需要在链接的时候,加入-mwindows的选项:还是在工程的properties设置里面,加入即可
接下来,就可以进行win32的开发了。好了,这就是这几天使用eclipse进行win32开发的心得。第一次写博客,有错误的请大家多多包含,多多指出,有什么不好的也请给建议哈。