首先打开我们的作案工具 visual studio,创建一个win32应用程序。
然后右击资源文件,添加资源,点击dialog。点击新建。
然后像这个打出来
#include <Windows.h>
#include "resource.h"
BOOL CALLBACK WinDiaProc(HWND hwnd,UINT uMsg,WPARAM wparam,LPARAM lparam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstan, LPSTR lpCmdLine,int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MainDialog), NULL, WinDiaProc);
return 0;
}
BOOL CALLBACK WinDiaProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
{
switch (uMsg)
{
case WM_CLOSE:
{
EndDialog(hwnd,0);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUIT:
break;
default:
break;
}
return false;//true 告诉系统,我都处理好了,你不用管。false ,系统你来
}
MAKEINTERSOURCE(),括号里面的,就是你刚刚资源视图里,那个对话框的idd
就是这个东西, WindiaProc是对话框窗口处理函数。
然后呢,带大家啊设置一下这个对话框的图标。
图标呢分大图标和小图标:
这个地方的小图标。
这个地方的是大图标
首先,我们右击资源文件,添加资源,选择icon,选择导入,然后倒入你选择的图标文件。
然后就很简单了啦,首先设置一个全局变量;
然后,在主函数里,给他赋值;
最后在窗口处理函数里设置一下就行了
case WM_INITDIALOG:
{
//设置窗口图标,加载图标 IDI_ICONSMALL资源视图你导入的那个idi
HICON smallicon = LoadIcon(tb_instance,MAKEINTRESOURCE(IDI_ICONSMALL));
HICON bigicon = LoadIcon(tb_instance, MAKEINTRESOURCE(IDI_ICONBIG));
//设置图标,发送设置图标的消息
SendMessage(hwnd, WM_SETICON, ICON_SMALL,(LPARAM)smallicon);//设置小图标 ICON_SMALL
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)bigicon);//设置大图标 ICON_BIG
break;
}
然后呢就是进入资源视图,双击
出现这个:
首先是第一个 accept files:
#include <Windows.h>
#include "resource.h"
HINSTANCE tb_instance;
BOOL CALLBACK LOGINDiaProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam);
BOOL CALLBACK WinDiaProc(HWND hwnd,UINT uMsg,WPARAM wparam,LPARAM lparam);
BOOL CALLBACK ABOUTWinProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstan, LPSTR lpCmdLine,int nCmdShow)
{
tb_instance = hInstance;
int answer = DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGIN), NULL, LOGINDiaProc);
if (answer == IDCANCEL)
{
return 0;
}
else
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MainDialog), NULL, WinDiaProc);
}
return 0;
}
BOOL CALLBACK WinDiaProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
{
switch (uMsg)
{
case WM_INITDIALOG:
{
//设置窗口图标
HICON smallicon = LoadIcon(tb_instance, MAKEINTRESOURCE(IDI_ICONSMALL));
HICON bigicon = LoadIcon(tb_instance, MAKEINTRESOURCE(IDI_ICONBIG));
//设置图标,发送设置图标的消息
SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)smallicon);
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)bigicon);
break;
}
case WM_COMMAND:
{
int wid = LOWORD(wparam);
switch (wid)
{
case IDOK:
MessageBox(hwnd, L"ok", L"tips", NULL);
break;
case IDCANCEL:
MessageBox(hwnd, L"cancel", L"tips", NULL);
break;
case IDD_ABOUT:
DialogBox(tb_instance, MAKEINTRESOURCE(IDD_ABOUT), hwnd, ABOUTWinProc);
break;
default:
break;
}
break;
}
case WM_CLOSE:
{
EndDialog(hwnd, 0);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUIT:
break;
default:
break;
}
return false;//true 告诉系统,我都处理好了,你不用管,false ,系统你来
}
BOOL CALLBACK ABOUTWinProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
{
switch (uMsg)
{
case WM_CLOSE:
{
EndDialog(hwnd,0);
break;
}
default:
break;
}
return false;
}
BOOL CALLBACK LOGINDiaProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
{
switch (uMsg)
{
case WM_CLOSE:
EndDialog(hwnd,IDCANCEL);
//DestroyWindow(hwnd);
break;
case WM_DESTROY:
break;
case WM_COMMAND:
{
int nid = LOWORD(wparam);
switch (nid)
{
case IDOK:
{
TCHAR username[256];
TCHAR password[256];
GetDlgItemText(hwnd, IDC_USERNAME,username, 256);
GetDlgItemText(hwnd, IDC_PASSWORD,password, 256);
if (wcscmp(username, L"root") == 0 && wcscmp(password, L"123456") == 0)
{
EndDialog(hwnd, IDOK);
}
else
{
//LOGINDiaProc(hwnd, uMsg, wparam, lparam);
MessageBox(hwnd,L"账号或密码错误",L"TIPS",NULL);
return TRUE;
}
break;
default:
break;
}
case IDCANCEL:
EndDialog(hwnd, IDCANCEL);
break;
}
break;
}
default:
break;
}
return false;
}
这是个登陆的小程序,大家可以试试。
对话框生成的过程中发出了哪些消息?
让我们康康:
#include <Windows.h>
#include "resource.h"
BOOL CALLBACK MyDlgProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdSHOW)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MyDlgProc);
return 0;
}
BOOL CALLBACK MyDlgProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
{
wchar_t szdebug[256];
wsprintf(szdebug,L"对话框生成的过程中发出了哪些消息?%x",umsg);
OutputDebugString(szdebug);
switch (umsg)
{
case WM_CLOSE:
{
EndDialog(hwnd, NULL);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
case WM_QUIT:
break;
}
return false;
}
我抽取了一些,来看看
对话框生成的过程中发出了哪些消息? 30
对话框生成的过程中发出了哪些消息? 110
对话框生成的过程中发出了哪些消息? 127
对话框生成的过程中发出了哪些消息? 128
对话框生成的过程中发出了哪些消息? 31f
对话框生成的过程中发出了哪些消息? 18
对话框生成的过程中发出了哪些消息? 46
对话框生成的过程中发出了哪些消息? 1c
对话框生成的过程中发出了哪些消息? 86
对话框生成的过程中发出了哪些消息? 7f
对话框生成的过程中发出了哪些消息? 7f
对话框生成的过程中发出了哪些消息? 7f
对话框生成的过程中发出了哪些消息? 6
比如30,设置字体,剩下的大家有兴趣可以自己去查一查。