【对话框编程】C语言也能干大事系列课程源代码
来源:互联网 发布:shell脚本监控端口 编辑:程序博客网 时间:2024/06/05 16:32
第一节 MessageBox程序
窗口恶搞程序:
【编译器】C-Free 5.0
#include <windows.h>int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ /* TODO: Place code here.*/ int a,b = 4; while(IDRETRY == b) { a = MessageBox(NULL,TEXT("你是好人吗"),TEXT("窗口"),MB_YESNO); if(IDNO == a) { b = MessageBox(NULL,TEXT("看你就不像好人,点击确定开始格式化C盘!"),TEXT("窗口"),MB_OK|MB_ICONINFORMATION); } else { b = MessageBox(NULL,TEXT(""),TEXT("窗口"),MB_RETRYCANCEL); } if(IDOK == b) { MessageBox(NULL,TEXT("C盘格式化完毕!"),TEXT("窗口"),MB_OK); }}return 0;}
第二节 对话框程序
【编译器】Visual Studio 2010
#include "stdafx.h"#include "test2.h"#include "Resource.h"int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){DialogBox(hInstance,MAKEINTRESOURCE(IDD_ABOUTBOX),NULL,NULL);return 0;}
第三节 简易加法计算器
【编译器】Visual Studio 2010
【问题】EDIT3控件输出乱码
头文件添加如下声明:
//SimpleAddPro.hBOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);void Main_OnClose(HWND hwnd);
另外标准头文件添加:
//stdafx.h#include <windowsx.h>
主文件:
// SimpleAddPro.cpp : 定义应用程序的入口点。#include "stdafx.h"#include "SimpleAddPro.h"#include "Resource.h"int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){DialogBox(hInstance,MAKEINTRESOURCE(IDD_ABOUTBOX),NULL,Main_Proc);return 0;}BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){switch(uMsg){ HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);}return FALSE;}//对话框窗口初始化函数:BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){return TRUE;}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){switch(id){case IDC_OK: { TCHAR str1[256]; TCHAR str2[256]; GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1)); GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2)); int n1=_wtoi(str1); int n2=_wtoi(str2); int n3=n1+n2; TCHAR str3[256]; //wsprintf(str3,"%d",n3); _itow(n3,str3,10); SetDlgItemText(hwnd,IDC_EDIT3,str3); } break;default: break;}}void Main_OnClose(HWND hwnd){EndDialog(hwnd, 0);}
问题解决!VC++6.0中的atoi函数和itoa函数在VS2010中始终存在各种问题,原因及解决方法如下:
1.vs 2010 默认字符集是使用 Unicode 字符集,而vc++ 6.0 没有Unicode 字符集。
2.vc++ 6.0 char类型采用的是单字节存储形式,而vs 2010为了兼容发展,采用了2字节存储形式那么,在vs 2010中字符串与数字互换的写法是怎么样的呢,其实也简单,我们了解VS2010的char的存储机制后,我们可用宽字节的宏来转换,即用 wchar_t(TCHAR)代替 char 字义字符串,用_wtoi 字符串转整数,用_itow 整数转字符串就可以了
Dialog控件略。
第四节 简易计算器改进
数值是否合法判断函数:
BOOL IsInt(TCHAR* str){int i=_wtoi(str);TCHAR strtemp[256];wsprintf(strtemp,"%i",i);if(strcmp(str,strtemp)!=0){return FALSE;}else{return TRUE;}}
第四节 简易计算器2.0
【编译器】Visual Studio 2010
此版本在之前的版本上修改,以下为修改内容:
1.初始化函数添加Combo下拉选项
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);//获取Combo句柄ComboBox_InsertString(hwndCombo1,-1,TEXT("+"));ComboBox_InsertString(hwndCombo1,-1,TEXT("-"));ComboBox_InsertString(hwndCombo1,-1,TEXT("*"));ComboBox_InsertString(hwndCombo1,-1,TEXT("/"));return TRUE;}
2.计算部分,替代1.0版本中的相加赋值语句
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); int curIndex = ComboBox_GetCurSel(hwndCombo1); switch(curIndex) { case 0: { n3 = n1+n2; } break; case 1: { n3 = n1-n2; } break; case 2: { n3 = n1*n2; } break; case 3: { n3 = n1/n2; } break; }
另外,Dialog主控件属性Center(窗口初始居中)、Maximize Box(最大化按钮)、Minimize Box(最小化按钮)等调节为Ture值可用。
第六节 定时器
时钟1.0
//回调函数void CALLBACK TimeProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTIME){SYSTEMTIME stLocal;//系统时间指针GetLocalTime(&stLocal);TCHAR strTime[256];wsprintf(strTime,TEXT("%d年%d月%d日 %d:%d:%d"),stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond);SetDlgItemText(hwnd,IDC_EDITTIME,strTime);}BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){SetTimer(hwnd,0,1000,TimeProc);//定时器return TRUE;}
第七节 记事本和播放器
1.打开文件代码
case IDM_OPEN://打开{OPENFILENAME ofn;//结构体变量TCHAR szFile[MAX_PATH];ZeroMemory(&ofn,sizeof(ofn));ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=(LP)szFile;ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("所有文件(*.*)\0*.*\0文本文档(*.txt)\0*.TXT\0");ofn.nFilterIndex=2;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;//父窗口ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST;if(GetOpenFileNameW(&ofn))//打开文件API,返回路径在szFile变量内,返回值类型为BOOL{FILE * fp = fopen(szFile,"r");//此部分无法在VS2010运行char line[256];fgets(line,sizeof(line),fp);fclose(fp);SetDlgItemText(hwnd,IDC_EDIT,line);}
2.对话框退出函数
case IDM_EXIT://退出{EndDialog(hwnd,0);}
3.RICH EDIT 2.0控件调用
LoadLibrary(TEXT("riched32.dll"));//在winMain函数中调用
0 0
- 【对话框编程】C语言也能干大事系列课程源代码
- 分享:《C语言也能干大事》课程
- c语言也能干大事
- c语言也能干大事
- C语言也能干大事
- C语言也能干大事
- C语言也能干大事
- c语言也能干大事!
- windows编程(C语言也能干大事视屏)
- 【C语言也能干大事】视频教程全集
- C语言也能干大事第一节
- C语言也能干大事第二节
- C语言也能干大事第三节
- C语言也能干大事第四节
- C语言也能干大事第五节
- C语言也能干大事十五节
- 1,C语言也能干大事系列--第一个C语言项目的建立
- 非常好的C语言教程:《C语言也能干大事》
- Nginx搭建flv视频点播服务器
- 扯淡:能扯多远扯多远,能扯多少扯多少吧
- i.max6 e9 android系统添加3G模块支持 上
- DetailsView控件绑定对象列表时出现某属性名没有找到的错误
- NYOJ-20 吝啬的国度 AC
- 【对话框编程】C语言也能干大事系列课程源代码
- JSP和js的区别
- spring的用处
- mysql用户自定义函数实例与部分问题解决方法
- 百度云盘公开连接 全是JAVA
- _beginthread不能正确调用返回0xffffffff
- cocos2d的下载
- 安装 Silverlight 5/silverlight4 出错的解决方法
- Best Time to Buy and Sell Stock