//win入口函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
===============================================================================================
//win快捷消息框类型
MB_OK :信息框含有1个按钮-(确定)
MB_OKCANCEL : 信息框含有2个按钮-(确定和取消)
MB_RETRYCANCEL : 信息框含有2个按钮-(重试和取消)
MB_YESNO : 信息框含有2个按钮-(是和否)
MB_YESNOCANCEL : 信息框含有3个按钮-(是,否,取消)
MB_ABORTRETRYIGNORE : 信息框含有3个按钮-(终止,重试,忽略)
===============================================================================================
//win快捷消息框内图标
MB_ICONEXCLAMATION : 信息框显示以个黄色三角形中间带惊叹号
MB_ICONINFORMATION : 信息框显示以个灰白色云框中间惊叹号:
MB_ICONQUESTION : 信息框显示以个灰白色云框中间问号:
MB_ICONSTOP : 信息框显示以个红色圆圈中间叉号:
===============================================================================================
//声音文件相关
必须包含winmm.lib;
调用方法:PlaySound(MAKEINTRESOURCE(IDR_WAVE2),hinstance_app,SND_ASYNC|SND_RESOURCE);
SND_SYNC :声音播放完后返回
SND_ASYNC :声音开始播放后 立即返回
SND_LOOP :声音重复播放直到再次调用Playsound() 需要和SND_ASYNC 搭配 SND_LOOP|SND_ASYNC;
===============================================================================================
//BS组件
BS_DEFPUSHBUTTON //突出按钮
BS_AUTORADIOBUTTON //带选框的按钮
//按钮显示
button1.Create("剑客",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);
、、、、、、、、动态显示按钮
if(!button1.m_hWnd){
button1.Create("剑客",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);
}
else{
button1.DestroyWindow();
}
===============================================================================================
//win快捷消息框返回参数
IDABORT
IDCANCEL
INIGNORE
IDNO :否
IDYES :是
IDOK :确定
IDRETRY
===============================================================================================
//窗口左上角图标
IDI_ERROR :红色叉号
IDI_WINLOGO :正常程序图标
IDI_ASTERISK :以个灰白色云框中间惊叹号:
IDI_WARNING :以个黄色三角形中间带惊叹号
IDI_QUESTION :以个灰白色云框中间问号
===============================================================================================
//鼠标指针形状
IDC_APPSTARTING :程序开始运行光标
IDC_ARROW :正常状态光标
IDC_CROSS :十字架光标
IDC_HELP :带问号的光标
IDC_IBEAM :等待输入字符的光标
IDC_ICON :等待中的光标
IDC_NO : 不可以点击的光标
IDC_SIZE :上下拖拉的光标
IDC_SIZEALL :菱型光标
IDC_SIZENESW :斜拉光标
IDC_UPARROW :向上箭头的光标
IDC_SIZEWE :左右拖拉的光标
===============================================================================================
//画刷参数
BLACK_BRUSH :黑色画刷
DKGRAY_BRUSH :深灰色画刷
GRAY_BRUSH :灰白色画刷
HOLLOW_BRUSH :空洞的画刷
LTGRAY_BRUSH :亮色画刷
WHITE_BRUSH :白色的画刷
===============================================================================================
//WIN类的类型标志style
CS_HREDRAW : 如果移动或改变了窗口的宽度,则刷新整个窗口
CS_VREDRAW : 如果移动或改变了窗口的高度,则刷新整个窗口
CS_SAVEBITS : 在窗口中保存图像 以便不必每次刷新屏幕 暂用大量内存
CS_NOCLOSE : 禁止关闭窗口
===============================================================================================
#include<stdio.h>
.hbrBackground=(HBRUSH)GetStockObject(DKGRAY_BRUSH); :画刷颜色 //强制转换 类似JAVA
===============================================================================================
typedef struct _WNDCLASS {//窗口类
UINT style; //窗口风格:CS_NOCLOSE(不可以关闭)CS_HREDRAW|CS_VREDRAW
WNDPROC lpfnWndProc; //回调函数
int cbClsExtra; //通常为0
int cbWndExtra; //通常为0
HANDLE hInstance; //WinMain的实例号
HICON hIcon; //窗口左上角图标
HCURSOR hCursor; //鼠标指针形状
HBRUSH hbrBackground; //画刷句柄
LPCTSTR lpszMenuName; //设置菜单NULL
LPCTSTR lpszClassName; //这个窗口的类名
} WNDCLASS ;
===============================================================================================
//消息事件说明
WM_CLOSE :当窗口关闭时
WM_CREATE :当窗口第一次创建时
WM_DESTROY :当窗口可能被破坏时
WM_MOVE : 当窗口移动时
WM_MOUSEMOVE :当移动鼠标时
WM_KEYUP :当松开一个键时
WM_KEYDOWN :当按下一个键时
WM_TIMER :当发生定时程序事件时
WM_PAINT :当窗口重画时
WM_QUIT :当窗口结束时
WM_SIZE :当改变窗口大小时
WM_RBUTTONDOWN :鼠标右键点击
WM_LBUTTONDOWN :鼠标左键点击
===============================================================================================
//dwStyle窗口类型参数
WS_OVERLAPPEDWINDOW :正常的窗口
WS_BORDER : 有细线边界 仅有一个标题栏 不可以改变大小的窗口
WS_TABSTOP :仅有一个标题栏 可以双击标题栏最大化最小化的窗口
WS_SIZEBOX :仅有一个标题栏 可以改变大小可以最大最小化的窗口
WS_HSCROLL : 带有水平滚动条的窗口
WS_VSCROLL : 带有垂直滚动条的窗口
WS_MAXIMIZE : 开始就最大化的窗口
WS_VISIBLE : 开始就可见的窗口
===============================================================================================
//ShowWindow 参数说明
SW_SHOWNORMAL :常用正常显示
SW_SHOW :按当前尺寸位置显示
SW_HIDE :隐藏一个窗口 并激活另一个窗口
SW_SHOWMAXIMIZED :窗口最大化显示
SW_SHOWMINIMIZED :最小化显示
===============================================================================================
HWND CreateWindow( //相关参数说明
LPCTSTR lpClassName, //窗口类名
LPCTSTR lpWindowName, //窗口标题栏
DWORD dwStyle, //窗口的类型
int x, //窗口X轴距离 可指定为缺省的CW_USEDEFAULT
int y, //窗口Y轴距离 可指定为缺省的CW_USEDEFAULT
int nWidth, //窗口宽度 可指定为缺省的CW_USEDEFAULT
int nHeight, //窗口高度 可指定为缺省的CW_USEDEFAULT
HWND hWndParent, //父窗口的句柄
HMENU hMenu, //菜单句柄
HINSTANCE hInstance, //WinMain的实例号
LPVOID lpParam //多文档用 NULL
);
===============================================================================================
//消息框字符串调用方法
CString jk;
jk.Format("1+1=%d",1+1);
MessageBox(jk);
===============================================================================================
RegisterClass(&wndcls);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
===============================================================================================
//窗口绘图
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"窗口东西",strlen("窗口东西"));
EndPaint(hwnd,&ps);
===============================================================================================
//窗口关闭
return DefWindowProc(hwnd,uMsg,wParam,lParam);
===============================================================================================
Menu函数说明
ClientToScreen(&point);
===============================================================================================
组件字符串变换
CString str;
if(GetDlgItemText(IDC_BUTTON2,str),str=="变化前")
{
SetDlgItemText(IDC_BUTTON2,"变换后")
}
else{
SetDlgItemText(IDC_BUTTON2,"变化前");
}
================================================================================================================================
//收缩于扩展
static CRect rectLarge;
static CRect rectSmall;
if(rectLarge.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rectLarge);
GetDlgItem(“分割线”)->GetWindowRect(&rectSeparator);
rectSmall.left=rectLarge.left;
rectSmall.top=rectLarge.top;
rectSmall.right=rectLarge.right;
rectSmall.bottom=rectSeparator.bottom;
}
if(str=="分割按钮")
{
SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
else
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
================================================================================================================================
cs.cx=500;
cs.cy=500;
cs.style=WS_OVERLAPPEDWINDOW;
cs.lpszName="http://www.sunxin.org";
================================================================================================================================
//打开网址
char szHttp[80];
strcpy(szHttp,"WWW.163.com");
ShellExecute(NULL,"open",szHttp,NULL,NULL,SW_SHOWNORMAL);
================================================================================================================================
//运行EMAIL
char szMailAddress[80];
strcpy(szMailAddress,"mailto:yz-zm@163.com");
ShellExecute(NULL,"open",szMailAddress,NULL,NULL,SW_SHOWNORMAL);
================================================================================================================================
//运行其它程序
ShellExecute(this->m_hWnd, "open", "J:\\C++\\自编小程序\\文本游戏账号注册\\Study3.exe", NULL, NULL, SW_MAXIMIZE) ;
================================================================================================================================
3、打开/关闭CD-ROM
(1)在stdafx.h文件中加上:
include <mmsystem.h>
(2) project->settings
Link页 Category: input 中的 Object/library modules:
加上winmm.lib
(3)按钮事件中加入以下代码:
mciSendString("Set cdAudio door open wait",NULL,0,NULL);//打开
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);关闭
================================================================================================================================
对话框相关联
模态
TestDlg dlg;
dlg.DoModal();
非模态
TestDlg *pdlg=new TestDlg();
pdlg->Create(IDD_DIALOG1,this);
pdlg->ShowWindow(SW_SHOW);
================================================================================================================================
动态改变静态文本
CString nn1;
if(GetDlgItem(IDC_STATIC1)->GetWindowText(nn1),nn1=="NN1"){
GetDlgItem(IDC_STATIC1)->SetWindowText("HAHA");
}
else{
GetDlgItem(IDC_STATIC1)->SetWindowText("NN1");
}
================================================================================================================================
控件操作
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItemText(IDC_EDIT1,ch1,10);
GetDlgItemText(IDC_EDIT2,ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
SetDlgItemText(IDC_EDIT3,ch3);
================================================================================================================================
时间显示
SetTimer(1, 1000, NULL);
static CString strTemp;
COleDateTime dtTime;
dtTime = COleDateTime::GetCurrentTime();
strTemp.Format("现在时间 %02i:%02i:%02i ",dtTime.GetHour(),dtTime.GetMinute(),dtTime.GetSecond());
GetDlgItem(IDC_CURTIME)->SetWindowText(strTemp);