| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1854 人关注过本帖
标题:控制台程序如何加入对话框?
只看楼主 加入收藏
dingo0316
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-9-29
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
控制台程序如何加入对话框?
现在有一个编译通过的控制台程序,现在想把它改成对话框的或者是想用对话框来控制程序的执行,比如程序要输出显示信息时就以对话框形式弹出,而主程序就停止,当点击对话框后主程序继续运行,本人是初学者,还请各位大虾指教!
我贴出一部分源程序:
int
main(int argc, char *argv[])
{

  BOARD_INFO      tBoardInfo;
  FIRMWAREINFO    tFirmwareInfo;
  DRIVERINFO        tDriverInfo;
  RCS_MESSAGE     tMsg;
  RCS_TELEGRAMHEADER_10   *ptRcsTelegramheader10;
  
  DDLM_DOWNLOAD_REQUEST         *ptDownloadRequest;
  DPM_PLC_PARAMETER             tDpmPlcParameter;
  DPM_SLAVE_SINGLE_DIAGNOSTICS  *ptDpmSlaveSingleDiagnostic;
  unsigned char                 *ptCfgData;

  DPM_BUS_DP              *ptBusDpm;
  DPM_SL_PRM_HEADER       *ptDpmSlPrmHeader;
  DPM_SL_PRM_PRM_DATA     *ptDpmSlPrmPrmData;
  unsigned short          usUserParameterDataLen;
  DPM_SL_PRM_CFG_DATA     *ptDpmSlCfgData;
  DPM_SL_PRM_ADD_TAB      *ptDpmSlPrmAddTab;  
  unsigned char           bInputDataLen;
  unsigned char           bInputCount;
  unsigned char           bOutputDataLen;
  unsigned char           bOutputCount;
  unsigned char           bDevManufactorDataLen;
  DPM_SL_PRM_USR_DATA     *ptDpmSlPrmUsrData;


  /* offset pointer in I/O area of dual-port memory */
  unsigned short  usInputOffset  = 0;
  unsigned short  usOutputOffset = 0;

  short           sRet;
  unsigned short  i,j;

  UNREFERENCED_PARAMETER( argv);
  UNREFERENCED_PARAMETER( argc);

  /*
   * initialize global variables 初始化全局变量
   */


 
  /* open driver first 首先打开驱动 */
  if ( ( sRet = DevOpenDriver(0)) != DRV_NO_ERROR )
  {
      printf("DevOpenDriver(0): %d\n", sRet);
  }
  else
  if ( (sRet = DevGetBoardInfo(0, sizeof(tBoardInfo), &tBoardInfo)) != DRV_NO_ERROR )
  {
      printf("DevGetBoardInfo(0, sizeof(BOARD_INFO), %p): %d\n", tBoardInfo, sRet);
      DevCloseDriver(0);
  }
  else
  {
   /*
      * scan all available boards for DNM-firmware
      */
    for ( i = 0; i < MAX_DEV_BOARDS; i++ )
    {
      if ( tBoardInfo.tBoard[i].usAvailable == 1 )
      {
       /*
        * found an available board, check if it has the DNM firmware 查找到可用的板卡,检查是否有DNM硬件
        */
        if ( (sRet = DevInitBoard(tBoardInfo.tBoard[i].usBoardNumber, NULL)) != DRV_NO_ERROR )
        {
          /*printf("DevInitBoard(%d, NULL): %d, board skipped\n", tBoardInfo.tBoard[i].usBoardNumber, sRet); */
        }
        else
        if ( (sRet = DevGetInfo( tBoardInfo.tBoard[i].usBoardNumber,
                                 GET_FIRMWARE_INFO,
                                 sizeof(tFirmwareInfo),
                                 &tFirmwareInfo)) != DRV_NO_ERROR )
        {
          DevExitBoard(tBoardInfo.tBoard[i].usBoardNumber);
        }
        else
        if ( strncmp((char*)&tFirmwareInfo.abFirmwareName, "PB-COMBI", 8) &&
             strncmp((char*)&tFirmwareInfo.abFirmwareName, "DPM     ", 8)
           )
        {
          DevExitBoard(tBoardInfo.tBoard[i].usBoardNumber);
        }
        else
        {
        break;

        } /* if ( sRet = DevInitBoard(i, NULL) != DRV_NO_ERROR ) else ... else */

      } /* if ( ((BOARD_INFO *)abInfo)->tBoard[i].usAvailable == 1 ) */

    } /* for ( i = 0; i < MAX_DEV_BOARDS; i++ ) */

    if ( i < MAX_DEV_BOARDS )
    {

     /*
      * found a board with DP capable firmware
      */

      usBoardNumber = tBoardInfo.tBoard[i].usBoardNumber;

     /*
      * print firmware information 输出硬件信息
      */
/*      HWND CreateDialogParam(      HINSTANCE hInstance,
                                   LPCTSTR lpTemplateName,
                                   HWND hWndParent,
                                   DLGPROC lpDialogFunc,
                                   LPARAM dwInitParam);*/
      printf("Board %d: ", usBoardNumber);
      for ( i = 0; i < 16; i++ ) putchar(tFirmwareInfo.abFirmwareName[i]);
      putchar(' ');
      for ( i = 0; i < 16; i++ ) putchar(tFirmwareInfo.abFirmwareVersion[i]);
      printf("\n");
比如红色代码部分想改成对话框输出
搜索更多相关主题的帖子: 对话框 控制台 
2010-09-29 15:12
dingo0316
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-9-29
收藏
得分:0 
回复 楼主 dingo0316
还请各位出手相助
2010-09-29 15:13
ycc892009
Rank: 2
等 级:论坛游民
帖 子:34
专家分:90
注 册:2009-12-23
收藏
得分:3 
#include <windows.h>
char cMsg[256];
char cName[20];
char cVersion[20];
 for ( i = 0; i < 16; i++ )
cName[i] = tFirmwareInfo.abFirmwareName[i];
cName[16]='\n';
cName[17]=0x00;
for ( i = 0; i < 16; i++ )
cVersion[i] = tFirmwareInfo.abFirmwareVersion[i];
cName[16]='\0';
sprintf(cMsg,"Boar%d%s%s\n",usBoardNumber, cName, cVersion);
MessagBox(NULL, cMsg,TEXT("show"), MB_OK);
你可以学一下对话框程序。蛮简单的。把你写的那些全部写成函数就可以移植到对话框上了。希望对你有用

到达理想的界面是我的目标,成功却不是快捷方式!
2010-09-29 17:26
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:3 
他要的是Dlg 不是MessageBox!
参照SDK 很好写,对话框 没有视图那么麻烦!
2010-09-29 18:10
ycc892009
Rank: 2
等 级:论坛游民
帖 子:34
专家分:90
注 册:2009-12-23
收藏
得分:0 
回复 4楼 hahayezhe
MB也是Dlg的一种。就是现实那几个数据要写一个正规的Dlg没有必要

到达理想的界面是我的目标,成功却不是快捷方式!
2010-09-29 18:37
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:3 
CreateDialogParam创建一个‘非模态’对话框,主线程并不会被阻塞。
要阻塞主线程使用DialogParam创建‘模态’对话框。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-09-30 11:00
快速回复:控制台程序如何加入对话框?
数据加载中...
 
   



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

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