自己学习C的过程中,跟着视频学习,遇到桌面对话框程序后就有点 不知所措了,
因为VS2017里面并没有提供模板,不知道该怎么弄这个
后来 网上查看了 好多资料,最终也可以实现对话框 联系的目的了
但是,跟视频教学中的内容还是相差很多,
所以,根据视频内容,自己 从空文件开始,一步一步的 练习,验证,最终创建了跟视频中使用的对话框,吻合度较高的
程序, 为了方便以后使用,保存成立模板,分享出来给后来需要的人;
运行结果
包含 设置
程序图标、时间显示(按秒更新)、日历显示、图片添加、
文本框添加(自动填充)、 按键被按下反馈
因为还设计到头文件,所以 只复制代码并不能正常运行,
请下载模板 文件,放到“ *\Visual Studio 2017\My Exported Templates\ ”目录下(模板存放目录,自己查一下)
代码如下:
#include <windows.h>
#include <tchar.h>//不引用它会提示_tWinMain的错误
#include <windowsx.h>
#include "resource.h"
#include "FunDeclaration.h"
//win 入口程序
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
//对话框回调函数
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DLGMAIN), NULL, Main_Proc);
return 0;
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
//BEGIN MESSAGE CRACK
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);//初始化对话框
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);//窗口控制
HANDLE_MSG(hWnd, WM_CLOSE, MainDlg_OnClose);//关闭按钮
//END MESSAGE CRACK
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus, LPARAM lParam)
{
//set app icons
HICON hIcon = LoadIcon((HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDI_ICONAPP));
SendMessage(hwnd, WM_SETICON, TRUE, (LPARAM)hIcon);
SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)hIcon);
//
//ADD initializing here
SetTimer(hwnd, 0, 1000, &MyTime_Proc);//时间回调函数
//
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndctl, UINT codeNotify)
{
switch (id)
{
case IDC_OK:
MessageBox(hwnd, TEXT("世界你好!"), TEXT("问候"), MB_OK);
break;
case IDC_BUTTONSET1:
SetDlgItemText(hwnd, IDC_EDIT1, TEXT("填写在这里"));
break;
case IDOK:
MessageBox(hwnd, TEXT("确定按钮被按下"), TEXT("提示"), MB_OK);
break;
case IDCANCEL:
MessageBox(hwnd, TEXT("取消按钮被按下"), TEXT("提示"), MB_OK);
EndDialog(hwnd, 0);
break;
default:
break;
}
}
void MainDlg_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);//关闭hwnd这个窗口
}
void CALLBACK MyTime_Proc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
{
SYSTEMTIME st;
GetLocalTime(&st);
TCHAR Dtime[256];
wsprintf(Dtime, L"%8d年%2d月%2d日 %2d:%2d:%2d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
SetDlgItemText(hWnd, IDC_EDITTIME, Dtime);//显示时间,每秒更新
}
win32桌面对话框程序模板 下载