直接上代码,注释已经很详细了,另外需要注意的一点就是,怎么样在VS2010 中添加资源,本例很简单,在资源视图中右键添加相应的资源就可以了。至于如何把exe,dll做成资源,然后由主程序来释放,还需要再学习。
// DiaLog.cpp : 定义应用程序的入口点。
。//
#include "stdafx.h"
#include "windows.h"
#include "resource.h"
HICON hdicon;//因为LoadIcon这个函数是加载ico图标,程序一开始就需要进行这个操作,所以定义为全局变量
LRESULT CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
MoveWindow(hWnd,100,100,500,300,FALSE);//移动窗口位置,这里可要可不要
SendMessage(hWnd,WM_SETICON,ICON_SMALL,(LPARAM)hdicon); //这句话很重要,向窗口发送消息,设置图标
SetWindowPos(hWnd,NULL,500,300,0,0,SWP_NOSIZE); //设置窗口在左面的位置
return TRUE; // 表示已经初始化
case WM_COMMAND:
if(LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hWnd,TRUE); //只用于模式对话框
return TRUE;
}
break;
}
return FALSE;//消息没有被处理,交给父窗口继续处理
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR lpCmdLine, int nShowCmd)
{
hdicon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1) );//这句代码的位置很重要,刚开始放在对话框过程中的WM_INITDIALOG下,弄了好久都没有出现
//程序图标,这是因为程序窗口在初始化的时候图标已经加载了默认值。所以如果要现实就要放在这里
DialogBox(hInstance, (LPCTSTR)(IDD_DIALOG1), NULL, (DLGPROC)DialogProc);//IDD_DIALOG1是对话框资源的ID
return 0;
}