| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1834 人关注过本帖
标题:c语言 对话框窗体 初始化WM_INITDIALOG 不能出图??怎么处理???
只看楼主 加入收藏
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
c语言 对话框窗体 初始化WM_INITDIALOG 不能出图??怎么处理???
c语言 对话框窗体 初始化WM_INITDIALOG 不能出图??怎么处理???
高手帮忙看看!!!

rc文件
程序代码:

#define MANIFEST 24
#define DLG_MAIN 100
#define DLG_MAIN1 101
#define IDC_IMG1 102
#define IDC_IMG2 103
#define IDC_BTN1 104
#define IDB_BITMAP1 200
#define IDB_BITMAP2 201


#include <windows.h>
#include <commctrl.h>
#include "resource.h"

LANGUAGE 0,0

DLG_MAIN DIALOGEX 0,0,420,225
CAPTION "Dialog"
FONT 8,"Ms Shell Dlg",0,0,0
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_CENTER|DS_MODALFRAME|DS_SHELLFONT|DS_3DLOOK
BEGIN
  CONTROL "",IDC_IMG1,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_SUNKEN|SS_CENTERIMAGE|SS_BITMAP,10,20,285,175
  CONTROL "IDC_BTN",IDC_BTN1,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,325,40,65,30
END

1 MANIFEST "./manifest.xml"

IDB_BITMAP1 BITMAP DISCARDABLE "./111.bmp"
IDB_BITMAP2 BITMAP DISCARDABLE "./222.bmp"

DLG_MAIN1 DIALOGEX 10,10,435,230
CAPTION "IDD_DLG"
FONT 8,"MS Sans Serif",0,0,0
STYLE WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|DS_CENTER
BEGIN
  CONTROL "",IDC_IMG2,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_SUNKEN|SS_CENTERIMAGE|SS_BITMAP,10,10,355,205
END






主程序
程序代码:
#include <windows.h>
#include <commctrl.h>
#include "resource.h"

HINSTANCE hInst;

BOOL CALLBACK DlgMain1(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
        HBITMAP himg=LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2));
        HBITMAP oldimage=(HBITMAP)SendMessage(GetDlgItem(hwndDlg, IDC_IMG2),STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)himg);
        if(oldimage != NULL)
        {
            DeleteObject(oldimage);
        }
        DeleteObject(himg);
    }
    return TRUE;

    case WM_CLOSE:
    {
        EndDialog(hwndDlg, 0);
    }
    return TRUE;

    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
        }
    }
    return TRUE;
    }
    return FALSE;
}

BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
        HBITMAP himg=LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
        HBITMAP oldimage=(HBITMAP)SendMessage(GetDlgItem(hwndDlg, IDC_IMG1),STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)himg);
        if(oldimage != NULL)
        {
            DeleteObject(oldimage);
        }
        DeleteObject(himg);
    }
    return TRUE;

    case WM_CLOSE:
    {
        EndDialog(hwndDlg, 0);
    }
    return TRUE;

    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
        case IDC_BTN1:

            DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN1), NULL, (DLGPROC)DlgMain1);
            break;
        }
    }
    return TRUE;
    }
    return FALSE;
}


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst=hInstance;
    InitCommonControls();
    return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);
}


搜索更多相关主题的帖子: switch include define return case 
2020-10-10 16:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
你还是把工程打包发上来吧。
根据你这些信息能不能重建工程我不知道,但我想没人会为了一个小问题,花费大量时间去建测试环境。
2020-10-10 16:39
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
c语言 对话框窗体 如何在窗体显示时,static控件能显示图片??

如果不写 WM_INITDIALOG,
直接在资源里写上图片ID,是可以出图的。。。
  
CONTROL IDB_BITMAP1 ,IDC_IMG1,"Static",WS_CHILDWINDOW|WS_VISIBLE|SS_SUNKEN|SS_CENTERIMAGE|SS_BITMAP,10,20,285,175


但我想要程序点击按钮,新建个对话框窗体时,程序设置某张图在static控件上?该怎么处理??

高手帮忙看看!!!
2020-10-10 16:46
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
CODE::BLOCKS

test3.7z (31.89 KB)


[此贴子已经被作者于2020-10-10 16:58编辑过]

2020-10-10 16:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:20 
回复 楼主 wzxiaodu
可能是刚创建的图片对象给删除了,试试去掉这句:
DeleteObject(himg);
2020-10-11 11:58
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
去掉 DeleteObject(himg); 测试显示正常
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-10-11 12:01
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
回复 6楼 吹水佬
https://blog.

我是引用了这个,
去掉是可以了

谢谢!


[此贴子已经被作者于2020-10-12 10:13编辑过]

2020-10-12 10:08
快速回复:c语言 对话框窗体 初始化WM_INITDIALOG 不能出图??怎么处理???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031278 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved