窗口和对话框的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
窗口和对话框的区别
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢qq截图时怎么用红框标示特定文字?
qq截图的时候,怎么将qq截图中的某段话加一个红色的方框,将这段话标示出来呢?
第一步,打开一个QQ聊天窗口,点击截图图标(或者直接按快捷键ctrl+alt+a)
然后,用鼠标框选要截图的区域
这时您会发现框选区域的下方出来一段工具
左边第一个就是矩形方框
选择小的圆点,方框细点,大的圆点,方框粗点,后边的颜色可以随意选择。
新客网原创文章,转载请注明出处:/page/e2811.html
如果您喜欢本文请分享给您的好友,谢谢!如想浏览更多更好的内容,请登录:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)> 菜单和其他资源(4)之对话框的建立与怎么添加窗口左下角的小ICON图标
菜单和其他资源(4)之对话框的建立与怎么添加窗口左下角的小ICON图标
simluo & &
发布时间: & &
浏览:61 & &
回复:0 & &
悬赏:0.0希赛币
菜单和其他资源(4)之对话框的建立与如何添加窗口左上角的小ICON图标 前面的博客有一篇专门写了《如何创建自己的ICON图标》,在讲对话框之前,先讲一下如何修改窗口左上角的小图标,这个跟exe的ICON图标有点不一样,不是直接在CreateWindow的倒数第三个参数=LoadIcon(NULL,MAKEI***ESOURCE(ICONID))就行了,这样只是对exe大图标有用,详细请看我的前面的博客。
其实32X32和16X16的ICON图标的ID是一样的。这两者的创建都是一样的,有什么疑问请看博客:菜单和其他资源(1)如何画自己的ICON图标。
这里创建了两个ICON图标,一个16X16的,一个是32X32的
&&&&&&&&&
32X32的这样加载:
wndclass.Icon=LoadIcon(NULL,MAKEI***ESOURCE(ICONID));
16X16的这样加载:
SendMessage(hwnd, WM_SETICON, (WPARAM)TRUE, (LPARAM)LoadIcon(GetModuleHandle(NULL), (LPCTSTR)ICONID));
//hWnd为窗口句柄
//TRUE表示用大图标
//GetModuleHandle(NULL)表示获得当前应用程序实例
//IDI_APP为当前程序资源中一个图标的ID
//如果提示找不到IDI_APP,请在该文件前几行添上一句#include &resource.h&,这样才会把资源ID载入
看看效果吧:
ICON讲到这里,下面看看如何创建自己的对话框
现在讲的是最简单的,只是说明一下,如何创建的问题,后面的博客会有更复杂的对话框。
1新建一个win32项目,然后编写自己的代码;
2新建资源,创建自己的ICON和MENU
3新建资源,创建自己的对话框,在编辑对话框的时候,可也拖拽控件,just like C#(对话框里面拉一个picture,type改成Icon,Image改成ICONID)
对话框也可以添加菜单等等。。。
看看具体的代码:
#include&windows.h&
#include&resource.h&
BOOL CALLBACK DialogProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);//声明一个对话框过程函数
LRESULT CALLBACK WindowProc(
HWND hwnd,
// handle to window
UINT uMsg,
// message identifier
WPARAM wParam,
// first message parameter
LPARAM lParam
// second message parameter
HINSTANCE hI
int WINAPI WinMain(
HINSTANCE hInstance,
// handle to current instance
HINSTANCE hPrevInstance,
// handle to previous instance
LPSTR lpCmdLine,
// command line
int nCmdShow
// show state
static TCHAR szAppName[]=TEXT(&leimingzi&);
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=DLGWINDOWEXTRA;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,MAKEI***ESOURCE(ICONID));//exe大图标
wndclass.hInstance=hI
wndclass.lpfnWndProc=WindowP
wndclass.lpszClassName=szAppN
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndclass))//注册窗口
MessageBox(NULL,TEXT(&the program require the window nt&),TEXT(&tips&),MB_ICONERROR);
hMenu=LoadMenu(hInstance,MAKEI***ESOURCE(MENUID));//加载菜单
hwnd=CreateWindow(
szAppName,
// registered class name
TEXT(&this is title&), // window name
WS_OVERLAPPEDWINDOW,
// window style
CW_USEDEFAULT,
// horizontal position of window
CW_USEDEFAULT,
// vertical position of window
CW_USEDEFAULT,
// window width
CW_USEDEFAULT,
// window height
// handle to parent or owner window
// menu handle or child identifier
hInstance,
// handle to application instance
// window-creation data
//hDlg=CreateDialogParam(hInstance,MAKEI***ESOURCE(DIALOGID),hwnd,NULL,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.wP
LRESULT CALLBACK WindowProc(
HWND hwnd,
// handle to window
UINT uMsg,
// message identifier
WPARAM wParam,
// first message parameter
LPARAM lParam
// second message parameter
static HINSTANCE
static HWND hD
static HICON hI
switch(uMsg)
case WM_CREATE:
hinstance=((LPCREATESTRUCT)lParam)-&hI
SendMessage(hwnd, WM_SETICON, (WPARAM)TRUE, (LPARAM)LoadIcon(GetModuleHandle(NULL), (LPCTSTR)ICONID));//添加窗口小图标
case WM_COMMAND:
switch(LOWORD(wParam))//菜单事件处理
case ID_HELP_HELP:
DialogBox(hinstance,MAKEI***ESOURCE(DIALOGID),hwnd,DialogProc);//弹出一个模态对话框
MessageBeep(0);//发出系统声音
case WM_DESTROY:
PostQuitMessage(0);
return DefWindowProc(hwnd,uMsg,wParam,lParam);
BOOL CALLBACK DialogProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
switch(uMsg)
case WM_INITDIALOG://初始化对话框
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
case IDOK:
EndDialog(hDlg,0);
return TRUE;
return FALSE;
图标的创建:
效果图
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&查看: 803|回复: 4
怎样在对话框中添加ICON-VIEW图标并设置大小?
主题帖子精华
初级会员, 积分 77, 距离下一级还需 123 积分
在线时间2 小时
看了官网例程是在最底层窗口通过
&ICONVIEW_CreateEx(100, 188, 350, 100, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_ICONVIEW0, 68, 80);
&来建立图标,这时最后的&68, 80参数既是每个图标大小。
可是如果在对话框中建立的话,资源列表中就是这样:
{ ICONVIEW_CreateIndirect, "Iconview",
GUI_ID_ICONVIEW0,
&100, 188, 350, 100, WM_CF_SHOW | WM_CF_HASTRANS, 0x0 },
请问怎样设置每个图标大小为68, 80?
初始化时没有相应的函数可以调用?
主题帖子精华
在线时间410 小时
帮顶。。。。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 77, 距离下一级还需 123 积分
在线时间2 小时
有谁用过emwin的&ICONVIEW啊?
主题帖子精华
新手上路, 积分 22, 距离下一级还需 28 积分
在线时间0 小时
刚试了一下
:{ ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 50, 150, 300, 200, 0, 0x, 0 },
默认0x:拆开&0x0 .
0x0040 = 64
因此目测倒数第二个参数的至少 01,45位&是表示XY坐标。
主题帖子精华
初级会员, 积分 77, 距离下一级还需 123 积分
在线时间2 小时
回复【4楼】yukun1993:
---------------------------------
&哈哈,没看懂。。。
Powered byVC++自定义对话框程序界面图标以及 *.exe 桌面图标
& 我们在使用VC++开发自己的应用程序时,VC总是自动为我们生成一个默认的图标,读者是否想过为自己开发的程序自定义一个具有个性化的图标呢?若是的话,想必以下这篇文章会对读者有所益处。下面本人就为大家介绍一下如何利用VC++为自己的应用程序自定义自己的个性化图标!
& & & &选择好自己想要使用的图片,然后将其转换成位图格式(*.bmp),一张16*16的位图,一张32*32的位图,可以使用画图工具来的拉伸和缩放功能(按比例进行计算),也可以借助其他更好用的图片处理软件。
& & & &在工程的 res 文件夹里新建一个文件夹&MyPicture&,然后将刚才转换好的两张位图放到这个文件夹里(注意:一定要把位图放在工程里指定的位置里面,否之以后若需要用到是会出现找不到位图资源的错误。)
& & & & 用VC打开工程,然后切换到资源视图
& & & &右击& *.rc&&添加资源&选择&Bitmap&&选择&导入&&然后导入刚才转换后的两张位图,此时会出现Bitmap文件夹,里面就有我们需要的两张刚才转换的位图资源(IDB_BITMAP1, IDB_BITMAP2)。
右击&Icon&&插入icon&此时出现&IDI-ICON1&&双击&IDI-ICON1&&在右边的窗口能看到系统已经创建好了两张&BMP&位图(一张是&16*16,4位,BMP&,一张是&32*32,4位,BMP&),此时我们可以直接编辑这两张位图成为我们需要的 ICON 图标,不过最好自己再新建两张 24 位的BMP位图(也可以用系统给我们生成的那两张图片)。
& & & & 右击下边的空白栏&新建图像类型&分别选择&16*16,24位&和&32*32,24位&。这样就新建了两张 BMP位图。
& & & & &双击&IDB_BITMAP1&&选自&矩形选择工具&&然后将整张&IDB_BITMAP1&的位图选择&然后复制(ctrl+c)
双击&IDI_ICON1&&选择&16*16,24位,BMP&&然后在右边的图片窗口&Ctrl+v&,
& & & &注意:最好先将自己的整张BMP图片的背景用&填充工具&或&喷***工具&涂白后再执行&Ctrl+v&,否则图标的背景无法和桌面的背景一样。
& & & &按照上面的步骤将&32*32,24位,BMP&的位图资源也绘制好。
& & & &(以上是图标的准备工作,下面才真正开始替换程序界面的图标和桌面上的*.exe 文件的图标)
& & & &第一种方法:(相对比较简单,也比较直接)
& & & &删除&资源视图&的&IDR_MAINFRAME&&然后将&IDI_ICON1&的&ID&更改为&IDR_MAINFRAME&
重新编译运行,此时程序界面显示的大图标和小图标,以及在桌面上的 *.exe 文件的图标。
& & & &第二种方法:(更改程序的代码,不更改原来工程的资源,即不需要删除&资源视图&里原来的图标资源)
& & & &MFC程序中的对话框程序默认加载程序界面图标以及*.exe 桌面图标的方式其实很简单,在没有其他程序图标的情况下,在框架类例如&CSonyPeaceDlg&的头文件 &SonyPeaceDlg.h&有这样一个成员变量
protected:
& & HICON m_hI
& & & &这个成员变量是用来加载 程序界面图标以及 *.exe 桌面图标 的。
然后在 &SonyPeaceDlg.cpp&的OnInitDialog() 函数里面有这样两句加载图标的语句
& & &SetIcon(m_hIcon, TRUE); & & & &//设置大图标
& & &SetIcon(m_hIcon, FALSE); & & & & & //设置小图标
其中第一条语句是用来设置桌面的 &*.exe 桌面图标 ,第二条语句是用来设置程序界面左上角以及任务栏的程序图标。因此,若是想更改程序的界面图标以及桌面 *.exe 的图标的话,可以在OnInitDialog() 函数里面更改。方法:
在&SonyPeaceDlg.h&文件里面定义一个成员变量,如
protected:
& & HICON m_myhI
然后将&SonyPeaceDlg.cpp&的OnInitDialog() 函数 里面原来两条设置程序图标的语句注释掉,并改为如下语句:
& & //SetIcon(m_hIcon, TRUE); & & & & &//设置大图标
& & //SetIcon(m_hIcon, FALSE); & & & & //设置小图标
& & m_myhIcon = LoadIcon(theApp.m_hInstance, MAKEI***ESOURCE(IDI_ICON1));
& & SetIcon(m_ myhIcon, TRUE);
& & SetIcon(m_ myhIcon, FALSE);
& & & 此时重新编译程序并运行,就能看到程序运行界面的图标已经被更改为我们自己想要的图标了,但是此时只是改变了程序运行时的界面图标,至于桌面上的那个*.exe 程序的图标是否已经更改了呢?我们可以到项目工程里相应的目录看一下,我们会发现此时的 *.exe 程序的图标还没有改变。为什么会这样呢?
& & & &我们可以先在&查找和替换&搜索栏里查找&IDR_MAINFRAME&选项,直到找到&SonyPeace.rc&文件下面的&IDR_MAINFRAME&,此时我们可以看到如下介绍:
& & & &我们可以在上面看到有三个图标,一个是系统默认的图标&IDR_MAINFRAME&,另外两个是我自己加载到工程里的图标&IDI_ICON1&和&IDI_ICON2&,其中我们刚才加载的是&IDI_ICON1& 。再看看上面有一段绿色的注释,大概意思是:&ID号最小的那个图标将会确保成为应用程序的图标。&
我再通过&查找和替换&栏切换到Resource.***件下面,可以看到其中有这样的内容:
& & & & 我们可以找到 刚才所说的三个图标资源的ID 号:&IDR_MAINFRAME&的ID为154, &IDI_ICON1&和&IDI_ICON2&的ID号分别为158和155,这两个图标的ID都比系统默认提供的图标的ID大。我们可以试着把它们的ID彼此对调一下,如,把最小的ID(154)赋给&IDI_ICON1&,如下图:
& & & & 然后再重新编译程序,然后再到工程目录的*.exe文件夹下面,此时,我们就可以惊奇的发现,我们终于实现了把 *.exe的桌面图标更改成我们自定义的图标了,同时,程序桌面的图标也是我们自己自定义的图标。
& & & &若还不能确定没问题,我们再试一下,把最小的ID(154)赋给&IDI_ICON2&,
再重新编译运行,此时程序桌面的图标变成了另一个我们自己自定义的图标。
& & & &至此,我们就已经实现了程序界面图标以及*.exe 桌面图标的更改。
& & & & 在此,我在介绍另外一种方法,也是用代码在加载自定义图标。
首先,通过类向导,我们给程序添加消息&WM_CREATE&及其映射函数&OnCreate()&然后在 &return 0;&语句之前加上以下代码:
& & m_myhIcon = AfxGetApp()-&LoadIcon(IDI_ICON1);
& & SetIcon(m_myhIcon, true);
& & SetIcon(m_myhIcon, false);
& & & & 当然,也需要在先&SonyPeaceDlg.h&文件定义一个成员变量:
protected:
& & HICON m_myhI
& & & &同时,也需要象第二种方法一样将自定义图标的ID号更改为最小,然后重新编译运行程序,也能够达到我们想要的效果。
希望此篇文章对各位读者有益!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'